1. OpenSceneGraph 简介
OSG 是一个开源的场景图形管理开发库,主要为图形图像应用程序的开发提供场景管理和图形渲染优化功能。它使用可移植的 ANSI C++编写,并使用已成为工业标准的 OpenGL 底层渲染 API。因此,OSG 具备跨平台性,可以运行在Windows、Mac OS X 和大多数类型的 UNIX 和 Linux 操作系统上。在OSG 中,大部分的操作可以独立于本地 GUI,但是 OSG 也包含了针对某些视窗系统特有功能的支持代码,这主要是源于 OpenGL 本身的特性。OSG 是公开源代码的,它的用户许可方式为修改过的 GNU 宽通用公共许可证(GNU Lesser General Public License,LGPL)。
OSG的编译可以参照网上教程自行编译。
2. OSG 组成模块
OSG 主要包括 4 个库,下面分别进行介绍。
2. 1 OSG 核心库(Core Library)
核心库是 OSG 的核心,也是其存在且不断得到发展的根本原因。它的主要功能就是实现最核心的场景数据库的组织和管理、对场景图形的操作以及为外部数据库的导入提供接口等。它主要包括以下 4 个库。
- osg 库:
基本数据类,负责提供基本场景图类,构建场景图形节点,如节点类、状态类、绘制类、向量和矩阵数学计算以及一般的数据类。同时,它包含一些程序所需要的特定功能类,如命令行解析和错误调试信息等。
- osgUtil 库:
工具类库,提供通用的公用类,用于操作场景图形及内容,如更新、裁减、遍历、数据统计及场景图的一些优化。
- osgDB 库:
数据的读写库,负责提供场景中数据的读写工作,提供了一个文件工具类。注意,OSG 中场景图管理是通过遍历场景图层次结构来完成大部分的数据处理工作的。
- osgViewer 库:
视窗管理库,可以集中各种窗体系统,提供 OSG 与各种 GUI 的结合。因此,它是跨平台的 3D 管理窗口库。
2. 2 OSG 工具库(NodeKit)
OSG 工具库主要是对 OSG 核心库中 osg 库的扩充,是对 OSG 核心库的一个补充,它实现了一些
特定的功能。它主要包括以下 6 个库。
- osgFX 库:
特殊效果节点工具,用于渲染特效节点,包括异性光照特效(osgFX::Anisotropic Lighting)、凹凸贴图特效(osgFX::BumpMapping)、卡通渲染特效(osgFX::Cartoon)、刻线特效(osgFX::Scribe)和立方图镜面高光特效(osgFX::SpecularHighlights)等。
- osgParticle 库:
粒子系统的节点工具,用于模拟各种天气或者自然现象效果,如雨效、雪效和爆炸模拟等。
- osgSim 库:
虚拟仿真效果的节点工具,用于特殊渲染,如地形高程图、光点节点和 DOF 变换节点等。
- osgTerrain 库:
生成地形数据的节点工具,用于渲染高程数据,如 TIF、IMAGE 和 DEM 等各种高程数据格式。注意,OSG 通过一个开源库 GDAL 读取这些高程数据。
- osgText 库:
文字节点工具,用于向场景中添加文字信息,它完全支持 TrueType 字体。
- osgShadow 库:
阴影节点工具,用于向场景中添加实时阴影,提高场景渲染的真实性。
2. 3 OSG 插件库
OSG 插件库是 OSG 的一个非常重要的特点。通过各种第三方库的支持,OSG 能够直接或间接地导入 3D 模型或图片等场景数据,可以省去大量绘制图形的工作,从而极大地方便了开发者。
2. 4 OSG 内省库(osgIntrospection)
OSG 内省库提供了一个与语言无关的运行程序接口,确保了 OSG 可以在更多的环境下运行。osgIntrospection 库允许软件系统使用反射式和自省式的编程范例与 OSG 交互。应用程序和软件可以使用 osgIntrospection 库和方法迭代 OSG 的类型、枚举量和方法,并且不需要了解 OSG 编译和链接时的过程,即可调用这些方法。Smalltalk 和 Objective-C 等语言包括了内建的反射式和自省式支持,但是C++的开发者通常无法运用这些特性,因为 C++并未保留必要的元数(metadata)。为了弥补C++的这一不足,OSG 提供了一系列自动生成的、从 OSG 源代码创建的封装库。用户程序不需要与 OSG 的封装直接交互,它们将由 osgIntrospection 整体进行管理。由于 osgIntrospection 及其封装的结果,许多的语言,如 Java、TCL、Lua 和 Python,都可以与 OSG 进行交互。
3. 开发环境设置
(1)VS开发项目属性中包含文件和库文件目录分别设置为:
自己的文件夹路径\OpenSceneGraph\include
自己的文件夹路径\OpenSceneGraph\lib
(2)电脑“环境变量”设置
PATH: 自己的文件夹路径\OpenSceneGraph\bin;
OSG_ROOT:自己的文件夹路径\OpenSceneGraph
OSG_BIN_PATH:%OSG_ROOT%\bin
OSG_INCLUDE_PATH:%OSG_ROOT%\include
OSG_LIB_PATH:%OSG_ROOT%\lib
OSG_FILE_PATH: %OSG_ROOT%\data
点击电脑“运行”——cmd,在控制台中输入以下命令可以用来测试环境是否正确:
osgviewer osg.cow