给osg配置bullet物理引擎

配置bullet物理引擎,花了好长时间,因为没有详细的教程,现在做个笔记。

首先,对于下载下来的一大堆文件,包括好多demo,example,src,等等看的我们眼花缭乱,其实我们可以先不要管他,因为我们真正要用的只是生成的*.lib,*.dll还有就是include文件。那些demo,example只是用来测试是否编译成功和作为教程用的。当然这一大堆文件和cmake组织的工程有关,很多的大工程都是用cmake组织的,不熟悉的话可以看下cmake有关的资料。你会发现其实是有规律的。是的,其实不管是osg还是bullet,还是osgwork,,,,我们用的都是那些lib,dll,include.而不是那些一大堆的代码。也就是说osg,bullet,osgwork,osgbullet都可以按下面的大体步骤配置:

一般步骤:先用cmake编译生成vs的工程(cmakegui中配置,将生成的工程放在新建的build文件夹中),然后运行build文件夹中新生成的vs工程(准确的说应该是解决方案,因为只有一个解决方案,里面有很多工程)编译生成dll和lib(一般是debug和release各编译一次得到2个版本的库文件),得到我们要用的库。最后你可以将上面说到的有用的库include,lib,以及一些data转移到一个新的文件夹下,还可以为其设置path。就像下面会讲到的一样。当然你也可以不要转移,就这样直接用,有一个麻烦就是路径可能会很长每次配置环境时也比较麻烦。

一,先下载并编译osgwork。

整了一晚上终于把osgwork编译好了,其中真是遇到各种各样的问题。现在把容易出错的地方写下来。
1。cmake中:类似OPENTHREADS_INCLUDE_DIR,全部都是只要写的include目录就行,不要写的include/openthreads.注意只要是osg中的XXXX_INCLUDE_DIR的全部都是到osg/include就行了。不单是编译osgwork,编译osgbullet也是这样。不然的话可能编译通不过,即使cmake编译通过了,vs里面的程序也没法运行生成install。所以这边要特别注意
2。error C3767:'<': candidate function(s) not accessible(解决办法是网上找的)
可能原因有:
1):因为cmake产生vs工程的时候配置不对;从新用cmake产生一遍即可
2):osg库不是自己编译的,而是从网络上下载的已经编译好的osg;自己编译osg即可。
二。编译好osgwork后就可以下载bullet。
下载后的bullet文件夹中一般有一个build文件夹的,里面有编译好的工程,也就是说不需要我们再用cmake编译了。当然如果你想用cmake再编译一次的话没人会拦着你。然后找到vs2010这个文件夹,打开里面的工程,选择debug,运行成功后会生成debug版的库文件。之后选择release,再次运行,这次是生成release版的库文件。完成后你会发现,在之前为空的lib文件夹中多出了很多lib文件。这边说下一定要生成这两个版本的,因为后面生成osgbullet要用。
三。下载osgbullet并编译。同样需要用cmake先编译成vs的工程文件,然后再用vs编译生成库文件。在配置cmake时注意osgwork和bullet库文件的路径。之后运行vs,同样要分别运行debug和release。之后你会在lib文件夹中发现生成了debug和release版的lib文件。
四,最后,你可以新建一个文件夹比如说physicalEngine,在里面建3个文件夹,分别是lib,include,dll,这样,只需要将osgwork,osgbullet,bullet中的*.lib文件全部拷贝到lib中,把3个库中include文件夹中的文件全部拷贝到physicalEngine/include文件夹中,(bullet中没有include文件夹,但有一个src文件夹和glut文件夹,所以把src和glut里面的文件拷贝到include里面就行了)。最后找到osgwork和osgbullet中的bin文件夹,里面有与lib相对应的dll.将这些dll全部拷贝到dll文件夹。做好这些好,下次要用时你只要将physicalEngine下的include和lib两个文件包含进来,就可以把所有要用的库文件都包含进去了,然后添加依赖项,最后把这些dll拷贝到工程目录下。这样就可以运行了。非常方便。

你可能感兴趣的:(物理引擎,OSG,Bullet,osgbullet,cmake编译)