- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.1场景图形初步
那些没有受过未知物折磨的人,
不知道什么是发现的快乐。
——克劳德·贝尔纳
本章将介绍虚拟现实和场景图形的概念,进而以此为基础,深入讲解三维渲染引擎OpenSceneGraph(以下简称OSG)的历史和组成,了解其性能优势和体系结构。通过对本章的学习,将有助于快速掌握虚拟现实技术、场景图形等基本概念,以及对日渐广受关注的三维实时渲染引擎OSG能够有一个初步的认识和了解。
1.1 场景图形初步
1.1.1 场景图形的概念
场景图形(Scene Graph)是一种经常用于计算机游戏和图形学相关软件的数据结构设计方法。比较典型的应用了场景图形概念的软件系统包括AutoCAD、Java3D、CorelDRAW以及本书将要详细讲解的OpenSceneGraph等。
场景图形的实现并没有一定之规,它可以用于二维或三维图形场景的逻辑关系和空间表达。最简单的场景图形实现是使用数组或者链表的结构,并按照固定的顺序依次绘制或操作这些节点。当然,有些操作可能会因此变得十分低效,例如判断鼠标是否选中了某个节点,此时应用程序同样不得不按照数组或链表的访问顺序依次对各个节点进行检查。
因此,适用于大规模场景管理的场景图形往往使用图结构(Graph Structure)或树结构(Tree Structure)来组织成一组节点集。目前多数渲染引擎均采用一种自顶向下的、分层的树状数据结构来组织空间数据集,以提升渲染的效率。
在场景树结构中,多个场景图形中的子节点往往只有一个父节点,并且可以继承父节点的多重特性;同时场景图形还提供了遍历所有子节点的访问方式。在有些系统中,子节点也可以拥有不止一个父节点,甚至可以与其他不属于同一结构的节点进行关联。与之相关的设计模式称为“组合”(Composite)模式,主要用于表达不同层次结构的分支节点(Group Node)和叶子节点(Leaf Node)。
1.1.2 具体实现:三维渲染引擎
所谓三维渲染引擎,简单地说,就是为了实现三维场景图形的结构管理和绘制而提供的一系列API的集合。它应当包含至少两个层次——构建层(Construction Layer)和交互层(Interaction Layer),前者提供了在三维空间中设计和完成所需模型的工具集,或者从外部加载复杂模型的数据接口;后者则提供对三维空间及所含模型的装配、渲染、优化和控制功能。
三维渲染引擎可以分为低阶引擎和高阶引擎两种。
(1)低阶引擎
OpenGL是跨平台的、可用于图形软件系统开发的工业标准,也是一个典型的低阶引擎;另一个典型的例子是由Microsoft开发和维护的非跨平台的DirectX引擎。OpenGL并没有为如何实现一个图形软件系统提供一个标准模型,而仅仅是一系列底层图形操作的接口,它具有跨平台的特性,并且提供了建立基本模型和渲染环境的工具集。
(2)高阶引擎
为了寻找一种基于OpenGL/DirectX且无须关注底层的实现细节的、面向对象的图形系统,一大批高层次的三维渲染引擎应运而生。其中大多数不仅支持面向对象的开发方式,并且以场景图形为基础实现了几何图形与动态行为的描述。
1.1.3 主流渲染引擎介绍
经过多年的研究和发展,基于OpenGL或DirectX实现的各种渲染引擎已经逐渐趋于成熟,一批优秀的开源和商业引擎也逐渐在市场上占据了主导地位,并越来越为企业和开发者、爱好者们所熟悉。下面介绍一些主流的三维渲染引擎及其主要特色。
(1)PHIGS
PHIGS(Programmer’s Hierarchical Interactive Graphics System)是一个起源于20世纪80年代末的三维场景图形标准,其思想为大多数后来者所继承和借鉴,但是这个工具本身已经不再被使用。
(2)Open Inventor
1992年,由Silicon Graphics(SGI)开发的IRIS Inventor(一个构架于当时的IRIS GL 3D API底层接口的场景图形系统)面世。1994年,它的继任者,也就是现在仍然广泛使用的Open Inventor诞生了,这是一个基于OpenGL开发的、跨平台的、面向对象的场景图形系统。2000年,Open Inventor宣布遵循开源协议发布,至今仍然广泛运用于各种工程和科学可视化程序中。
相关网址:/projects/inventor/。
(3)OpenGL Performer
OpenGL Performer(早期称之为IRIS Performer,或者简称为Performer)是一种使用商业协议、基于OpenGL开发的实时虚拟仿真系统,同样由SGI负责开发和维护,并可运行于IRIX、Linux以及Windows系统中。和Open Inventor有所区别
原创力文档


文档评论(0)