`
chinamming
  • 浏览: 140849 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Ogre相关的物理引擎

 
阅读更多

可用于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:

http://blog.csdn.net/xoyojank/article/details/4368968

可用于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:

http://blog.csdn.net/xoyojank/article/details/4368968

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics