OpenGL学习笔记[4]:Open Dynamics Engine基础

OFFICIAL Add:   http://www.ode.org
DOWNLOAD Add:  http://sourceforge.net/projects/opende/
API Reference:  http://opende.sourceforge.net/docs/index.html
Open Dynamics Engine基本配置及使用:

First Step,
下载ODE源代码 DOWNLOAD Add:http://sourceforge.net/projects/opende/
Second Step,
解压

得到

Third Step,
通过premake生成示例程序
首先定位到build文件目录下:

输入命令  输入 “premake4 --with-demos --with-tests vs2010” 来生成 Microsoft Visual Studio 2010 的工程示例文件。

该示例文件可以直接运行,ode.sln 查看ode示例程序、运行。

配置完成后,运行demo中的程序。

补充:
1编译之前需要了解的
   
在你开始编译ODE之前,需要搞清楚ODE包含两部分的功能,其中一部分(“ODE”)是用于物理和碰撞检测的代码库,另一部分(“DrawStuff”)是对Win32/X11和OpenGL的封装,用于示例程序的演示,简而言之,就是用于将示例程序模拟所得的数据、结果以图形、图像的方式显示在屏幕上。你完全可以在自己的项目中抛弃它,用自己开发的程序替换。DrawStuff需要你使用的平台对OpenGL的支持(如果是Mac OS X平台的话则需要对X11的支持),ODE则不需要。你也完全没有必要为了使用ODE而去编译DrawStuff和那些示例程序(译者建议:如果是初学者,则最好先从示例程序学起,以熟悉ODE的运作)。
    因为ODE是一款开源软件,ODE的开发团队为了让它能够支持不用的开发平台、环境以及工具,所以就提供了两种不用的编译方法。如果你倾向于是用./configure; make;make install(适用于*nix和Mac OS X平台)的编译安装方式,就请参考“使用Automaker编译”。如果你更倾向于使用IDE,就请参考更下面的“使用Premake编译”。

2.使用不同的编译方法

2.1 用Automake编译:

如果你是从Subversion下载的源码包,就需要通过运行autogen.sh脚本来引导自动化工具;如果是直接下载的稳定版就不需要,因为稳定版已经预先做过这一步了。

$ sh autogen.sh
注意:在这之前你需要预先安装最近版本的 autoconf(2.61)、automake(1.10)和libtool等工具软件。或许还会出现一些取决于所使用平台的"underquoted definition"警告,但都“无伤大雅”。

$ ./configure --help
对新手而言,最好运行上面的命令详细了解各种不同的选项。
下面列出的是一些比较重要的:

--disable-demos --without-x 让ODE可以在Mac OS X平台上编译

--enable-double-presision 启动双精度计算

--with-trimesh=opcode 使用OPCODE三角网格支持(默认)

--with-trimesh=gimpact 使用GIMPACT三角网格支持

--with-trimesh=none 不使用网格支持

--enable-new-trimesh 启用可选的OPCODE三角网格支持(必须和--with-trimesh=opcode一起使用)

一旦./configure成功运行,就可以进入编译阶段

$ make
 
$ sudo make install (因为会有库文件和头文件添加到系统库中,所以至少这一步必须得使用root权限执行)

2.2 使用Premake编译

premake是一款编译配置工具,它可以为Visual Studio、Code::Blocks、CodeList以及GNU Make(后续版本中将会添加对XCode的支持)等开发环境生成自定义的工程文件。在ODE的源码包中只提供了一个Windows版的Premake工具: build/premake4.exe,其它平台的用户可以再这里下载相应的源码包或者二进制包。
为了生成相应的工程文件,你需呀在ode/build目录下运行Premake工具,并且要给定你的工具集(Premake是一个命令行程序,必须在控制台或者终端中运行)。例如,下面的命令将会生成可以直接在Visual Studio 2008打开的工程文档:

$ cd ode/build

$ premake4 vs2008

所生成的工程文档(如.sln,.vcproj)被放在相应名称的目录下面,在这个例子中生成的工程文档就在 ode/build/vs2008目录下。

可以通过 $premake4 --help 命令查看其所支持的工具集和选项。
下面是一些比较重要的配置选项:

--with-demo 使生成的工程包含示例程序和DrawStuff库

--with-tests 使生成的工程包含自动化测试组件(如果你需要改动ODE,则建议添加此选项)

--no-trimesh 去掉ODE对三角网格几何体碰撞的支持,以减少库文件的大小

注意:选项的定义必须在工具集前,例如:

$ premake4 --with-demos --with-tests vs2008
生成的工程文档提供几种不同可能性的编译配置,像使用单精度或是双精度计算、使用静态库或是动态库等。如果你使用Premake工具来生成GNU Makefiles文件,请查看Makefiles文件中开头关于编译时可选用的配置指令的注释说明,IDE用户则可以如同正常情况下设置编译配置。

Premake工具最近新添加了对“交叉编译平台“的试验性支持,可以编译出面向Xbox 360,Playstation 3 以及 Mac OS X的通用二进制文件。你可以在Premake的帮助文件中查看其所支持的各种平台。
与其生成一大堆用户并不一定会用到的支持各种平台组合的默认工程文件,还不如使用 --platform 参数直接生成对应于特定平台和特定环境的工程文件,例如:

$premake4 --platform=ps3 vs2008

3.如何使用ODE

最好的理解该怎样使用ODE的方法是直接去查看ODE所提供的各种test/example程序,这些程序包含在 ode/ode/demo目录下。

按照如下步骤,创建新的ODE应用程序:

添加 ode/include 到你的include文件路径中
#include <ode/ode.h>
在 ode/lib目录中查找适合的库查询路径和库名称,这些路径和文件的名称取决于你所使用的编译配置。例如:ode/lib/DebugSingleDLL 和 ode_singled.lib
添加一个适当的预编译符号dSINGLE(单精度)或者dDOUBLE(双精度),预编译符号的选择必须和你的ODE配置一致。如果二者没有一个被定义,便会默认采用单精度计算(根据译者经验,如果dSINGLE和dDOUBLE都没有被定义,确定无疑是会出错的),如果定义的精度模式与ODE的配置不一致,将会损坏所有的浮点型ODE输入\输出数据,可能引起各种无法想象的错误。

注意:当你使用ODE的dWorldStep函数时,对重物的仿真将会用栈(stack)去存储大量的临时数据,对于大一点的系统,有可能会用到好几MB大的栈。所以,如果你遇到未经说明的“内存不足”或“数据损坏”错误——尤其是在Windows平台上,那么你需要增加栈的容量或者使用dWorldQuickStep函数代替dWorldStep来避免这种错误的出现。
参考资料:
http://blog.csdn.net/guojiangtao51/article/details/16825563
http://www.cnblogs.com/muxi/archive/2012/03/12/2392528.html

posted on 2014-03-09 17:01  sheldonzhang  阅读(1221)  评论(0编辑  收藏  举报