我的订单|我的收藏|我的商城|帮助中心|返回首页
虚拟现实新闻>VR>行业资讯>培训教程

OSG可视化图形开发环境的编译与安装

文章来源:第三维度 作者: 发布时间:2012年03月24日 点击数: 字号:

    来源:第三维度
    作者:FreeSouth[杨石兴]编著

    选自《OSG程序设计教程》第一章

    1 OSG安装包

    在早些年的时候,OSG的官方网站始终提供最新稳定版本的安装包,在最近一些版本当中虽也提供,但是国内用户始终无法从他们提供的链接中下载到。于是从很久前开始国内的爱好者遇到稳定版本时自己都会制作安装包。从随书光盘当中可以找到几乎所有重要版本的安装包。

    在OSG2.20及其以前,国内爱好者使用的包大都是由FLMN制作完成,同时它也是VRDEV的站长。OSG2.20的以后版本都是由我和朋友FlySky制作完成,我们平时都在维护osgChina,可以按照下面的方法下载到OSG的各版本安装包,以后的版本大都是基于Visual Stdio 2005的,更新的VS或是基于Borland C++或是别的一些编译器的都还没有提供,但是后面会介绍编译与链接的方法。可以进入主页:mail.qq.com。输入用户名:ieysx。密码:123456。点击进入文件中转站就可以进行下载与上传一些资料。界面如图1所示。

OSG可视化图形开发环境的编译与安装
图 1 下载OSG安装包的界面

    图1 下载OSG安装包的界面 OSG的安装包一般都会至少在环境变量中添加两个值。一个是path,它会指向你安装目录的bin文件夹,另外一个就是OSG_FILE_PATH它会指向你安装目录的data文件夹。有些人对path路径竟然没有一点儿的概念,对此感觉到很迷惑。在安装过后点击我的电脑[右键]->属性->高级->环境变量后,可以看到如图2所示环境变量:

OSG可视化图形开发环境的编译与安装
图2 安装OSG后的环境变量

    图2 安装OSG后的环境变量 在这里要解释一下环境变量的作用,环境变量是提供一个标识,该标识下对应一个或一些路径,一些应用程序会识别该标识来到其所指的路径下去找所需要的应用程序或者文件等等。最常见的比如,在开始菜单中点击运行,输入cmd或者regedit等等,它会打开命令提示符或者注册表编辑器,这时你在cmd中输入path,会列出一些目录,你肯定可以在这些目录下找到cmd和regedit的EXE可执行文件。

    具体是在windows的 system32下,这就是说系统会识别path标识,当应用程需要一些资料时会自动到该目录下去寻找。

    OSG_FILE_PATH也是一种标识,指向OSG的模型目录,只不过这个标识只有OSG的应用程序可以识别,别的程序一般用不到它而已。你也可以定义一些类似OSGHOME, SDLROOT等等环境变量,在一些路径当中通过使用$OSGHOME或者$SDLROOT等等来使用它。 因此安装包会为你设置好两个环境变量值,如果你的模型非常多,是分开存放的,你可以在OSG_FILE_PATH中添加多个路径并用;[分号]隔开。

     在安装完OSG的安装包后,你可以通过执行安装包下的”运行例子.bat[runexample.bat]”来查看一下安装是否正确,一般在运行程序的过程中点击S键查看帧速看字体是否正常,以及查看执行的CMD窗口看是否出现未找到插件的警告等等。这样OSG就已经被安装到WINDOWS平台上面了。

     如果是LINUX平台,一般需要自己编译,当然官方也会有与OSG相关的源,不过版本往往根不上,国内基于LINUX做OSG开发的并不多,再说一个笑话,虽然人们在无数次的诅咒Visual Stdio和它的MFC库,但是人们依然在使用它,一边疯狂的骂一边使劲的用。

    您可以到bbs.osgChina.org上查看最新安装包的情况。您也可以到www.OpenSceneGraph.org上查看最新的发布情况,但是最快的消息来自SVN,所以如果您想特别与时俱进就不得不时刻关注SVN的最近更新。

    2 编译OSG

    有很多人不会编译OSG,可能是由于不是太了解开源引擎的特点,基于LINUX的引擎往往都延续了开源精神,像OSG,QT等等这些库往往都需要自己编译后才可以使用。

    当然也会有安装包,而且这些安装包会从最大程序上满足人们的要求,但是事情往往是发生在小程度上,在这里试举一二:首先安装包的制作过程是制作安装包的人在自己的机器的编完成后,然后打包成包装在您的机器上,这样如果两台机器配置不同,当然这造成的影响很小,但是比如显示卡不相同,这时就无法判断在你的机器上是否也能很好的运行它的安装包。

    其次使用安装包并不能完成一些功能,比如你想使用QuickTime的最新插件,这样安装包可就帮不了你了,这就需要自己编译。三来,自己编译用起来感觉是不同的,我建议就算使用安装包也要自己会编译才行。 在这里我简单介绍一下最小编译过程。首先必须下载需要的所有资源。

     最重要的资源当然是OSG的源文件,最新的源文件往往可以从www.OpenSceneGraph.org上下载到,一般的发布消息都会被当作头条放在主页上,历史的版本也会保留在history的版面当中,可以通过查看下载[http://www.OpenSceneGraph.org/projects/osg/wiki/Downloads]版面来下载历史版本的源文件。在这里我并建议新手使用SVN,因为抽取文件是个漫长的过程,可能是由于网速的原因,所以有些文件可能并未被抽取到而发生一些莫明其妙的错误。

    其二是最小的第三方依赖,这些关乎OSG的正常运行过程,所以是必须下载的,里面包含有tiff, jpeg, libungif, libpng, freetype, 等等非常重要的库。可以从OSG官方网站的下载第三方库的专用版面里下载到[http://www.OpenSceneGraph.org/projects/osg/wiki/Downloads/Dependencies],这里需要提醒的是,里面的版本可能很老,在最新版本中用到的最新库肯定是需要最新的插件的,所以如果某个插件不合要求,就必须到该插件的官网或者某些地方找新版本了。

    下载后解压一下,最好把源文件与它都放在同一个目录当中,不能乱。

    其三虽然是可有可无的,但是为了最好的运行官方的示例,还是要带上的,就是官方的数据文件,在平时做试验的时候我们也会多多使用里面的数据的,比如glider.osg是个小飞机,非常讨人喜欢。

    下载数据文件可以到下面的链接:[http://www.OpenSceneGraph.org/projects/osg/wiki/Downloads/SampleDatasets] 紧接着就是你需要的库了,你可能需要QT界面呀QuickTime呀等等,根据自己的需要,值得一提的是有些库的版本非常的讲究,否则会出一大堆的错误,而且无从改起,我曾经把所有的库都编译过了,证明市面上还是可以找到大多数的东西的。

    最后就是编译的工具了,以Visual Stdio2005为例,首先下载并安装上。然后下载安装CMAKE,随书光盘中有CMAKE2.4,也可以到CMAKE的官方网站:http://www.cmake.org/HTML/index.html上下载最新版本。 下面是实践环节了,首先打开CMAKE,选择源文件的目录,就是下载的OSG源文件的解压后的目录,注意要选择里面有代码的,不要选择了顶层文件夹,如图3所示:

OSG可视化图形开发环境的编译与安装
图3 CMAKE的选择源文件路径框

    然后选择在哪里编译OSG,也就是启动文件的目录,这里会存放启动的文件。在OSG1.20及其以前版本中是不用CMAKE进行什么操作的,启动文件就在源文件当中,但是其后就不是这样了。 这两项都配置完成后点击configure后,选择一个编译环境,就可以配置CMAKE比较细的选项了。这里列表举一下里面各选项的意思,如表1。

     表1 CMAKE选项表

     CacheValues                      说明
     ACTUAL_3DPARTY_DIR               指向第三方依赖的目录,注意有个默认值,一般是不对的,要根据自己的实际情况,在上面也说了,这个值是必须要指定的。
     BUILD_OSG_APPLICATIONS           是否编译OSG的可执行文件,里面包含了四个极其重要的程序,分别是:osgarchive, osgconv, osgversion, osgviewer在后面会讲解它们的使用方法。
     BUILD_OSG_EXAMPLES               是否编译OSG的默认例子,这个是一定要选ON的,例子很重要。
     BUILD_OSG_PLUGINS                是否编译OSG的插件,要选择ON。
     BUILD_OSG_WRAPPERS               是否要编译OSG的相关扩展。
     CMAKE_BACKWARDS_COMPATIBILITY    CMAKE的版本信息
     CMAKE_INCLUDE_PATH               包含文件目录,可以不指定,编译完成后复制。
     CMAKE_INSTALL_PREFIX             安装目录,默认值为C:/Programs Files/OpenSceneGraph/
     CMAKE_LIBRARY_PATH               库文件目录,可以不指定,编译完成后复制。
     CMAKE_PREFIX_PATH                当前目录,可以不指定。
     COLLADA_INCLUDE_DIR              Collada库的包含目录,没有安装colloada可以不提定,后面的雷同。
     COLLADA_LIBRARY                  Collada库的库目录,不需要可以不指定。
     DYNAMIC_OpenSceneGraph           默认开启
     DYNAMIC_OPENTHREADS              默认开启
     EXECUTABLE_OUTPUT_PATH           可执行文件输出目录,可以默认为空会放在bin下。
     FLTK_GL_LIBRARY                  FLTK的GL库,可以不指定
     FLTK_INCLUDE_DIR                 FLTK的头文件目录
     FLTK_LIBRARY                     FLTK的库文件,可以不指定
     FREETYPE_INCLUDE_DIR_freetype2   如果第三方依赖找到正确,则此目录会有找到信息,否则重新配置第三方依赖,这是字体库,必须需要。
     FREETYPE_INCLUDE_DIR_ft2build    FREETYPE的包含目录中的ft2build目录
     FREETYPE_LIBRARY                 FREETYPE的库目录
     GDAL_INCLUDE_DIR                 GDAL的包含文件目录
     GDAL_LIBRARY                     GDAL的库目录
     GIFLIB_INCLUDE_DIR               GIF的包含目录
     GIFLIB_LIBRARY                   GIF的库目录
     INVENTOR_INCLUDE_DIR             INVENTOR的包含目录,可以不指定。
     INVENTOR_LIBRARY                 INVENTOR的库目录,可以不指定
     INVENTOR_LIBRARY_DEBUG           INVENTOR的D版库目录,可以不指定
     JASPER_INCLUDE_DIR               JASPER的包含目录,可以不指定
     JASPER_LIBRARY                   JASPER的库目录,可以不指定
     LIBRARY_OUTPUT_PATH              库输出目录,可以不指定,默认将为LIB
     OPENVRML_INCLUDE_DIR             OPENVRML的包含目录,可以不指定
     OPENVRML_LIBRARY                 VRML的库目录,可以不指定
     OPENVRML_LIBRARY_DEBUG           VRML的调试版库目录,可以不指定
     OSG_GLU_TESS_CALLBACK_TRIPLEDOT  默认关闭则可
     PERFORMER_INCLUDE_DIR            Performer的包含目录,可以不指定
     PERFORMER_LIBRARY                Performer的库目录,可以不指定
     QT_QMAKE_EXECUTEABLE             QT的QMAKE可执行目录
     QUICKTIME_INCLUDE_DIR            QuickTime的包含目录,可以不指定
     QUICKTIME_LIBRARY                QuickTime的库目录,可以不指定
     SDLMAIN_LIBRARY                  SDL的sdlmain.lib库目录,可以不指定
     SDL_INCLUDE_DIR                  SDL的包含文件目录,可以不指定
     TIFF_INCLUDE_DIR                 TIFF图的包含目录
     TIFF_LIBRARY                     TIFF图的库目录
     USE3DPARTY_BIN                   是否使用第三方依赖,必须开启。
     XINE_INCLUDE_DIR                 XINE的包含目录,可以不指定
     XINE_LIBRARY                     XINE的库目录,可以不指定
     ZLIB_INCLUDE_DIR                 ZLIB的包含目录
     ZLIB_LIBRARY                     ZLIB的库目录
     WxWidgets_LIB_Dir                Wx的库目录
     WxWidgets_ROOT_DIR               Wx的根目录

     有的选项是二级联动的,可能选了某一个之后才会出现,这时要根据字面意思看看是否需要开启,选择完成后再点击Configure,然后看看有什么新项出来没有,新项会以红色显示,如果出现了则看看是否需要改动默认值。比如当把:BUILD_OSG_EXAMPLES设置成ON后,点击Configure会出现BUILD_MFC_EXAMPLE的小项,选择ON,然后再点击Configure,到全部灰色,再看看是否需要改动,就可以点击OK了,点击OK后就会生成启动文件了,如图4。

OSG可视化图形开发环境的编译与安装
 图5OSG的启动文件目录中的启动文件

     到你输入的启动文件目录中就可以看到亲切的生成的VS的启动文件,打开,编译运行就可以了,里面会有一些别的版本,建议只运行ALL_BUILD的Debug与Release版本就可以了,如图所示,选择VS菜单中:生成->批生成,照图5选择。

OSG可视化图形开发环境的编译与安装
图5 生成时的选项

    从字面意思来看别的两个版本分别是最小发布版与带调试信息的发布版本。在这里要提醒一下初学者,第一次编译成功几乎是不怎么可能的。一来是智者百虑,必有一失,所以再小原因是OSG源文件本身有问题,在编码转换过程中有些小错误会发生,据我了解双引号会变成问号。

    另外一些错误是发生在与别的库的结合止的,比如库指定不正确,或者提示错误信息说:与默认库起冲突,或者干脆无法解析的@@LFDJL什么什么符号,这些错误都是在编译库时非常常见的。

    首先一个一个来解决。 有语法错误的,比如双引号变分号的,直接改过来就可以了。

     第二个错误默认库冲突,使用菜单:项目->属性->配置属性->链接器->输入->忽略所有默认库选择是,或者忽略指定的库,当然你要看错误信息当中指出的哪些个库。

     第三个错误是最小的错:无法解析的@@什么的,要从那些乱符号中看出函数名是什么,一般都是VS的命名规则在前后加一些下划线什么的,看中间几个就可以了,找到这个函数所依赖的lib是什么,一般很好找的,然后在菜单:项目->属性->配置属性->链接器->输入->附加依赖项中加入所需库就可以了。

     注意要把活动Debug与Release版本都改动过来。 编译成后把所得dll与exe文件都放在一处,把路径添入 path。把测试模型放在一处,路径加入OSG_FILE_PATH便可。

     编译完成后,运行一下runexample.bat看一下是否设置成功。如果错误提示无法辩认标识符什么的,说明是没有把DLL与EXE所在文件夹加入到PATH当 中,说无法找到插件打开什么的,说明编译时没有加入第三方库。无法打开某某.OSG文件的,说明没有把测试模型加入到OSG_FILE_PATH当中。

  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料