场景图形的树形结构最顶级是一个根节点,其余所有的场景模型都是从根节点向下进行延伸,每个Group组节点都包含了几何信息和渲染状态信息,所有的组节点和根节点都可以有多个(或零个)子成员,在树结构的最底端是叶子节点,叶子节点一般都包含场景中物体的实际几何信息。
为满足各种各样的需求,场景树中一般包含多种类型的节点,例如,Switch(开关节点)可以设置它的子节点是否可用;LOD(细节层次)可以根据观察距离的不同而加载不同的子节点,通常当观察距离较远时,一些较小的节点可以有选择性的进行加载;Transform(空间变换节点)可以改变子节点的坐标位置、大小和旋转角度等信息。面向对象的场景图形应用了继承来提供多样性,在三文场景中的所有节点类都继承一个基类,通过派生实现特定的功能特性。
OpenGL和Direct3D主要抽象实现图形硬件特性。虽然图形设备可以暂时地保存要执行的几何数据和状态(如显示列表、缓冲对象等),但是从本质上讲,底层的API对数据的空间组织能力显得过于简单,很难适用于绝大部分的3D程序开发与应用。
场景图形作为Middleware(中间件),在底层API函数之上构建,弥补了底层API的缺点,提供了高性能3D程序需要的空间数据组织能力以及特性。下图2.2是一个典型OSG程序结构。
2.2 OSG三文引擎
OSG引擎是由与图形学有关的一系列功能模块构成,主要为图形图像的应用程序开发提供一定的场景管理和图形渲染优化的功能[1]。OpenSceneGragh基于场景图形的概念,使用可移植的ANSI C++进行编写,以OpenGL为基础,利用面向对象的封装,使开发者能集中精力专注于上层场景的搭建,不必担心底层的图形接口。因此,OSG具有跨平台的特性,可以运行在Windows,Mac OS X,UNIX,Linux等操作系统上。
OSG是一款开源的技术,广泛地应用于虚拟现实、虚拟仿真等可视化的众多领域。它的用户许可方式是修改过的GNU 宽通用公共许可证(GNU Lesser General Public License,LGPL)。这种开源形式的共享方案使OSG具备了以下优势:
快速开发:几乎全部的OpenGL底层接口都被OSG内核进行封装,同时OSG能够随时支持最新的扩展特性。因此,应用程序开发者可以把更多的精力关注于三文程序开发的实质内容和各种场景对象交互的方法上,而不必过多地关注底层代码。
高性能:OSG的核心代码在支持顶点数组、显示列表、多种场景裁剪技术、细节层次节点、渲染状态排序、OpenGL着色语言等的同时还能够提供文字显示,阴影系统,粒子系统,雨、雪、烟雾等特效模拟,场景动态调度,多线程渲染等各种机制,使程序的性能得到了提高。
高品质:OSG community的开发成员对OSG进行多次的检查、测试和改善,从而使OSG技术的质量得到提高。目前,已有数百人参加核心代码的开发过程并做出贡献。
提高程序质量:开发者只有了解了自己所使用的开发包,才能编写出高质量的程序。OSG完全向用户开放源代码,在使用过程中程序员可以随时查看和调试相关源代码,从而使代码内部信息可以被充分的了解,程序可以更好地被开发。
可扩展性:基于场景图形的扩展思想,OSG也提供了强大的可扩展能力,其中有各种类型的可扩展节点(NodeKits,节点工具箱)、扩展回调、扩展交互事件处理器等,这些特性都让开发者的程序编写更加灵活方便。
低费用:OSG完全开源,即全部免费,这不仅消除了知识产权的问题,也大幅削减了开发所需要的费用。 OSG电网500KV故障定位以及可视化(2):http://www.751com.cn/zidonghua/lunwen_11338.html