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

Convert THREE.js scene to CANNON.js world

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

谢谢

正在查看 Three.js Blender exporter, it looks like it only exports mesh data, no information about mathematical shapes (boxes, planes, spheres etc) that Cannon.js needs to work. You could try to import your meshes directly into Cannon.js, using its Trimesh class, but this would sadly only work for collisions against spheres and planes

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

创建 3D WebGL 物理的常见(手动)工作流程是将 3D 模型导入支持 WebGL 的游戏引擎(如 Unity, Goo Create or PlayCanvas)。在游戏引擎中,您可以为模型添加碰撞器形状(盒子、平面、球体等),以便物理引擎可以高效工作。您可以从那里预览物理模拟并导出完整的 WebGL 体验。

转到 post 另一个答案,因为这里有一些新的选项需要考虑...

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

示例:

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

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