可用于OGRE的物理引擎有挺多的,很多开发者已经写好了适配器,将两OGRE与其它的物理引擎进行了连接。
比较著名的就是:
NxOgre:连接OGRE和physx。
http://www.ogre3d.org/tikiwiki/NxOgre
OgreNewt:
http://www.ogre3d.org/tikiwiki/OgreNewt
http://www.ogre3d.org/tikiwiki/OgreNewt+2
整合的是Newton这个开源的物理引擎。
OgreODE:
http://www.ogre3d.org/tikiwiki/OgreODE
整合的是ODE了。
OgreBullet:
http://www.ogre3d.org/tikiwiki/OgreBullet
据说bullet是排在havok,physx之后的第三大物理引擎,这样就是说是开源中的第一?不过好像这个整合的项目没有继续更新了。
取舍之后,决定还是看一下OgreNewt。
想要用到最新的就要去SVN上载,下载一个SVN,然后安装。
新建一个放OgreNewt的文件夹,右键check out, 加入如下地址:
https://svn.ogre3d.org/svnroot/ogreaddons/branches/ogrenewt/newton20
就可以下到最新的版本了,这边这个版本只能用于Newton2.33。
到Newton官网上下载Newton2.33(有可能要上googlecode上下):
http://newtondynamics.com/forum/downloads.php
折腾一天,终于能跑第一个demo。果然头几个吃螃蟹的人都有可能成为先烈。。。
用Ogre1.74和Newton2.33整合的OgreNewt,并且在VS2010下编译,真是有各种问题需要自己去解决。感觉外国人不太喜欢2010,觉得是个鸡肋,还劝大家不要花钱去买。
搜了一大堆的英文资料,先把链接发这里存一下。
解决
error C2664: 'void std::tr1::_Function_impl2<_Ret,_Arg0,_Arg1>::operator ()(_Arg0,_Arg1) const' : cannot convert parameter 2 from 'boost::arg<I>' to 'OgreNewt::Body *'
http://www.ogre3d.org/addonforums/viewtopic.php?f=4&t=14610
一个比较完整的编译Newton和OgreNewt指导教程:
http://www.ogre3d.org/addonforums/viewtopic.php?f=4&t=14859
大概就是:
1.要把 packages\projects\visualstudio_2008 文件夹里的build.sln打开,我这边就是用2010打开,把OGRE的路径配置好。现在2010整个的VC目录的配置换地方了,在视图-》属性管理器里配置,可以自由的选择几个工程配置成只一个目录,方便了不少。
2.转换之后,直接生成就可以得到debug版本的了。然后去 packages\win32\下各个文件夹中把dmath_d.lib, dScene_d.lib, tinyxml_d.lib and dContainers_d.lib拷贝到packages\win32\debugDll文件夹中,注意不要拷贝并覆盖文件夹中已有的newton_d.lib and dJointLibrary_d.lib两个库。
3.配好环境,编译OgreNewt。
然后注意看一下少什么补什么,比如link出错了,就很有可能少了一些lib库,要把这些库拷到你工程能引用到的目录库里。
最后要如果生成成功,但窗口不出现,就要注意查下OGRE的日志了。这边主要遇到的问题就是现在版本的ogre在debug时读取的是后面_d的资源和plugin文件。
目前我只能跑第一个basic的demo,后面的编译都有问题。
第二个demo的问题:
error C2259: “OgreNewt::BasicRaycast”不能实例化抽象类:
http://ogre3d.org/addonforums/viewtopic.php?f=4&t=29244
就是父类的抽象方法子类没有覆盖实现。
现在运行时又出现了pure virtual function error。真心崩溃。。受不了,我还是换NxOgre试试好了,原以为我这电脑没有独显不能用,后来发现应该是有软件模拟的,只是比较慢而已。
http://devsupport.ageia.com/ics/support/default.asp
上官网上下载Physx的SDK,要登入,然后才能在下载页面中下载到。
查到一个不错的physx基本介绍的blog: