Box2d自定义形状或身体关节

时间:2013-05-03 07:23:19

标签: performance actionscript-3 box2d

假设我想创建一个形状为“matryoshka”或平庸雪人的简单物理对象。在我看来,我有两个选择:1。要创建2个圆形(或可能是自定义)主体并使用焊接接头连接它们,或者2.要创建一个具有两个圆形(或可能是自定义)形状的主体。

所以问题是:对于CPU来说更昂贵的是:与关节连接的主体或复杂形状的主体。如果我有一个对象可能我感觉不到性能差异,但如果我有很多这种类型的对象怎么办?
我知道关节是昂贵的,但可能是定制的身体更加费力? 我正在使用Box2dFlash。

2 个答案:

答案 0 :(得分:1)

如果你不希望雪人身体的两个部分相互移动,那么一个身体就可以了。理想情况下,无论如何都要手动定义碰撞形状,因此使用焊接绝对没有任何好处。

可以这样想:如果你使用(a)焊接,碰撞形状就会比你简单地对单个物体做出近似的碰撞几何形状一样复杂;无论您的选择如何,它仍然需要多个碰撞形状或单个复杂的碰撞形状。焊接只会增加额外的步骤。

如果您需要雪人的身体无论如何都是动态的(分开或弯曲),那么焊接或常规接头是可行的方法。

答案 1 :(得分:1)

由于问题是关于CPU的使用,因此关节使用的CPU比单独使用的CPU多,没有关节。在许多情况下,圆形形状可以比多边形更有效,但不是全部。 对于CPU优化,尽可能少使用主体和简单多边形。对于多边形中定义的每个法线,如果对象与另一个对象重叠,则可能需要执行计算。对于圆圈,最多需要一次计算。

顺便说一句,除非您已经遇到性能问题,否则您不应该担心您的形状是CPU使用的想法。相反,您应该询问模拟创建是否是您想要发生的模拟。 Box2D包含许多特殊情况优化,以使其顺利运行。您还可以通过设置速度和位置迭代变量来降低每个刻度的精度。除非您的几何图形非常复杂,否则这对效率的影响远大于几何图形。