将 clara.io 的导出与 three.js 和 physijs 结合使用

Using export from clara.io with three.js and physijs

我有一个从 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 行,在加载网格的情况下,我尝试替换它:

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.

一起使用

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

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