three.js學習筆記 Physijs物理引擎
阿新 • • 發佈:2019-02-04
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.建立帶有物理效果的場景
使用setGravity()函式設定重力大小為y軸負方向,大小為10。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);
物理場景:
物理場景材質增添了restitution(彈性形變)和friction(摩擦係數)兩個引數。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();
}
fork me on github blog:https://chenjy1225.github.io/