我需要知道如何生成一个复杂的形状来集成到我的Three.js场景中,以及Cannon.js物理的好处.
我从这个例子开始:http://schteppe.github.io/cannon.js/demos/bunny.html
看一下代码,我注意到兔子的面和顶点都是用数组来描述的.看起来非常强大但如果我想动态生成这些数组怎么办呢?
例如,仅使用Three.js,可以在json格式上导出Blender模型并以编程方式将其加载到场景中.我需要为Cannon.js做同样的事情,但它似乎与使用Blender模型的Three.js的工作方式不同.
提前致谢
解决方法
兔子是由凸面形状制成的,这些形状是使用名为
HACD的凸面分解软件预先计算出来的.凸面分解就是当你采用凹面网格并将其变成凸形子形状时.
一种解决方案是自己做同样的事情:使用工具从更复杂的网格中制作凸形子形状.
另一种解决方案是使用简单的内置基元(如球体和框)来构建物理形状.由多个子形状组成的形状称为复合形状(参见Cannon.js compound demo).许多游戏开发人员使用这种方法,因为它更简单的工作流程并提供更好的物理性能.
(图片来自Unity manual)