刚体Rigid bodies
l 属性properties
一个刚体从模拟的角度说具有各种属性,
有些属性随时间而变化:// 随时间而变化的属性
●物体参照点的坐标顶点(x,y,z),该点必须是此物体的重心。//Position vector (x,y,z)
●参照点的线性速度,一个矢量(vx,vy,vz) // Linear velocity (vx,vy,vz).
●物体的方向,代表物体的quaternion(qs,qx,qy,qz)或者一个3X3的旋转矩阵
// a quaternion (qs,qx,qy,qz) or a 3x3 rotation matrix.
●用来描述随时间变化的方向的变化量的角速度矢量(wx,wy,wz)
// Angular velocity vector (wx,wy,wz)
其他物体属性常常是固定的:// 固定的属性
●物体的质量 // Mass
●参照点物体的质心的位置,在现在的方案中质心必须与参照点物体的位置一致,即与物体的position坐标一致. // the center of mass
●Inertia matrix,描述物体的质量是如何分存于重心的
注意:物体的形状Shape不是动态属性(insofar除外),只有在碰撞检验的时候才关心物体的形状这一细节
l 坐标系统
每个物体都内含一个(x,y,z)坐标系统,物体(Body)随它而移动和旋转。
这个坐标系统以物体的重心为原点,在ode中,部分值是相对于物体坐标系统的,其它的相对于全局坐标系统。
3。2。1岛和物体失效
物体(Bodies)”通过“关节(joints)”而联系在一起,一个物体“岛(island)”是一组不能分开的物体-换种说法就是每个物体在模拟时岛内的物体是连接在一起的
在“世界”的模拟步中每个“岛”是作为独立物体对待的,认识到这点非常重要,如果在模拟时有N个相似的“岛”,那么它的时间复杂度为O(N)。
每个物体可以被设置为“有效”enabled和“无效”disabled,无效的物体被有效地“关掉”,在每个模拟步中无须更新状态。当发现物体不运动或与模拟无关时,将物体设置为无效是一个非常有效的提高计算速度的方法。
如果在一个岛内有若干个物体被设为有效时,则岛内所有物体在下一个模拟步中将变为有效。要使一个岛无效必须先让岛内的物体均无效才行。如果一个无效的岛接触到另一个有效的物体,则整个岛将有效,就象一个关节将一个有效物体连接到岛上一样。
3。3综合Integration
按时间模拟刚体系统的过程被称为整合,每个整合步按当前时间和步进时间a given step size进行,从而调节每一个新时间的物体状态。
3。4力的聚集 Force accumulators
在每个整合步之间用户可以调用函数来给刚体施加力forces,这些力将合起来成为“力聚集”作用于刚体对象之上。当下一个整合步发生时,所作用与物体上的力合在一起推动物体。每一个整合步后力聚集将变为零。These forces are added to "force accumulators" in the rigid body object.When the next integrator step happens, the sum of all the applied forces will be used to push the body around. The forces accumulators are set to zero after each integrator step.
3。5联结和约束Joints and constraints
常见的有ball and socket,hinge,slider约束.
Joints是用来连接body的,constraints用来描述这种关系
Each time the integrator takes a step all the joints are allowed to apply constraint forces to the bodies they affect. These forces are calculated such that the bodies move in such a way to preserve all the joint relationships. 任何时候整合系统将根据力聚集计算所有关节的步进,它同时保持所有的节点关联。///翻译得真烂
3。6联结组Joint groups
3。7联结错误和错误消减参数(ERP)Joint error and the error reduction parameter (ERP)
当一个联结关联两个物体时,物体需要处在合理的位置和方向上。然而有可能物体所处位置是联结不能匹配。这种联结错误在两中情况下发生:
1、如用户给一个物体设置了错误的位置/方向,而另一个物体的不匹配。
2、在模拟是,物体从他们的位置移位了。(见图)
以下是减小联结错误的机制:在每模拟步中对物体施加特殊的力以使之回到正确的位置。这个力有erro reduction parameter来控制,值在(0-1)间。
ERP指出在下一个模拟步中联结错误须调整的比例。如果ERP=0则不调整,物体最终将飘离模拟过程。如果ERP=1则模拟将在下一个模拟步中尽力修正所 有的错误。然而将ERP设置为1并不推荐,在很多情况下并不是每个联结错误都需要修正的,建议设置ERP为0.1-0.8,默认为0.2。
3.8柔约束和约束力混合(CFM)Soft constraint and constraint force mixing (CFM)
自然的大多数约束事“硬的”,这就意味着这样的约束描述条件将永远不不能违反,举个例子,球必须始终在soket种,hinge的两给部分必须始终对齐的。在实际的约束中可能被无意识的错误的介入到系统中而违反,但是ERP可以更正这些错误。
也有一些约束是软的,比如说the contact constraint that prevents colliding objects from penetrating is hard by default, so it acts as though the colliding surfaces are made of steel. But it can be made into a soft constraint to simulate softer materials, thereby allowing some natural penetration of the two objects when they are forced together.
There are two parameters that control the distinction between hard and soft constraints. The first is the error reduction parameter (ERP) that has already been introduced. The second is the constraint force mixing (CFM) value, that is described below.
3.8.1 . Constraint Force Mixing (CFM)数学理论现在不管
3.8.2 . How To Use ERP and CFM
如果CFM设置成0,约束将很牢固,如果CFM设置成0,约束将很牢固,如果CFM设置为一个正值,可能将违反约束的“推动它pushing on it”(例如