OSG入门_场景图形与OpenSceneGraph概述02

NodeKits

NodeKits 扩展了Nodes,Drawables 和StateAttributes 的概念,也可以看作是OSG 内核中osg 库的一种扩展。NodeKits 的意义远大于对OSG 类的继承,事实上它还能够提供对.osg 的封装(一种支持对.osg 文件进行读写的OSG 插件)。总之,NodeKit 由两部分组成:NodeKit 本身,以及针对.osg 的封装插件库。OSG 2.0版本包含有六种NodeKits。

如下图为OSG3.4.0源码结构:
OSG3.4.0源码结构
osgFX 库:此类NodeKit 提供了额外的场景图形节点,以便于特效的渲染,例如异向光照(anisotropic lighting),凹凸贴图,卡通着色等。

osgParticle 库:此类NodeKit 提供了基于粒子的渲染特效,如爆炸、火焰、烟雾等。

osgSim 库:此类NodeKit 提供了仿真系统中以及渲染OpenFlight 数据库所需的特殊渲染功能,例如地形高程图,光点节点,DOF 变换节点等。

osgText 库:此类NodeKit 提供了向场景中添加文字的得力工具,可以完全支持TrueType 字体。

osgTerrain 库:此类NodeKit 提供了渲染高度场数据的能力。

osgShadow 库:此类NodeKit 提供了支持阴影渲染的框架结构。

OSG插件

OSG 的核心库提供了针对多种2D 图形和3D 模型文件格式的I/O 支持。osgDB::Registry 可以自动管理插件链接库。只要提供的插件确实可用,Registry就可以找到并使用它,应用程序只需调用相应的函数来读取和写入数据文件即可。

osg 库允许用户程序采用“节点到节点”(node-by-node)的方式直接建立场景图形。相反的,OSG 插件允许用户程序仅仅通过编写几行代码就能够从磁盘中调用整个场景图形,或者调用部分的场景图形,然后应用程序可以将其列入整个场景图形系统中去。

OSG 的2.0 版本支持大量常用的2D 图形文件格式, 包括.bmp,.dds,.gif,.jpeg,.pic,.png,.rgb,.tga 和.tiff。OSG 还支持用于读取电影文件的QuickTime 插件,并有专门的插件用于读取FreeType 类型的字体。

OSG 广泛支持各种3D 模型文件格式,其中包括3D Studio Max(.3ds),Alias Wavefront(.obj),Carbon Graphics’ Geo(.geo),Collada(.dae),ESRI Shapefile (.shp),OpenFlight(.flt),Quake(.md2)和Terrex TerraPage(.txp)等常见格式。

除上述标准格式以外,OSG 还定义了自身的文件格式。其中,.osg 格式是场景图形的另一种ASCII 文本描述格式,用户可以使用文本编辑器对其进行编辑和修改;而.ive 格式则是一种二进制格式,经过优化之后它更适合于迅速读取。除2D 图形和3D 模型文件以外,OSG 插件还支持对压缩文件和文件集的I/O操作,OSG 目前支持的压缩文件格式有常见的.tgz 和.zip,以及OSG 特有的.osga格式。

此外,OSG 还包含了一组名为“PseudoLoader”的插件,以提供除简单文件读取之外更多的功能:
缩放、旋转和平移:此类PseudoLoader 读取文件并在已读入场景图形根节点上添加一个Transform 节点,并指定放缩、旋转和平移属性的值以配置Transform。
图标:图标类PseudoLoader 允许在已读入3D 场景之上显示HUD(抬头显示)样式的图片文件。

互操作性

为了确保OSG 可以在更多环境中运行,OSG 提供了一个语言无关的、可供运行时访问的接口。

osgIntrospection 库允许用户软件使用反射式和自省式的编程范式与OSG 进行交互。应用程序或其它软件可以使用osgIntrospection 库和方法迭代OSG 的类型,枚举量和方法,并且无需了解OSG 编译和链接时的具体过程,即可调用这些方法。

Smalltalk 和Objective-C 等语言包括了内建的反射式和自省式支持,但使用C++的软件开发人员通常无法运用这些特性,因为C++并未保留必要的元数据(metadata)。为了弥补C++的这一不足,OSG 提供了一系列自动生成的、从OSG源代码创建的封装库,用户程序不需要与这些OSG 的封装库直接交互,它们将完全由osgIntrospection 进行管理。作为osgIntrospection 及其封装的结果,许多语言如Java,Tcl,Lua 和Python,都可以与OSG 进行交互。

程序与示例

OSG 发行版包含了五个常用的OSG 工具程序,它们对于调试和其它基于OSG 的软件开发均十分有益。

如下图为OSG3.4.0的“applications”的源码结构:
applications
osgarchive:用于向.osga 文件包中添加新的文件。也可以用这个程序实现包的分解和列表。

osgconv:用于转换文件格式。尤其有用的是,它可以将任意文件格式转换为经过优化的.ive 格式。

osgdem:用于将高程图等高度数据及图像数据转换为分页的地形数据库。

osgversion:用于将当前OSG 版本以及一些记录了OSG 源代码改动情况和贡献者信息送入std::cout。

osgviewer:这是一个灵活而强大的OSG 场景及模型浏览器。

OSG入门基础_00 01 02概况图:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tingzhushaohua

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值