OSG入门教程05:框架介绍

OSG

OpenSceneGraph是一个开源的、高性能的3D图形工具包,由应用程序开发人员在领域,如可视化模拟,游戏,虚拟现实,科学可视化和模化

OpenSceneGraph现在已经被建立为世界领先的场景图技术,广泛应用于视觉模拟、空间、科学、石油-天然气、游戏和虚拟现实行业。

OpenSceneGraph 是用标准 C++ 编写的,利用了容器的标准模板库 (STL)。 该软件使用场景图方法将 3D 世界表示为节点图,该节点图对子图进行逻辑和空间分组,以实现行为和高性能。

OSG支持 OpenGL 1.0 到 OpenGL 4.2,以及 OpenGL ES 1.1 和 2.0,这使得支持旧硬件和操作系统到最新的移动设备以及尖端桌面图形系统的所有功能成为可能,这要归功于软件运行时扩展检查。

受益于C++和OpenGL,OpenSceneGraph可以运行在所有的地方视窗平台,OSX,GNU/Linux,IRIX,Solaris,HP-Ux,AIX和FreeBSD操作系统

整个软件都使用设计模式,使其更容易维护和理解我们的软件是如何工作的,并提供了一个很好的使用示例。该软件保持模块化和可扩展性,使最终用户能够仅使用他们需要的组件,并在需要时进行定制。

授权

OpenSceneGraph 是在 OpenSceneGraph 公共许可证下发布的,该许可证是 Less GNU 公共许可证 (LGPL) 的放宽版,允许在需要静态链接或嵌入系统的商业应用程序中使用。

特性

OpenSceneGraph 的主要优势在于其性能、可扩展性、可移植性以及与使用功能齐全的场景图相关的生产力提升,具体如下:

性能

支持视锥体剔除、遮挡剔除、小要素剔除、细节级别 (LOD) 节点、OpenGL 状态排序、顶点数组、顶点缓冲区对象、OpenGL 着色器语言和显示列表作为核心场景图的一部分。这些共同使 OpenSceneGraph 成为可用的最高性能图形工具包之一。OpenSceneGraph 还支持轻松自定义绘图过程,例如在场景图顶部实现连续细节层次 (CLOD) 网格(请参阅虚拟地形工程和 Delta3D)。

生产力

核心场景图封装了大部分 OpenGL 功能,包括最新的扩展,提供渲染优化(如剔除和排序)以及一整套附加库,使开发高性能图形应用程序成为可能。应用程序开发人员可以自由地专注于内容以及如何控制该内容,而不是低级编码。

将 Performer 和 Open Inventor 等已建立的场景图中吸取的经验教训与设计模式等现代软件工程方法相结合,以及开发周期早期的大量反馈,可以设计出一个干净且可扩展的库。这使得用户可以轻松采用 OpenSceneGraph 并将其与自己的应用程序集成。

数据库加载程序

对于读取和写入数据库,数据库库 (osgDB) 通过可扩展的动态插件机制增加了对各种数据库格式的支持 - 该发行版现在包括 55 个单独的插件,用于加载各种 3D 数据库和图像格式。

3D数据库加载器包括COLLADA,LightWave(.lwo),Alias Wavefront(.obj),OpenFlight(.flt),TerraPage(.txp),包括多线程分页支持,Carbon Graphics GEO(.geo),3D Studio MAX(.3ds),Former(.pfb),AutoCAd?(.dxf),雷神之锤角色模型(.md2)。Direct X (.x) 和 Inventor Ascii 2.0 (.iv)/ VRML 1.0 (.wrl)、Designer Workshop (.dw) 和 AC3D (.ac) 以及本机 .osg ASCII 格式。

图像加载器包括 .rgb、.gif、.jpg、.png、.tiff、.pic、.bmp、.dds(包括压缩的 mip 映射图像)、.tga 和 quicktime(在 OSX 下)。

还可以通过 freetype 插件加载全系列的高质量抗锯齿字体,也可以通过 .txf 插件加载基于图像的字体。

用户还可以通过配套项目 (VirtualPlanetBuilder) 生成大规模地理空间(多 GB)地形数据库,并使用 OpenSceneGraph 的本机数据库分页支持来查看这些数据库。

节点套件

场景图还具有一组 Node Kit,它们是单独的库,可以与应用程序一起编译或在运行时加载。 OpenSceneGraph 发行版提供的 NodeKit 包括:

  • osgParticle - 用于粒子系统
  • osgText - 用于高质量的抗锯齿文本
  • osgFX - 特效框架
  • osgShadow - 影子框架
  • osgManipulator - 3d 交互式控件
  • osgSim - 以视觉模拟为中心的效果
  • osgTerrain - 地形渲染
  • osgAnimation - 角色和刚体动画
  • osgVolume - 高质量的体积渲染(使用 Dicom 插件支持医学数据集)

可移植性

核心场景图被设计为对任何特定平台的依赖性最小,只需要标准 C++ 和 OpenGL。这使得场景图可以快速移植到各种平台上 - 最初是在 IRIX 上开发的,然后移植到 Linux,然后是 Windows,然后是 FreeBSD、Mac OSX、Solaris、HP-UX、AIX、 PlayStation 2,甚至 iOS 和 Android!

核心场景图库完全独立于窗口系统,方便用户在上面添加自己的窗口特定库和应用。在 OpenSceneGraph 发行版中,osgViewer 库在 Windows (Win32)、Unices (X11) 和 OSX (Carbon) 下提供本机窗口支持。osgViewer 库还可以轻松与其他窗口工具包集成,例如 Qt、GLUT、FLTK、SDL、WxWidget、Cocoa 和 MFC。OpenSceneGraph 发行版中包含与这些工具包集成的示例。

可扩展性

场景图不仅可以在便携式设备上运行,还可以运行到高端多核、多GPU系统和集群。这是可能的,因为核心场景图支持 OpenGL 显示列表和纹理对象的多个图形上下文,并且剔除和绘制遍历旨在在本地缓存渲染数据,并几乎完全将场景图用作只读操作。这允许多个剔除-绘制对在绑定到多个图形子系统的多个 CPU 上运行。对多图形上下文和多线程的支持都可以通过 osgViewer 开箱即用 - 发行版中的所有示例都可以运行多线程和多 GPU。

多语言支持

OpenSceneGraph 的 Java、Lua 和 Python 绑定可作为社区项目使用。

代码

github地址:OpenSceneGraph - Github

Windows预编译文件:OBJEXX

扩展

OSG中国官网:OSGChina.org


OSG入门教程05:框架介绍
https://blog.jackeylea.com/osg/intro-of-osg/
作者
JackeyLea
发布于
2024年3月15日
许可协议