Three.js可以通过使用Physijs库向场景中加入物理效果。这个库是基于著名的物理引擎ammo.js。
Physiji
1.导入库文件
- Physijs.scripts.worker = 'js/Physijs/physijs_worker.js';
- Physijs.scripts.ammo = 'js/Physijs/ammo.js';
2.创建带有物理效果的场景
- var scene = new Physijs.Scene();
- scene.setGravity(new THREE.Vector3(0,-10,0));
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);
物理场景创建的对象增添了第三个参数 1:可以正常运动 0:困定(类似于墙体) 默认值:1
物理场景还对基本的网格对象进行了覆盖详见Physijs API
4.渲染物理场景
- function render(){
- requestAnimationFrame(render);
- renderer.render(scene, camera);
- scene.simulate();
- }