three.js学习笔记 Physijs物理引擎

来源:互联网 发布:红三兵炒股软件评价 编辑:程序博客网 时间:2024/06/11 09:46

Three.js可以通过使用Physijs库向场景中加入物理效果。这个库是基于著名的物理引擎ammo.js。


Physiji

1.导入库文件

Physijs.scripts.worker = 'js/Physijs/physijs_worker.js';Physijs.scripts.ammo = 'js/Physijs/ammo.js';

两个属性分别指向要执行的任务线程和ammo.js库。

2.创建带有物理效果的场景

var scene = new Physijs.Scene();scene.setGravity(new THREE.Vector3(0,-10,0));

使用setGravity()函数设置重力大小为y轴负方向,大小为10。

3.将原来场景的对象用Physiji库包装起来

原场景:

var geometry = new THREE.CubeGeometry(100, 100, 100);var material = new THREE.MeshBasicMaterial({});var mesh = new THREE.Mesh(geometry,material);

物理场景:

var geometry = new THREE.CubeGeometry(100, 100, 100);var material = new Physijs.createMaterial(new THREE.MeshPhongMaterial({restitution:0.5,friction:0.5}))var mesh = new Physijs.BoxMesh(geometry,material,1);

  物理场景材质增添了restitution(弹性形变)和friction(摩擦系数)两个参数。

  物理场景创建的对象增添了第三个参数   1:可以正常运动   0:困定(类似于墙体)   默认值:1

  物理场景还对基本的网格对象进行了覆盖详见Physijs API
4.渲染物理场景

function render(){requestAnimationFrame(render);renderer.render(scene, camera);scene.simulate();}


fork me on github blog: https://chenjy1225.github.io/









1 0