ode,也就是open dynamics engine,为开源动力学求解引擎,其网址为:
ode主要包含两部分内容,一部分是动力学仿真(主要是刚体),另一部分是碰撞检测。
接下来,将对ode的碰撞检测进行解析。
这里资料来源也都来源于ode的手册和网上其它公开的资料。
要了解本文所述的内容,需要具有力学方面和几何方面的知识,并对仿真过程有个大致了解。
碰撞 是指物体(object)间或物体与静止环境(static environment)之间因为接触力而导致物体运动变化的瞬间过程。
碰撞由于是物体与物体、物体与环境接触产生的,因此碰撞的发生与当时物体的形状、位置,以及环境形状都有很大关系。
ode典型的仿真过程:
1. 生成一个动力学世界(dynamics world)
2. 在该world中创建物体(bodies)
3. 设置各body的状态(如质心位置、姿态等)
4. 在上面的world中创建约束(joints)
5. 将约束关联到物体上
6. 为各约束设置参数值
7. 生成碰撞世界(collision world),并为需要作碰撞检测的物体生成碰撞几何体
8. 生成用于容纳接触约束(contact joint)的约束组(joint group)
9. 循环过程
a. 在物体上施加力
b. 根据需要调整约束参数
c. 调用碰撞检测,得到碰撞点和碰撞的物体
d. 为每个碰撞点生成接触约束,并将其放入接触约束组中
e. 执行一个仿真步骤
f. 将接触约束组中的约束清空
10. 销毁dynamics world和collision world。