【发布时间】:2015-01-14 08:36:48
【问题描述】:
我有一个从 clara.io 导出的场景,我可以将其导入到 three.js 场景中。我修改了 MateiralLoader 和 ObjectLoader 以添加纹理加载,但我遇到了一个问题,因为我想用物理网格替换标准网格。我尝试将 ObjectLoader.js 中的 THREE.Mesh 更改为 Physijs.BoxMesh(大部分场景包含在立方体中)。
网格实际上正确显示,控制台中没有错误,但没有附加物理,没有碰撞。 我想可能是因为 clara.io 导出是几何而不只是 CubeGeometry,这可能是 physijs 的问题......我不知道,我没有找到任何相关的东西。你能不能给我一个搜索的方向?谢谢!
以下是我的代码示例:
从 clara.io 导出的脚本,在他们的网站上给出:
var loader = new THREE.ObjectLoader();
loader.load("zebra.json",function ( obj ) {
scene.add( obj );
});
所以我从three.js中修改了ObjectLoader:在第287行,在加载Mesh的情况下,我尝试替换这个:
object = new THREE.Mesh( geometry, material );
通过这个:
object = new Physijs.BoxMesh( geometry, material );
我也试过了:
object = new Physijs.ConvexMesh( geometry, material );
或者:
object = new Physijs.ConcaveMesh( geometry, material );
我从来没有让物理(尤其是碰撞)工作,尽管对象在场景中显示得很好。但是碰撞可以很好地用于例如直接从脚本创建的立方体,使用THREE.BoxGeometry,然后将其与Physijs.BoxMesh 一起使用。
【问题讨论】: