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

2024-04-10 21:58

本文主要是介绍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概况图:
这里写图片描述

这篇关于OSG入门_场景图形与OpenSceneGraph概述02的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/892262

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。