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

相关文章

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配