【问题标题】:Using export from clara.io with three.js and physijs将来自 clara.io 的导出与 three.js 和 physijs 一起使用
【发布时间】: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 一起使用。

【问题讨论】:

    标签: three.js webgl physijs


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      实际上,我最初是从 clara.io 导出整个场景,然后将此场景添加到脚本中已有的场景中。在这种情况下,即使所有场景都是 Physijs 场景,孩子们也会显示但不显示物理。 如果我只添加导入场景的孩子,它会起作用,虽然现在我在定位方面遇到了问题,但这是另一个话题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-24
        • 1970-01-01
        • 2014-11-29
        • 2017-04-20
        • 2012-10-15
        • 2014-07-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多