OSG虚拟可视化图形开发简介
来源:第三维度
作者:FreeSouth[杨石兴]编著
OSG诞生于大概是1997年,可以在osgChina[www.osgChina.org]上查阅到关于OSG的来龙去脉。笔者使用OSG也已经有三到四年的时间了。当初偶然接触OSG到现在,OSG已经在国内外得到广泛的应用,国内已经有好几家专门使用OSG的公司,他们分布在杭州、西安、深圳以及还有一些我不知道的地方。 然而,更让人兴慰的是国内的各重点院校与研究所都已经开始使用OSG。
我做为一直使用OSG做开发的图形工作者,感觉非常兴慰。当每一次在群里或论坛说OSG又有什么什么消息时,看到很多人说:看来选OSG是选对了,OSG明天更好等等类似的话,我热泪盈框。 OSG进入中国已经有七到八年了,在这期间,OSG经历了数次变迁,青丝变白发。使用OSG的开发者从无到有,从草根开发者到成立专门使用OSG的公司。
1.1 OSG简介
1.1.1 OSG的诞生
在1997年时,Don Burns由于喜欢滑翔机运动且对计算机图形学非常熟悉,在LINUX上写了一个控制滑翔机的小引擎,这便是OSG的最初雏形。 后来在1998年,Don Burns在滑翔机爱好者邮件列表中遇到了Robert Osfield,对OSG的命运起到了决定性的改变。我们现在在邮件列表中也会经常看到Robert的名字,从98年至今,Robert一直担当OSG开发组长,权衡OSG的各种利弊。 有很多人在刚开始接触OSG时感觉到非常痛苦,咋一看一点儿都看不懂,疑是什么鬼怪新语言。其实OSG是语法是标准C++的。 您可以登录:http://www.osgchina.org/ 与 http://www.OpenSceneGraph.org查看关于OSG历史的更多信息。也可以查阅《OSG快速入门指南》[<OpenSceneGraph Quick Start Guide>]的第一章的相关章节来获得OSG的发展更详细信息。
1.1.2 OSG在中国
OSG在2000年或更早时候进入的中国,据个人了解,FLMN在2003年接触的OSG,并在2005年创立了VRDEV[www.vrdev.net]网站。VRDEV是国内OSG爱好者交流的中心,把无数OSG爱好者引入大门。 3DVRI[www.3dvri.com]是基于OSG的VR引擎,在大中院校及公司得到广泛的应用。关于3DVRI的相关案例可以查看osgChina的企业展示版面[http://www.osgchina.org/projects/osgChina/enterprise.php]。 在今年初二,由FreeSouth牵头,联合国内众多爱好者共同建立了OSG中国官方网站[www.osgChina.org],以及OSG中国讨论区[bbs.osgChina.org],组建了OSG在中国的大本营。
目前在国内使用OSG的大概有上千人,专做OSG相关项目的公司有三到五家。各高校与研究所与仿真相关的实验室等等都在不同程度的在OSG这个方向上投入人力与物力。 您可以登录www.vrdev.net查看OSG国内爱好者使用OSG的历程,也可以登录bbs.osgChina.org来查看最新的讨论。
1.2 如何学习OSG
1.2.1 OSG的书籍
OSG官方出过两本书,一本是《OpenSceneGraph参考手册》[OpenSceneGraph Reference Manuals],这本书有基于1.2与2.20双版本。该书大概成于07年六月左右,当时记得是在五一的时候,我当时正在家中吃饭,朋友通知说出书了。然而就在今天中午,3DVRI的唐先生刚刚打电话来告知喜讯,说他们方才已经购买到了这本书。这是我听到的第一个购买到这本书的相关消息。这本书是一本参考大全,大家应该有不少都看过C语言参考大全,C++参考大全,PowerBuilder参考大全。
换句话说,里面介绍的是函数与函数说明,并不涉及原理的讲述与案例。当然从某种意义上讲OSG更侧重于当作工具库来使用,做二次开发相对少一些,OSG的结构与体现在人们面前的使用方法与发展趋势也是越来越方便人们使用,这样应用会是OSG最重要的一环,二次开发则次之。 另一本则不得不重重的提一下了,书名叫《OSG快速入门指南》[OpenSceneGraph Quick Start Guide]。这本书由于是官方出的第一本书,而且早就放出话去,故千呼万唤始出来。记得我听见这本书出来的时候饭都没顾上吃,上网吧就下下来了,又打电话又写邮件,不亦乐乎。记得那个时候Array好像已经开始做OSG了。VRDEV上英文版被帖出来后,大家争相翻译,现在记不清楚了,武大的有位夜间登录网友记得曾经译过几节,但是没有坚持下来。最后清华的王锐[Array]与他的好友钱学雷博士完成了最终的翻译并与OSG开发组联系发行了中文版。这本书是免费的中英文版本均可以在OSG中国讨论区[bbs.osgChina.org]上下载到。不得不说,这是一本好书。虽然讲的没什么大的应用,但是是OSG众多书籍中唯一讲原理的书籍,所以不管怎样一定要看看才行。在随书的光盘当中,我也会把这本书的中英文都整理出来。 还有一本有书的模样的是很早很早的未完成的书籍,书名为《OSG基本渲染理论》[A Short Introduction to the Basic Principles of the Open Scene Graph]。这本书由我翻译完成,英文可以在www.osgChina.org下载得到,或在书的随赠光盘当中,而中文则在随书光盘与bbs.osgChina.org上都可以下载得到。这本小书应该是最早的介绍OSG的专业书籍,可惜的是并没有完成,估计以后也不会再继续写了。这本书是基于OSG1.20的。 另外在Google上可以搜索到更多的关于OSG的论文,有些论文写的非常精彩且长,曾记得有位博士写的关于多通道,整整几十页,字还很小。可以到http://www.google.cn/advanced_search?hl=zh-CN也就是www.google.cn的高级搜索子项里填入相关信息来搜索关键字为OSG或OpenSceneGraph的资源。我一般喜欢搜索PDF与DOC格式的文档。如图1.1所示。
除此之外再也没有英文的专业书籍来介绍OSG了,大概是OSG的书卖的并不是十分的好。曾记得我以前问过FLMN为什么不买一本参考大全,FLMN当时说:有Doxygen就行了。后来我琢磨一下也是的,一来那玩易儿很贵,在外国便宜,顺差过来就贵了。二来有Doxygen确实就行了,所以没有买。而且OSG快速入门指南是免费的,吸引了很多的眼球。同时官方出书是为了有更多的人使用OSG,应该多多免费才是。
图1.1 Google中的高级搜索
另外就剩下中文的书籍了。在这里我不得不悲伤起来,Array的书并没有完成,他大概已经写了很多了,最终我得到了不好的消息称他的书不想再写下去了,大概是别的更重要的事情耽误了。本来我也想写一本书的在此前,后来被Array的激情打消了,所以真是个坏消息。 中文的书籍中最出名的应该数《Step Into OpenSceneGraph》了,那是我在去年四月份写的,当时还没有太多的人使用OSG,可惜的是当时的稳定版本是1.20,有点儿老了,而且我并没有及时更新到2.20。那本书卖的很好,谢谢大家的关心与支持。那本书的电子版与代码也在这本随书的光盘当中。里面的内容很少,写的也不好,这本书也起不到亡羊补牢的作用,只能为OSG初学者提供绵薄之力。 再者就是各大网站上面的文章了,其实有很多问题是网站上面解决不了的,这样我们就需要更多的努力自己去解决问题,然后把经验分享给大家。这需要在校学生的努力。然而在国内技术共享这个层次做的很不好。
1.2.2 OSG的网站
OSG的官方网站就是著名的www.OpenSceneGraph.org,我们在早期查阅资料就全靠它了。在三年前感觉它就是本圣经,什么都有,东西很多,那时候还没有改版,左边一叠文件夹,右边是窗口,感觉就很多东西,好像在去年的时候改的版,更好看了,用的Trac。 中文官网就是www.osgChina.org了,这是国内爱好者共同努力的结果,有着不少人的艰辛。记得为了实现我大年三十发布的诺言,忙了好几个夜,初一都是四点回的家,当时是在网吧里做这些工作的,由于环境配置很复杂,所以不敢轻易下机,一搞就是十几小时。里面附了一个论坛bbs.osgChina.org,很遗憾的说由于我没有什么管理经验,选的服务器质量也不行,给大家访问其实带来了很多的不便,在以后我会尽快换掉服务器的,放心吧。
关于OSG的论坛有很多,其中最好的有两个,一个是FLMN先生的VRDEV[www.vrdev.net],VRDEV在早先是OSG中文资料的唯一来源,我帮助FLMN一直管理至今。另一个是VRCHINA[www.vrchina.net],VRCHINA的名字很大,内容也很多,OSG只是其中一块,但是在FLYSKY的管理之下,蒸蒸日上,发展也很好。
1.2.3 OSG的教程
OSG官方网站上本身有教程的介绍链接,里面有很多关于OSG的教程,大部分都是可以直接运行的,可以在这里查看[http://www.OpenSceneGraph.org/projects/osg/wiki/Support/Tutorials]。 其实最好的教程是OSG自带的例子,在资料文件中会有OSG的相关的例子,里面大多数的例子都很有实用价值,我们学习OSG都是从它而来,而且例子的难度有大有小,方面极广,坦而言之,如果里面的例子都看通了,对OSG的理解会上升很多个层次。在bbs.osgChina.org上有Hesicong为部分例子做的注释。 在这里要介绍一下海军教程,海军教程也是最早的OSG教程之一,现在已经更新到了2.20版本且被Array译了出来。可以到bbs.osgChina.org上查看译的版本以及下载相关的源码。在这里要特别说一下,由于海军教程是从老版本过渡而来,故在代码风格上使用的都是老版本的风格,有可能新版本当中有更多的简化,但是这种简化并未在其中表现出来。 在早期还有一个教程,就是FLMN的flmnwere,在随书光盘的FLMN的学习光盘当中应该可以找到,现在应该已经下载不到这个光盘了,绝版本了。FLMN很忙,估计下一版本的光盘很久后才会面世。
1.2.4 邮件列表
OSG邮件列表是一个非常重要的地方,最新的知识以及相关的新闻和问题都可以在上面发问,可惜的是只有英文的。在官网邮件列表版块中[http://www.OpenSceneGraph.org/projects/osg/wiki/MailingLists],可以查看邮件列表的订阅方法。 现在google group中也会每天更新邮件列表,而且看起来更方便了,会把问题汇总,回答与问题相连的以帖子的形式把邮件播报出来,里面的内容与邮件列表是相同的,而且看起来更加方便。可以到这里来查看google Group中的OSG邮件列表:http://groups.google.com/group/osg-users?lnk=srg,如果你已经订阅了邮件列表的话,也可以通过google group来查看与发送问题。 在注册邮件列表的时候,官方会发送一个问候邮件,其中包含了激活的过程,所以必须要收到邮件后激活才可以正常使用邮件列表。 在国内目前大多数的邮箱都是可以直接发送英文且没有乱码的,所以用国内的邮箱就可以了,我一直用的是163的邮箱,从来没有出过错误。如果有的邮件只有GB编码的,就换个牌子吧。 有一段时间几位OSG方面的高手也在商议建立邮件列表的事情,但是因为缺少资金来源而做罢,对国内的情形我也感觉到非常遗憾,保密措施非常严格,有些时候比发誓还难过,发誓最多垛下一个手指头或天打雷辟,而现实中根本不给你这样的机会。