OSG经过一段时间的发展,相比以前的开发来说,在编译安装上的步骤已经简单许多,但依旧存在许多的坑;本文简单阐述了在64位win10系统上,使用VS2013编译工具结合Qt5.3库,编译安装了带dae、3ds等3D显示插件的3.4版本的OpenSceneGraph(OSG)。
前期准备工具:
1、安装好Cmake ,本文所使用的版本为3.8-rc1的exe安装版;
2、去OSG官网下载3个源代码文件:OpenSceneGraph-3.4 源码(SourceCode)、适用于OSG3.4版本的测试数据库(Data) 和 编译安装所需要的第三方支持库3rdParty(64位全版本);要注意的是,第三方支持库要与所使用的编译器相对应;
OpenSceneGraph-3.4:
https://github.com/openscenegraph/OpenSceneGraph/tree/OpenSceneGraph-3.4.0
OpenSceneGraph-3.4-Data:
3rdParty(x64_full):
https://download.osgvisual.org/3rdParty_VS2013.5_v120_x64_V10_full.7z
3、确保电脑上已经正确安装64位的VS2013和适用64位MSVC2013带Opengl的编译器的Qt5.3
CMake配置过程:
1、建立用于存放编译源码、编译工程和编译结果的目录结构,本文所使用的目录结构如下:
其中OSG_directroy 可以自行定义其上层位置;
3rdParty_x64_full用于存放第三方支持库解压出来的内容(注意:该目录下应直接含有bin、include等文件,不应再多设置一层目录);
build_340_MSVC2013用于存放通过Cmake生成的VS2013工程文件,以及后续ALL_BUILD编译后生成的各类文件;
OSG340_MSVC13用于存放编译安装后的3.4版本的OSG;
2、配置CMake,生成OpenSceneGraph解决方案:
选择源文件存放的位置 和 CMake生成的解决方案存放位置
点击Configure,选择与64位VS2013对应的生成器,点击Finish;
接下来出现了一大堆红色条目,以下讲解及展示重要的配置项:
ACTUAL_3RDPARTY_DIR:第三方库的根目录;
BUILD_OSG_EXAMPLE:编译osg的参考例子;
BUILD_OPENTHEREAD_WITH_QT:使用VS2013进行开发就不要勾选,容易引起ot20-openthread.dll的错误;详见参考资料[1].
CMADE_INSTALL_PREFIX:osg编译安装后的存放目录;
以下展示与Qt配置相关的条目:
如果使用Qt5.3以上的版本,有可能找不到Qt5WebKitWidget_DIR和Qt5WebKit_DIR的目录;
以下讲解和展示与COLLADA相关的配置项:
在配置了COLLADA_DOM_ROOT为正确的位置之后,就可以再点击一次Configure,CMake能够在一定程度上配置好有关条目;本文的正确配置如下:
以下为能够自动配置的有关项,倘若没有,可能需要自行手动配置:
需要注意的是NVTT有关的库是重要的与编译nvtt插件相关的库;
不能自动配置的库包括:与COLLADA动态库和静态库、COLLADA的BOOST库、COLLADA的domany路径,它们都能够在第三库的目录下找到:
COLLADA动态库和静态库配置成一样的就可以,也可以只配置静态库;
再点击一次Configure,如果同时配置COLLADA动态库和静态库,那么还会再出现一个选项,勾选与不勾选结果都是一样的:
最后再点击一次Configure,没有红色条目出现,就可以点击Generate了,本阶段结束。
解决方案的检查及编译:
在完成CMake的配置并Generate解决方案之后,就可以用VS2013打开解决OpenSceneGraph解决方案进行编译了。打开方法要么是直接在CMake中操作,要么是进入文件夹,不再赘述。
在使用批生产指令进行ALL_BUILD之前需要检查Plugin nvtt 工程的属性配置,需要确保工程的输入依赖项里有如下7个lib:
nvcore.lib nvmath.lib nvimage.lib nvthread.lib bc7.lib bc6h.lib squish.lib
如果是Debug版本就选对应Debug版本的lib;
在确保以上7个lib都添加到Plugin nvtt工程之后,应该就不会发生nvtt插件编译失败的问题了。
最后就可以开始ALL_BUILD 和 INSTALL 的Release版本和Debug版本的编译,静待成功。
环境变量配置:
在编译成功之后,应该就获得了带有dae等各种3D插件的OSG库。
注意:为了确保各个插件的运行环境,需要将3rdParty_x64_full/bin目录下的所有可执行二进制文件拷贝一份放到生成的osg文件夹下的bin目录内。即:OSG340_MSVC13/bin。
最后就可以将OSG340_MSVC13文件夹下的文件转移到希望放置的目录位置,并将测试数据包OpenSceneGraph-3.4-Data解压到同一目录位置,并添加好环境变量;
本文将OSG340_MSVC13文件夹下的文件转移到了OSG340_X64文件夹下,所以本文的环境变量配置如下:
除此之外,还需要在系统的Path环境变量下添加OSG_BIN_PATH变量,以确保控制台程序能够找到想要的bin路径。
至此OSG3.4编译安装完毕,可以进入程序测试阶段。
测试结果:
想要直接在控制台测试dae、3ds文件的打开可以自行去下载3D文件,也可以在下方的链接中下载文件,然后将3D模型文件放到Data目录下;
便宜下载:
测试模型:
https://download.****.net/download/kroc_kroc/10596662
编译好的带dae、3ds插件的OSG程序:
https://download.****.net/download/kroc_kroc/10596652
参考资料:
[1].http://forum.openscenegraph.org/viewtopic.php?t=15010&view=next