最近需要实现精确到三角形的模型碰撞,比如子弹击中坦克,迸出火花,这时候就需要精确得到子弹击中的位置,这时候就需要使用collision tree来进行三角形级别的碰撞了。
现在的设计思路是这样的:
1.对每一种模型在编辑器里进行预处理,生成一颗碰撞树。对某些模型来说,如果面数太多,可以让美术做一个低模,也可以让程序做一个自动减面的工具,根据不同程度来进行调节; 对某些特殊模型来说,如果凸包能较好地包围的话,用凸包来替代也可以。
2.tree的Node的外部包围盒采用AABB,OBB计算太多,sphere精确性太差
3.主要侧重于比如子弹这种简单碰撞体和collision tree的检测,貌似collision tree之间的Intersect,目前还没想到有啥应用的需要。
4.对于人物带骨骼动画,可以在每根骨骼绑定一个obb,更新骨骼时一起更新obb,然后用Obb来做碰撞。
---------------------------------------------------
updated 2009-05-22
新增了几张截图