ode在大型mmo场景中的应用

本文深入探讨了ODE(Open Dynamics Engine)在大型多人在线游戏(MMO)场景中的应用,重点关注力的聚集、关节和约束、错误消减参数(ERP)以及约束力混合(CFM)。讲解了如何利用这些机制来处理刚体动力学,包括碰撞检测、错误处理和模拟优化。此外,还提到了自定义几何体在处理大规模地形数据时的优势,以提高性能和效率。
摘要由CSDN通过智能技术生成
1)ode 概念

刚体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中,部分值是相对于物体坐标系统的其它的相对于全局坐标系统。

 

321岛和物体失效

物体(Bodies)”通过关节(joints)”而联系在一起,一个物体(island)”是一组不能分开的物体-换种说法就是每个物体在模拟时岛内的物体是连接在一起的
   
世界的模拟步中每个是作为独立物体对待的,认识到这点非常重要,如果在模拟时有N个相似的”,那么它的时间复杂度为ON)。
   
每个物体可以被设置为有效”enabled无效”disabled,无效的物体被有效地关掉”,在每个模拟步中无须更新状态。当发现物体不运动或与模拟无关时,将物体设置为无效是一个非常有效的提高计算速度的方法。
   
如果在一个岛内有若干个物体被设为有效时,则岛内所有物体在下一个模拟步中将变为有效。要使一个岛无效必须先让岛内的物体均无效才行。如果一个无效的岛接触到另一个有效的物体,则整个岛将有效,就象一个关节将一个有效物体连接到岛上一样。

 

33综合Integration


按时间模拟刚体系统的过程被称为整合,每个整合步按当前时间和步进时间a given step size进行,从而调节每一个新时间的物体状态。

 

34力的聚集 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.

 

35联结和约束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. 任何时候整合系统将根据力聚集计算所有关节的步进,它同时保持所有的节点关联。///翻译得真烂

36联结组Joint groups

37联结错误和错误消减参数(ERPJoint error and the error reduction parameter (ERP)

当一个联结关联两个物体时,物体需要处在合理的位置和方向上。然而有可能物体所处位置是联结不能匹配。这种联结错误在两中情况下发生:
1
、如用户给一个物体设置了错误的位置/方向,而另一个物体的不匹配。
2
、在模拟是,物体从他们的位置移位了。(见图)
  
以下是减小联结错误的机制:在每模拟步中对物体施加特殊的力以使之回到正确的位置。这个力有erro reduction parameter来控制,值在(0-1)间。
    ERP
指出在下一个模拟步中联结错误须调整的比例。如果ERP=0则不调整,物体最终将飘离模拟过程。如果ERP=1则模拟将在下一个模拟步中尽力修正所 有的错误。然而将ERP设置为1并不推荐,在很多情况下并不是每个联结错误都需要修正的,建议设置ERP0.1-0.8,默认为0.2

 

3.8柔约束和约束力混合(CFMSoft 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”(例如

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值