OSG架构初识

        本文参考<<osg最长一帧>>, <<OpenSceneGraph三维渲染引擎编程指南>>, <<OpenSceneGraph三维渲染引擎设计与实践>> 。

场景相关: Node, Geode, Group, Transform, LOD, Camera,  NodeVisitor, NodeCallback

几何图形: Drawable, PrimitiveSet, Geometry, Shape, TessellationHints, Simplifier,

DelaunayTriangulator, TriStripVisitor, SmoothingVisitor

渲染相关: StateSet, Texture, Light, Material,View, ViewerBase, State, RenderLeaf,

RenderBin, RenderState,SceneView, CullVisitor,Renderer,GraphicsContext,  Text

数据加载: DatabasePager

平台相关: OperationThread, GUIEVentHandler

OSG渲染引擎的核心部件:

渲染流程1:

渲染流程2:

节点访问:

渲染状态排序1:

渲染状态树:

渲染场景视图树:

摄像机,图形设备,渲染器,场景图,场景视图之间的关系:

加载数据的过程:

两种场景结构图对比:

多线程 加载数据时所用的缓冲区:

消息事件处理流程:

图形设备抽象:

  

        核心结构

        OSG的功能类采用“命名空间+类名称”的形式来命名。命名空间的命名方式为:第一个单词小写,后继单词的首字母大写,例如osg、osgUtil、osgViewer等;类的名称则采用每个单词首字母大写的组合,例如MatrixTransform、NodeVisitor等。功能类成员函数使用小写字幕开头,之后每个单词的首字母大写,例如setMatrix()、setAttributeAndModes()等,如果试图描述某个功能类的成员函数,通常使用如下方式书写:osg::MatricTransform::setMatrix().
OSG引擎的组成部分包括一系列动态链接库(.dll/.so)、插件(.dll/.so)、供开发者使用的静态链接库(.lib/.a)、头文件,以及可以执行的工具程序和示例,按照其作用来划分,可以大致分为以下五种类型。
- [x] OSG核心库:提供了基本的场景图形和渲染功能,以及3D图形程序所需要的某些特定功能实现。OSG的核心库包括:
- [x] osg库:其中包括构建场景图形的场景图形节点类、用作向量和矩阵运算的类;可绘制体和几何体类;用于描述和管理渲染状态的类;以及图形程序所需要的典型功能类;例如命令行参数解析,简单动画路径以及错误和警告输出等。
- [x] osgDB库:其中包括用于2D和3D文件读写的插件类注册器,以及用于访问和读写这些插件的特定功能类;此外还提供了数据的动态分页调度机制;可以支持大规模数据的动态度如何让卸载
- [x] osgUtil库:使用工具库,其中包括场景图形的数据统计和优化工具、渲染后台工具、场景裁剪工具;以及大量几何操作相关的类,例如德洛内三角化、三角条带化、发现坐标自动生成、场景树优化等工具。
- [x] osgGA库:提供了各种视景窗口交互事件的管理工具,用于构建一个与平台无关的人机设备抽象层。
- [x] osgViewer库:视景器工具库,即单个或多个场景观察和管理的整合工具,以及与平台相关的底层图形设备代码;同时还提供了多线程,多CPU。多显示器的渲染机制。
- [x] 节点扩展工具箱(NodeKits):扩展了核心OSG场景图形节点的功能,以提供高级节点类型和渲染特效。节点扩展库包括:
- [x] osgAnimation:场景动画处理库,包括各种关键帧的定义、插值方式、动画管理和融合、动画路径、角色动画、变形动画、渐进动画等。
- [x] osgFX:场景特效库 ,包括多种场景特效的实现,例如各向异性光照、卡通着色、凹凸贴图等。随着OpenGL着色语言的发展的逐步应用,这个库已经被逐渐弱化了。
- [x] osgManipulator:场景对象操作库,用于实现场景对象的用户交互控制,包括移动、旋转和缩放等。
- [x] osgParticle:粒子特效库,用于实现简单或复杂的场景粒子效果,例如雨、雪、烟雾、火焰。爆炸、运动尾迹等
- [x] osgShadow:阴影特效库,用于实现多种形式的物体阴影绘制,包括阴影贴图(ShadowMap)、阴影纹理(ShadowTexture)、阴影体(Shadow Volume),以及多种基于GPU的最新阴影实现技法。
- [x] osgSim:仿真工具库,包括DOF节点变化、纹理覆盖节点、点光源节点,以及多种虚拟仿真相关的集合。
- [x] osgTerrain 地形处理库,用于实现实时的地形读取或显示
- [x] osgText:文字处理库,用于实现点阵或者矢量文字的显示,包括纹理形式和三维文字形式,并支持多种字体的选择和多国语言编码
- [x] osgVolume:体渲染实现库,用于实现各种体渲染相关的技术
- [x] osgWidget:三维控件库,用于实现三维场景中的用户交互控件,乐如编辑框、按钮等,这在游戏或者三维场景聊天工具的开发中十分使用。
- [x] OSG文件读写插件:其中包括2D图像,3D图像和其他类型文件的读写功能插件,可以任意扩展或删减
- [x] 内省库:提供OSG与其他开发环境集成的功能,例如脚本语言Python等
- [x] 工具程序和示例集:提供了实用的工具和超过100个有关OSG使用和功能实现的例子。

内容来之《OpenSceneGraph 三维渲染引擎设计与实践》

OSG框架分析_Commander-CSDN博客_osg框架

OSG的组成结构_335046781的博客-CSDN博客

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: osgearth是一个开源的地球渲染引擎,基于OpenSceneGraph开发。它提供了各种功能和工具,用于创建和渲染高度复杂的地球场景。 osgearth的主要特点: 1. 地理数据支持:osgearth可以处理各种地理数据,包括DEM(数字高程模型)、地形纹理、矢量数据和卫星影像等。它支持多种数据格式,如GeoTIFF、Shapefile等,并提供了统一的API来加载和处理这些数据。 2. 地球渲染:osgearth通过大规模LOD(层次细节)技术来实现地球场景的渲染。它可以根据观察点的距离和角度,动态加载和显示不同细节级别的地理数据,以提供流畅的用户体验。 3. 场景定位和导航:osgearth支持场景的定位和导航,可以通过经纬度或地理坐标系统来定位场景中的对象。同时,它还提供了交互式的导航功能,包括缩放、旋转和平移等,使用户能够自由探索地球场景。 4. 地理参考系统:osgearth集成了各种地理参考系统(如WGS-84或UTM坐标系统),可以根据需要来选择合适的参考系统,并将地理数据转换为指定的坐标系统。 5. 插件系统:osgearth提供了一个灵活的插件系统,可以扩展其功能和功能。用户可以根据自己的需求编写自定义插件,以实现特定的地球渲染功能。 总之,osgearth是一个功能强大的地球渲染引擎,可以用于创建各种复杂的地球场景,具有广泛的地理数据支持和灵活的插件系统。 ### 回答2: OSG 3.6.5是一种开源的图形引擎,它是一个高性能的三维图形渲染库,可用于创建各种虚拟现实、增强现实和交互式的图形应用程序。OSG 3.6.5具有广泛的应用领域,包括游戏开发、科学可视化、建筑设计、仿真训练等。 而OSGEarth是OSG的一个扩展库,它提供了一套简单易用的接口和工具,用于在地球上渲染地理信息和卫星图像。OSGEarth使得开发人员能够轻松创建具有地球表面数据的图形应用程序,并实现真实感的地理环境。 OSG 3.6.5与OSGEarth的结合使得开发人员能够更好地处理地理信息,例如地形数据、卫星图像、地理坐标等。它提供了一系列功能强大的工具,用于加载、处理和渲染地理数据,以及在场景中添加地球表面的细节。 此外,OSG 3.6.5和OSGEarth还支持多种数据格式,包括DEM、DTED、地理信息系统(GIS)数据等,使开发人员能够方便地获取地球数据并进行交互式的可视化展示。 总而言之,OSG 3.6.5和OSGEarth是一对强大的开源库,用于创建高性能的三维图形应用程序,并处理地球表面的地理信息。它们为开发人员提供了丰富的功能和易用的接口,使得开发地理可视化应用程序变得更加高效和简单。 ### 回答3: osg 3.6.5 osgearth是一款开源的地理信息系统(GIS)软件包。其中osg 3.6.5是基于OpenSceneGraph(OSG)框架的版本,而osgearth则是OSG的一个插件,旨在为OSG的用户提供地球科学相关的功能和工具。 osg 3.6.5是一个功能强大且可扩展的三维图形引擎,可用于开发各种视觉仿真和虚拟现实应用程序。它支持多种平台,包括Windows,Linux和Mac OS,并且具有优秀的性能和稳定性。 osgearth作为osg的插件,为OSG提供了地理信息的处理和渲染能力。它可以加载和显示地球表面上的各种数据,例如地图、卫星图像、DEM数据等。同时,osgearth还提供了功能强大的地球数据处理工具,如地形转换、几何操作、投影变换等,使用户可以更方便地处理和显示地球科学数据。 osg 3.6.5 osgearth的优点包括: 1. 开源免费:osgearth是一个开源项目,用户可以自由获取并修改源代码,而且无需支付任何费用。 2. 易于使用:osgearth提供了简单易懂的接口和文档,使用户可以快速上手并开发出高质量的地图应用程序。 3. 功能丰富:osgearth支持多种地理数据的加载和渲染,提供了丰富的地球数据处理工具,可以满足大部分地球科学应用的需求。 4. 高性能:osg 3.6.5作为OSG的一个版本,具有优秀的渲染性能和稳定性,可以处理大规模、复杂的地球数据,保证应用程序的流畅运行。 综上所述,osg 3.6.5 osgearth是一款强大的地理信息系统软件包,提供了地球科学数据的处理和渲染能力,适用于各种视觉仿真和虚拟现实应用程序的开发。它的开源、易用、功能丰富和高性能是其优点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值