使用clara.io中的three.js和physijs导出

时间:2015-01-14 08:36:49

标签: three.js webgl physijs

我有一个从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一起使用。

2 个答案:

答案 0 :(得分:0)

最好分享问题的代码示例。同样对于任意网格数据,您可以使用Physijs.ConvexMesh。

答案 1 :(得分:0)

实际上,事实证明我首先是从clara.io导出整个场景,然后我将这个场景添加到我脚本中已有的场景中。在这种情况下,孩子们显示但没有物理,即使所有场景都是Physijs场景。 如果我只添加导入场景的子节点,它有点有效,虽然现在我有定位问题,但那是另一个话题。