OSG( OpenSceneGraph)

来源:互联网 发布:淘宝卖烟的店铺怎么搜 编辑:程序博客网 时间:2024/04/30 04:10
一:编译问题

论坛上编译好的库文件也是FLMN人为编译的文件,与自己用CMAKE编译的没有什么不同,说到自己编译,总结一下主要有几个方面的错误:

首先来说,直接下了源码,没有下载第三方库与data数据文件,首先源码是不必说了,必备的。

源码的下载地址是:
http://www.openscenegraph.org/projects/osg/wiki/Downloads/CurrentRelease
这里要注意的是,在这里下到的是2.0,虽然说在:http://www.openscenegraph.org/projects/osg/wiki/Downloads/DeveloperReleases 可以下到2.1.9甚至不久后会有更新的源文件,且可以通过SVN抽取,但是紧跟潮流有时候并不一定都是好事,OSG数年前推出的1.20霸占OSG长达数年之久,经典之极,而OSG本身在近乎数月之内连更数十版本,CurrentRelease
中显示的是2.0,因此还是建议使用2.0,更高版本应该观望。PS:惯用1.2以后,感觉2.0可不怎么好使。

很多人下完源码之后,直接CMAKE开来,然后编译之,一般怎么说呢,使用CMAKE时并不关心其中的选项,直接一直点,这可能受CMAKE的官方教程影响,类似于做系统的一健还原,这样编译出的文件有下面的功能:首先OSG的核心库都在且自动安装到你指定的地方,但是PATH可能需要手动添加,很多人对PATH以及VS中的库文件与LIB文件路径什么的都不是太清楚,OSG版本更新又快,一个机器上甚至有几个版本,几个PATH,VS中也有库文件LIB文件一大堆,到时候程序运行时找不到入口,找不到入口只有一个原因,版本不对。 这里编译完的OSG往往人们最先发现的是无法正常显示字体,不光滑,这是因为缺少字体插件,其实JPEG,GIF等等都没有,因此这时需要指定第三方插件,OSG自己提供了最小的一般人都需要的OSG插件:
下载地址是:
http://www.openscenegraph.org/projects/osg/wiki/Downloads/Dependencies
在CMAKE中,把相应的ACTUAL_3DPARTY_DIR指向解压后的目录就可以了

这样编译完成的OSG具备正常的功能了,CMAKE中有很多其它的选项,最好都看一下是什么意思,常用的有:EXAMPLE是关着的,虽然我没有试过不打开它是不是就不产生例子,但是我估计不打开是没有例子编译的,别的如QT,wxWidgets等等这些,当你机器上安装这些插件库时,它会自动找到并配置好,所以不用操心。

需要以前使用的DATA,可以在:http://www.openscenegraph.org/projects/osg/wiki/Downloads/SampleDatasets 下到那些模型。当然也可以把放模型的地方,加上OSG_FILE_PATH这样的路径,随个人爱好。

写到这里建议,如果有特别需要的,自己编译一般都不成问题,但凡需要看教程的都是需要的非常单一的OSG功能,而你在上面提到的论坛里的:http://download.mapalpha.com/vrdev/OSG2.0_vc80.rar
是完全可以满足要求的,我们平时都不怎么使用VS8.0,因此感谢FLMN每次不辞劳苦的在VS8.0下编译OSG第一时间传给大家,装好后,PATH是设置好的,如果要有以前版本那样的VS项目文件,直接用CMAKE生成就可以了,源文件在OSG安装目录的SRC下,因为已经有库了,所以不用编译,别傻傻的又再编几个小时,再问怎么设置啊什么的。

关于VRML,QT等,王锐在论坛的其它地方写的都有相关的编译步骤,不再缀述,推荐一下他的关于这方面的贴(通帖,贴好打些):
关于编译VRML插件的:http://bbs.vrdev.net/viewtopic.php?t=853&highlight=%E7%BC%96%E8%AF%91
关于编译的详细的贴子:
http://bbs.vrdev.net/viewtopic.php?t=809&highlight=%E7%BC%96%E8%AF%91
贺世聪写的关于编译的贴子:
http://bbs.vrdev.net/viewtopic.php?t=639&highlight=%E7%BC%96%E8%AF%91
我写的关于如何在Linux下配置的贴子,虽然老了一点,但是步骤是一样样的:
http://bbs.vrdev.net/viewtopic.php?t=789&highlight=%E7%BC%96%E8%AF%91
关于如何配置wxWidgets的贴子:
http://bbs.vrdev.net/viewtopic.php?t=780&highlight=%E7%BC%96%E8%AF%91
二:版本问题

首先必须得感谢FLMN对OSG所做的工作,早在数年前,OSG还在0.99甚至更早的时候,举步唯艰,在国内唯一可以找到的资料都是FLMN提供,在以前的时候安装包可不是很容易得到,编译OSG源文件是每个OSG选手都要做的事情,编译所依据的教程记得是FLMN所译,那个时候因为一个PATH没有配好,一个选项没有点好,一翻工就是一天,后来OSG进入1.0以上,该站开始提供安装文件,怎么说呢,编译还是建议每个人都要经历一次,可能一次成功的人不在多数,CMAKE和OSG有关联大概是从1.90开始的。

其次来说一下常见的与版本有关的几个错误:
有很多人都在说程序编译完成后,显示有链接错误,把那些链接错误去掉微软的命名规则__与@等,可以看出是函数都无法解析,这是由于PATH没有配置正确,有很多人都还不清楚PATH是个什么东西,一般PATH是系统找‘东西’默认在哪里开始找,比如你在CMD下随便敲一个程序就可以运行,而并非当前目录,那么这个程序所在的目录是被加入了系统的PATH,系统会自动的寻找,可以通过我的电脑,属性,高级,环境变量来配各种PATH,一般path是系统寻找时的path,打个比方来说,OSG_FILE_PATH是OSG搜寻模型的目录,JAVA_HOME是JAVA库文件的安装目录,TOMCAT_HOME是tomcat所安装的目录等等,这些是为了程序查找更方便。
把OSG的bin目录添加的path中就可以了。

其次数一数二的就是出现下面的错误:
什么什么找不到入口,首先出现这个错误肯定是以前的版本或是不符合的版本在电脑上存在且该版本的path在你需要的版本之前,所以找一下,删除就可以了,不要说我已经删除完了还有这样的错误,这是不大可能的,当然你也可能自己无意间建了个写字板,其名为osg.lib竟放在%system%system32下,那样怎么删都找不到它,但是这种情况可能比较少见。

VS8从VS7过来,曾记得大概刚出来的时候大家纷纷下来使用,仿佛智能化大大提高,拿玩数据库的人来说,以前的很多语句都变成了几个鼠标点点,也许它是好的,但是我们很多人仍在使用VS7.0.同样,OSG2.0也是一样,不要求你使用OSG2.0,但是一定要会,因为使用哪个版本有时候不是自己决定的,这就像使用什么语言编程一样,会看菜吃饭。OSG在数月间连更数十版本,总算在2.0这里暂停了一下,所以仍值得庆幸。我也推荐大家使用2.0,可能1.20在不久后就消失了。但是如果以前一直在使用1.20的用户,我觉得操之过急是大可不必的,这样就不会有太多的抱怨。
 
三:硬件和平台问题

首先运行时有诸多的状况,最常见的是什么内存泄露,首先这种事情在0.99时古已有之,OSG的内存管理也是出了名的,我喜欢在MFC与WIN32下对OSG进行一些操作,怎么说呢有时候会有莫明其妙的错误,我曾仔细的查找过这些莫须有的错误怎么说呢,可能有时候它消失了,我们在很多次查找的时候总能找到这样的时候,所以如果有时候它消失了,要好好的珍惜经验,内存泄露这个问题不是太好解决,只要自己不要犯一些常见的编程的错误就可以了,多看一些类似于《(more) Effective C++》《高质量的C/C++指南》《Exception C++》这种类型C++的书,闲着没事翻两页就可以了。

玩虚拟现实不得不提这个硬件,一般内存至少也得是要1G的,一般512就已经不够用了,随着3DMAX,MAYA这类软件所建的模型越来越庞大,场景越来越大,有时候因为跑不起来要走很多弯路,比如大量的用LOD,分布式什么的,如果一台机器可以渲染,何必呢。记得有一本书上说:以前IBM的数据库管理系统才几百K,毕竟时代不同了,现在一个刻录软件安装文件300M,装上一个多G,投资一个刻录机还得在加个内存条了。显示卡最好是类似NV6800+以上的,OSG是从OPENGL而来,显示卡的加速与扩展功能至关重要,显示卡是比内存更重要的环节,从而来讲显示卡越好越好。CPU就不必说了,感觉以前AMD3700+及以上的系列的似乎用着也还差强人意,当然现在配机都双核了,如果是新机当然没问题了。

再说一下平台,虽然说大多数的玩家都批评怎么老是使用MFC啊WIN32有什么好啊等等,就我感觉的是国内大多数的项目使用的还是MFC与WIN32,几乎各占半壁江山,Windows Form以及wxWidgets,QT这些虽然有很多人都十分的善长,但是怎么说呢,没有更多的人善长,就一个项目来说可能需要有很多人来做,而且MFC与WIN32一般的人都非常熟练,因此别的平台可以做一下研究,需要时可以使用就可以了,主要还是应该放在MFC与WIN32上,当然这个不必如此讲究,学时一般都是控制台。  

再说一下操作系统,没有听说很多人在Linux下使用OSG,虽然说OSG是从Linux下过来的,但是虽然说很多人以在Linux下熟练的工作为荣,但是这种荣誉并没有在OSG的项目中发挥很大的作用,曾经在Ubuntu+CodeBlock/Eclipse+wxWidgets上工作过,发现大家叫的很响的CodeBlock竟然在使用中文编码时会乱缩进。很多东西很好,但是只适合研究,需时能够很快上手即可。Linux下使用OSG感觉挺好的。
四:教程

一定要把OSG的官网www.openscenegraph.org从头到尾没事时就看看,很久前OSG官网的技术落后,网络也卡,有时候打开一个页面需要数分钟,我们仍在坚持,现在好了,OSG官网于不久前改版,速度相当可观,还等什么。

现在就OSG到底拥有多少教程来看一下,首先曾经有很多很不错的OSG方面的论坛以及什么的,都没有留下链接,现在只介绍一下比较官方的地方:

首先来说例子程序:

OSG自带的例子从1.0到2.0是不同的,因此可以把以前的例子OSG删除的也可以收一下看看,其次不得不强调OSG例子程序的重要性,必须需要一遍再一遍的看,一遍再一遍的研究,也许是我的感觉不对,OSG的很多功能都需要东拼西凑,连想带试才能成功,而很多都是基于OSG自己的例子的,OSG自己的例子在编译完成后有。

其次OSG官网上放有几个例子,非常实用的,可以从下面的链接中获得:
http://www.openscenegraph.org/projects/osg/wiki/Support/Tutorials
建议每一个都下来看一下,琢一下磨。

其次又不得不提一下FLMN了,很久前整理了学习光盘,里面有NPS以及FLMN的例子网站(停止运营了)上面的三个例子,还有一些好文章,地址是:
http://download.mapalpha.com/vrdev/VRDEV-OSG-STUDY-KIT-1.0.iso

再说一下书籍:
英文的权威书籍有两本,一本是:
《OpenSceneGraph Quick Start Guide》另一本是《OpenScenGraph Reference Manual》两本书都有1.20以及2.0的

在不久前王锐曾经译完了《OpenSceneGraph Quick Start Guide》,中英版本的可以在下面链接中看到简介:
http://www.osgbooks.com/ 
关于中文版的《OpenSceneGraph Quick Start Guide》,可以从王锐的贴子中获得:
http://bbs.vrdev.net/viewtopic.php?t=1248

中文目前还没有好的参考图书,不久前写过一本中文入门教程,《Step Into OpenSceneGraph》,谢谢很多OSG同仁的捧场与提出书中所存在的错误与问题,写时最新的OSG是1.20故是基于VS8与OSG1.20的,是邮购的(40/本),需要的话可以发信给我就可以了,信箱是:ieysx@163.com
可以在下面看到该书目录:
http://bbs.vrdev.net/viewtopic.php?t=655

并不是说因为我写的有书骗大家买啊,我觉得OSG方面的资料本身非常非常稀少,学习OSG是件不困难的事,难的是没有资料与灵感,我觉得有资料就应该购买或者收集,这不像是C++,JAVA什么的,光买书都要买到破产。另外我建议把OSG官方网站上展示的别的公司以OSG为基础做的产品都下来看看,从中获取灵感与经验,有很多公司的软件与项目甚至是开源的,这样就更好了。