ODE手册(0)概述

简介

  ODE(Open Dynamic Engine)开源动力学引擎-是一款用于模拟“铰接式刚体”(个人理解:以关节链接的刚体)动力学的工业级质量程序库,内建有碰撞检测模块,可以被任何人免费使用。已经有很多基于ODE的程序可以证明,它可以完美地用于模拟地面车辆、有腿生物和VR(Virtual Reality:虚拟现实)环境中的移动对象。跟很多其它开源程序一样,它有着它们共同的优点:快速、灵活(可移植性强,在Unix/Linux、Windows、MacOS,我已在Linux和Windows上搭建好开发环境)、稳定。需要特别知道的一点是:ODE起先是由(拉塞尔·史密斯)Russell Smith在其他几位开发者的帮助下完成的。吃水不忘挖井人,对于这些大师级的程序员,我们有的只剩下敬仰和膜拜了!谢谢他们!

特点

  ODE特别适合于对铰接式刚体结构的模拟我们通常把由各种各样的关节链接着不同形状的刚体所组成的结构称作铰接式刚体结构。像地面车辆(车轮和底盘相连)、有腿生物(腿和躯体相连)和堆叠在一起的物体等等都属于铰接式刚体结构。

  ODE被设计用于交互式环境或者实时环境的模拟。它特别适合用于在变幻莫测的虚拟现实环境中用于模拟移动的物体,就是因为它拥有快速、强健、稳定的特点。而且用户可以完全自主地改变系统的结构即使是在模拟的过程中。

  ODE使用一个高度稳定的积分器,所以不致使模拟过程中出现的错误失去控制。这种说法的物理意义就是你所模拟的系统不会无缘无故地出现爆增(非常抱歉,没有遇到过这种状况。需要注意的是手册里特别说明,如果你不够仔细的话在其它的模拟器中会经常出现)的现象。相对于模拟系统的物理精准性而言,ODE更加注重的是模拟系统的速度和稳定性。

  ODE采用“硬”连接的方式。这就意味着无论两个物体在何时相撞,都会在它们之间存在一个“非渗透(non-penetration )”约束。而其它的模拟器则使用的是另一种方法-用一个虚拟的弹簧表示两个物体之间的连接关系,但是这样很难模拟出正确的碰撞效果,而且极易出错。

  ODE包含一个内建的碰撞检测系统。当然,你完全可以用自己定制的检测系统代替它。ODE当前支持的碰撞基元包含球体、四方体、圆柱、胶囊、平面、射线、三角网格(即曲面),其它的碰撞物体将会在后续版本中推出。ODE内建的碰撞系统可以通过“空间”的概念快速识别可能相交的物体(这部分参见后续翻译部分,见谅!)。

  总结如下:

    支持质量不均匀分布的刚体

    支持的关节类型:球窝关节(ball-and-socket:如人体髋关节)、铰链(链接门框和门   扇)、滑动关节(棱柱状),hinge-2、角发动机、线性发动机、通用发动机

    支持的碰撞单元:球体、四方体、圆柱、胶囊体、平面、射线、曲面和凸面体

    支持的碰撞空间:四叉树、哈希空间、简单空间

    模拟方法:The equations of motion are derived from a Lagrange multiplier   velocity based model due to Trinkle/Stewart and Anitescu/Potra

(这个翻译对我来说有点难度)

    使用快速的一阶积分器,但对于定量工程而言不够精确。高阶积分器将会在后续版本中推出。

    可自选的时间步进:可以选择标准的”大矩阵“方法,或者选择更新的迭代式快速步进法

    接触和摩擦模型:基于由Baraff描述的Dantzig LCP(Linear Complementarity Probblem:线性互补问题)求解方法,尽管ODE实现了一个更快的Coloumb摩擦模型的近似方法

    提供本地C接口(尽管大部分ODE代码是用C++实现的)

    提供构建于C接口之上的C++接口

    提供很多单元测试程序,还有更多的仍在不断开发中

    提供针对不同平台的优化方法

ODE许可证:ODE是一款开源程序,最初是由Russell L. Smith开发的,后来不知为何其便退出了ODE的开发团队(非常遗憾)。ODE遵循两种开源协议GNU和BSD,任何人都可以在任意这两种协议的许可授权之下对源代码进行相应的更改,具体协议包含在源码包中。

The ODE Community:如果在学习ODE的过程中,有任何的问题都可以求助于ODE Community 通过 ODE Mailing List,或者查看 ODE FAQ 和 ODE 官方在线文档 ;)


特此声明:本人为ODE初学者,为计算机专业本科学生,能力有限,翻译不周之处还希望各位朋友批评指正。

posted @ 2012-03-11 17:59  暮夕  阅读(945)  评论(0编辑  收藏  举报