2015-06-05 94 views
2

我需要知道如何生成一个复杂的形状以整合到我的Three.js场景中,以及Cannon.js物理的好处。Cannon.js复杂的形状

我从这个例子开始:http://schteppe.github.io/cannon.js/demos/bunny.html

综观代码,我注意到,兔子用其面和顶点在阵列描述。看起来很强大,但如果我想动态生成这些阵列,我该怎么办?

例如,仅使用Three.js,可以导出JSON格式的Blender模型并以编程方式将其加载到场景中。我需要为Cannon.js做同样的事情,但它看起来不像Three.js与Blender模型一样。

在此先感谢

回答

4

的兔子是做出来的已使用凸分解软件称为HACD预先计算凸形状。凸分解是当你把一个凹形网格变成凸子体时。

一个解决方案是自己做同样的事情:使用一个工具从一个更复杂的网格中制作凸面子模型。 另一种解决方案是使用简单的内置基元(如球体和盒子)来构建物理形状。由几个子模组成的形状称为复合形状(参见Cannon.js compound demo)。许多游戏开发人员使用这种方法,因为它是一个更简单的工作流程并提供更好的物理性能

Compound collider in Unity

(图片来自Unity manual

+0

非常有趣的答案,谢谢。我会尝试复合形状的方法。 – Rotan