前一篇介绍了物理引擎Physijs,场景中的对象只需要用特定的Physijs对象封装一下便可以在场景中展现物理效果(重力、碰撞检测等)。但Physijs并没有为模型的加载提供一种特定的方法。所以由3Dmax或是Blender等建模软件创建的模型通过传统方式加载到场景中并没有物理效果。
为了使模型具有物理效果这里我使用了一种方法(才疏学浅,仅供参考)。
这里使用的是r71的加载方式,最新的有所不同。
正常加载:
var loader = new THREE.OBJMTLLoader();
loader.load('obj/three.obj', 'obj/three.mtl', function(object) {
model =object;
scene.add(model);
}, onProgress, onError);
物理场景加载:
var loader = new THREE.OBJMTLLoader();
loader.load('obj/three.obj', 'obj/three.mtl', function(object) {
model = object;
for (var i = 0; i < model.children.length; i++) {
model.children[i].castShadow = true;
var ground_material = Physijs.createMaterial(
model.children[i].material,
1,
0
);
var mesh = new Physijs.ConcaveMesh(
model.children[i].geometry,
ground_material,
0
);
scene.add(mesh);
}
scene.add(m