box2d似乎不支持凹形,但我没有找到任何关于它们为什么不受支持的解释以及为了达到想要的形状而必须创建多个凸形的事实。是否更容易支持凹形,这样你只需要创建一个单一的形状?
所以有人可以聪明一点,请尝试解释为什么box2d不支持凹形,如技术部分等?并且它不会占用更多内存来拥有多个形状而不是一个?
这真的可以让世界对我更有意义!
答案 0 :(得分:1)
Box2D由Erin Catto和"Box2D is not open contribution"编写/开发。因此,对于为什么Box2D不支持凹形的答案,我们必须向他看。
幸运的是,Box2D有一个带有问题的网络论坛(从2010年的“一般性讨论”部分开始):Why do shapes have to be convex?
我认为这很好地解释了它: http://en.wikipedia.org/wiki/Separating_axis_theorem
有处理凹形的技术。它们通常需要大量内存和设置。例如,我见过一些使用签名距离图的论文。但他们往往对细节非常清楚。
在讨论的后期,Erin adds我认为这是一个富有洞察力的宝石:
AFAIK没有用于凹面窄相位碰撞的高质量,高性能算法。目前,关于如何计算凸形的接触点和法线的文章很少,更不用说凹形了。
这引出了一个相关的StackOverflow问题(2013年起):Algorithms for collision detection between concave polygons。到目前为止,这个问题只有一个答案,它引用了2003年的一篇论文。这似乎证实了艾琳的立场和主张。