我有一个从clara.io导出的场景,我可以在three.js场景中导入它。我修改了MateiralLoader和ObjectLoader以添加纹理加载,但是我遇到了问题,因为我想用物理网格替换标准网格。我尝试用THREE.Mesh
更改ObjectLoader.js中的Physijs.BoxMesh
(大部分场景都包含在多维数据集中)。
网格实际上显示正确,控制台没有错误,但没有附加物理,没有碰撞。 我想也许是因为clara.io导出是几何而不仅仅是CubeGeometry,它可能是物理问题...我不知道,我没有找到任何相关的东西。你可以给我一个搜索方向吗?谢谢!
以下是我的代码示例:
从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
一起使用。
答案 0 :(得分:0)
最好分享问题的代码示例。同样对于任意网格数据,您可以使用Physijs.ConvexMesh。
答案 1 :(得分:0)
实际上,事实证明我首先是从clara.io导出整个场景,然后我将这个场景添加到我脚本中已有的场景中。在这种情况下,孩子们显示但没有物理,即使所有场景都是Physijs场景。 如果我只添加导入场景的子节点,它有点有效,虽然现在我有定位问题,但那是另一个话题。