您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > OpenSceneGraph
OpenSceneGraphOpenSceneGraph图形系统是一个基于工业标准OpenGL的软件接口,它让程序员能够更加快速、便捷地创建高性能、跨平台的交互式图形程序。OpenSceneGraph是一个开放源码,跨平台的图形开发包,它为诸如飞行器仿真,游戏,虚拟现实,科学计算可视化这样的高性能图形应用程序开发而设计。它基于场景图的概念,它提供一个在OpenGL之上的面向对象的框架,从而能把开发者从实现和优化底层图形的调用中解脱出来,并且它为图形应用程序的快速开发提供很多附加的实用工具。特性有了OpenSceneGraph,我们的目标是让所有的人在场景图技术中受益,无论是商业还是非商业的用户。它完全是由标准C++程序和OpenGL写的,充分利用STL和设计模式,发挥开源开发模型的优势来提供一个免费的开发库,并且重点集中在用户的需求上。随着使用一个全特性的场景图OpenSceneGraph的关键优势在于它的性能、可扩展性、可移植性和快速开发(productivity),更具体的来说:性能支持视图投影剔除(viewfrustumculling),隐藏面剔除(occlusionculling),小特性剔除(smallfeatureculling),细节层次节点(LOD),状态排序(statesorting),顶点数组,顶点缓冲对象(vertexbufferobjects),OpenGL着色语言和显示列表(displaylists),以上所列都是场景图内核的一部分。它们共同使OpenSceneGraph成为一个高性能的图形库变为可能,OpenSceneGraph也支持绘制进程(drawingprocess)的定制,比如场景图的连续细节层次(CLOD)的网格(参见虚拟地形项目和Delta3D)。折叠快速开发场景图的内核封装了包括最新扩展的大部分OpenGL功能,提供诸如剔除和排序的渲染优化功能,同样提供能快速开发高性能图形应用程序的一整套补充库。应用程序开发者可以更关心实质性内容和如何操控这些它们,而不再是底层的代码通过学习已有的场景图,比如:Performer和OpenInventor,把它们同像设计模式这样现代软件工程理念联合起来,加上早期开发周期中的大量反馈信息,设计一个清晰的可扩展的库已经成为可能。用户可以很简单的适应OpenSceneGraph并且把它集成到自己的应用程序中折叠数据装载为了读入和写出数据库,有一个数据库的支持库(osgDB)增加了通过后缀名动态插件机制,从而支持大量数据格式,目前的发布版本有55种单独的插件支持3D数据和图像格式的装载。支持的3D数据格式包括COLLADA,LightWave(.lwo),AliasWavefront(.obj),OpenFlight(.flt),多线程页面调度支持的TerraPage(.txp),CarbonGraphicsGEO(.geo),3DStudioMAX(.3ds),Peformer(.pfb),AutoCAd(.dxf),QuakeCharacterModels(.md2).DirectX(.x),andInventorAscii2.0(.iv)/VRML1.0(.wrl),DesignerWorkshop(.dw),AC3D(.ac)和自带的.osgASCII文本格式。支持的图像格式包括.rgb,.gif,.jpg,.png,.tiff,.pic,.bmp,.dds(包含压缩的一系列Mip贴图影像),.tgaandquicktime(在OSX环境下),全范围的高质量、抗锯齿字体也能通过freetype插件支持,基于字体的图像也可以通过.txf插件支持。用户也可以通过与我们同行的一个项目(VirtualPlanetBuilder)生成大规模地形空间数据(multiGB),使用OpenSceneGraph的自带数据分页调度支持来查看这些数据。折叠节点工具箱这个场景图同样有一套节点工具集,它们是可以在你的应用程序中编译或者在运行时装载的独立库,它们增加支持粒子系统(osgParticle),高质量抗锯齿文本(osgText),特效框架结构(osgFX),阴影框架结构(osgShadow),交互控制(osgManipulator),与虚拟仿真相关的效果(osgSim)。折叠可移植性场景图的内核已经被设计成尽量少的依赖具体的平台,很少的部分超出了标准C++程序和OpenGL。这就使得这个场景图可以快速移植到大部分系统中-最开始在IRIX开发,然后移植到Linux,接着到Windows,再后来就是FreeBSD,MacOSX,Solaris,HP-UX,AIX甚至是PlayStation2!完全独立与窗口操作系统的场景图内核库使得用户在它上面可以增加他们自己的指定窗口库和应用程序,在发布版本中osgViewer库提供自带窗口支持,可支持Windows(Win32),Unices(X11)和OSX(Carbon)。osgViewer库也可以轻松的和你的窗口开发包集成起来,作为OpenSceneGraph-2.0发布版本的一部分,有例子演示了如何在Qt,GLUT,FLTK,SDL,WxWidget,CocoaandMFC中的使用。场景图内核的可扩展性使得它不仅仅可运行在便携式设备,甚至高端的多核、多GPU的系统和集群上。这可能是因为场景图内核为OpenGL的显示列表和纹理对象支持多重图形渲染环境(multiplegraphicscontexts),剔除和绘制的遍历过程被设计成隐藏渲染数据为局部变量,这样可以以几乎只读的方式使用场景图内核。这样就允许多对剔除-绘制过程运行在多个CPU上,CUP也是绑定在多个图形子系统之上。对多图形设备渲染环境和多线程的支持可以在osgViewer中方便使用,发布版本中所有的例子都可以以多线程和多GPU的方式运行。使用范围OpenSceneGraph为一个多元化的社区提供了帮助,这主要集中在公开的osg用户邮件列表中,在那里有超过1700个使用者在讨论如何使用这个软件,最新的开发进度甚至讨论更多内容。这个社区同样也给已有模块的测试和新模块提供了大量帮助,这包括:OpenSceneGraph本身和第三方库,很多第三方库也是开源的。这个项目网站建立在tracwiki之上,允许所有的社区成员添加他们自己的内容,给osg的入门和指南做出贡献等等。这个站点的社区板块提供社区项目的更多信息和连接,指导你如何参与社区并成为他们的一员。社区开发了很多附加的节点工具,比如说:osgNV(支持Nvidia的顶点、片段、连接器、扩展、Nvidia的Cg着色语言等),Demeter(CLODterrain与OSG的集成)。osgCal(集成了Cal3D和OSG)。ReplicantBody是角色动画的另外一个选择,它也含有高层函数,比如脚本、混合动画动作等(它也依赖Cal3D),osgHaptics集成了Sensable公司的触觉渲染开发包OpenHaptics。osgAL可以用来集成3D声音(OpenAL)和OSG。再加上一套集成了主要窗口系统的API库,这些可以在框架工具包中找到。这个项目也与VRJuggler和Vess虚拟现实框架等其它项目集成。发展历程1998OpenSceneGraph诞生该项目是由Don在1998的一个业余爱好发展而来的,做为一种滑翔机的场景模拟器运行在Linux下。1999初出熔炉在1999年Robert开始着手完善该项目并把它移植到Windows下。在1999年9月,OSG的源码宣布开源并且OpenSceneGraph应运而生,当时Robert接管了场景图的项目,而Don则着眼于滑翔机的模拟。几易寒暑,Robert以一直致力于加强对C++标准以及设计模式的理解以求场景图可以适应新的标准和methodoligy。2000以专业精神对待业余爱好2001OSG专业化进程在2001年4月,为把此项目在互联网上推广到全世界,Rebert开始全职开发此项目,建立了OpenSceneGraph为其提供商业支持,咨询以及培训。2002社区建立2003Theyearofscalabilty2004...partoftheestablishment…
本文标题:OpenSceneGraph
链接地址:https://www.777doc.com/doc-2847708 .html