今天,按照先前的计划是对ODE进行学习和研究,经过一天的学习,收获还是颇多的。
首先,一个ODE的工程必须包含ode.lib,当然ode.h也是必不可少的,附加包含目录也要设置为有关头文件所在的相对路径;
然后就是使用ODE的函数实现物理仿真的一般过程:
1. 创建一个世界,世界中包含空间等,通过dWorldCreate实现;
2. 在世界中创建一个空间,空间中包含质点和几何体,通过dSimpleSpaceCreate或dHashSpaceCreate等函数实现;
3. 创建链接组,通过dJointGroupCreate实现;
4. 设置世界的相关参数,重力、ERP、CFM等等;
5. 在世界中创建质点,设置质点的质量、位置、初速度等等;
6. 设置质点的受力;
7. 创建一个几何体,并将几何体与质点联系起来,通过dGeomSetBody实现
8. 编写相关的碰撞检测回调函数,被仿真循环函数调用;
在ODE中一般是一个几何体对应一个质点,也就是说只能创建简单几何模型,例如立方体、球体、柱体等等。而由于项目需要,我需要在程序中实现对复合体的仿真。为此,我专门请教了对于ODE程序开发有经验的达人,得到的回答是若想在ODE中实现复合体的仿真,一般是将几个简单体通过fix joint连接起来,但是一般不推荐使用fix joint;或者可以通过trimesh实现复合体。
到目前为止,我还处于研究学习ODE的SDK阶段,尚未独立写出基于ODE的物理仿真程序,所以等到我的第一个ODE程序完成后,我便会把原创代码贴上来。
今天到此为止。