将THREE.js场景转换为CANNON.js世界

时间:2016-03-06 21:19:09

标签: three.js blender scene cannon.js

我有一个基本的THREE.js场景,在Blender中创建,包括立方体和旋转的平面。有什么方法可以自动将此THREE.js场景转换为CANNON.js世界吗?

由于

2 个答案:

答案 0 :(得分:2)

查看Three.js Blender exporter,看起来它只导出网格数据,没有关于Cannon.js需要工作的数学形状(框,平面,球体等)的信息。您可以尝试使用其Trimesh类将网格直接导入到Cannon.js中,但遗憾的是only work for collisions against spheres and planes

你需要喂食什么Cannon.js是数学几何数据,告诉你你的网格中哪些三角形代表一个盒子(或平面)以及它的质心在哪里。

创建3D WebGL物理的常用(手动)工作流程是将3D模型导入支持WebGL的游戏引擎(如UnityGoo CreatePlayCanvas)。在游戏引擎中,您可以为模型添加对撞机形状(盒子,平面,球体等),这样物理引擎就可以高效工作。您可以从那里预览物理模拟并导出完整的WebGL体验。

答案 1 :(得分:1)

要发布另一个答案,因为这里有一些新选项可以考虑......

  1. 我写了一个简单的mesh2shape(...)助手,可以将(一次一个对象)从THREE.Mesh转换为CANNON.Shape对象。它不支持某些功能,例如heightmaps / terrain。
  2. 示例:

    var shape = mesh2shape(object3D, {type: mesh2shape.Type.BOX})

    1. glTF格式有一个(实验!)BLENDER_physics extension,用于包含模型的物理数据。您可以在Blender中添加物理数据,导出到glTF,然后修改THREE.GLTFLoader以将物理数据传递给您的应用程序,帮助您构建CANNON.js对象。