使用Three.js做3d物体obj 碰撞,两个obj物体碰撞,应该怎么实现比较好?
在3D移动的场景下,碰撞检测是一个广泛讨论的问题。在不同场景下,应用的检测方法也不同。比如在最简单的情况下,检测两个圆的碰撞,只需要判断两个圆的圆心距离是否大于半径即可,不过针对于不规则图形,圆心半径检测的方法就不太精准了。
在three.js中,可以使用raycaster来做碰撞检测,具体思路是由物体中心向各个顶点“发射射线”,看是否有相交的物体。在stackoverflow上对于这个问题,最高票的回答中给出了非常详细的解释和demo,如果感兴趣的话可以更深入了解一下。
使用raycaster来做检测是一种很好的方法,而在实际情况中,如果物体形状非常复杂,逐一对各个端点做射线检测可能引起一定的性能问题。另一种用一定的准确定来换取效率的做法是取物体的boundingbox,依靠boundingbox来做检测。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。