- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《OpenSceneGraph基本渲染理论》.pdf
OpenSceneGraph基本渲染理论
Leandro Motta Barros
Start: August 17th 02005
译:FreeSouth
1
INDEX
1.基础 4
1.1 什么是场景图 4
1.2 第二个问题:谁关心场景图? 5
1.3 一些与OSG 相关的问题 5
1.4 超级指针和OSG 6
2.两个3D Viewer 10
2.1 一个最简单的viewer 10
2.2 另一个简单的(可能有BUG )的3D Viewer 12
3 .进入StateSets 15
3.1 OpenGL-状态机 15
3.2 OSG 和OpenGL 状态 16
3.3 一个简单的(无BUG )3D Viewer 16
2
3
1.基础
在我们讨论Open Scene Graph (OSG) 之前,我们先来花一些时间来寻找一些关于个别常见有趣问题的相关线索。
1.1 什么是场景图
就如它的名字所说的一样,场景图是一个用于组织图形图像数据结构在计算机中显示的应用程序。一个通常的想法是场景
往往被分为很多的部分,而出于某种通常的目的,这些部分最终都会被组合到一场,所以,场景图就是一个代表每个结点都可
被分割与重组的图。再定义的严格一些,场景图就是一个非循环的图,所以它同时也体现出结点与结点之间的等级关系。
猜想一下,如果您渲染的场景中包含一辆卡车和一条路况还可以的马路。使用场景图的思想来体现该组织如图 1.1 所示:
图1.1
假如你按照上面的图例的渲染一个场景,然而卡车却停在了你不想让它出现的位置。从某种常理上讲,你一定会把它从某
处移到合适的位置,幸运的是场景图的结点并不代表几何关系。在这种情况下,你可以申请一个结点,该结点用来代表移动,
在场景图中体现为如图 1.2 所示:
图1.2:一个场景图,由一条路以及移动后的卡车组成
或许你一直在疑惑为什么看起来明明是树而场景图要称做一种图呢?问得好,确实例子中体现的是这种关系,然而事情总
非像例子中所述的那样。现在让我们往图中添加两个盒子,一个在卡车上,另一个在马路上。同样,为了能够使这两个盒子显
示在正确的位置,都需要在它们前面加上移动的几何结点。显而易见,在卡车上的盒子可以与卡车同时使用一个移动结点,因
此当我们移动卡车时,盒子也会跟着移动。而事实上,因为两个盒子非常相似,故不需要为它们每个盒子都创建一个结点,可
以使用一个结点而产生两次引用来达到这个目的,如图1.3 所示。在渲染其间,盒子将会被访问两次,但是分享的是同一片内存
区域,因此盒子在内存中只被加载了一次。
当然场景图的功能不只是单单处理这些简单的问题,然而对于讲清楚场景图的基本概念即:场景图是什么?已经足够了。
4
故我们现在可以把更多的时间与精力花在第二个基本且重要的问题上。
图1.3:一个场景图,由一条路,一个卡车以及一对盒子组成
1.2 第二个问题:谁关心场景图?
任何一个人,只要他需要在计算机中组织他所要渲染的场景,而这些场景在现实中又是非常复杂的,他首先要面临的是效
率问题,故明思议:需要在计算机中合理组织,高效显示的用户,关心场景图。
1.3 一些与OSG 相关的问题
根椐这一点,我们将围绕“一般”的场景图展开讨论。从现在开始,所有的例子都将会使用到 OSG 场景图,来代替传统的
移动结点,我们将会使用真的在OSG 中继承图中的类来做这些现实的事情。
每一个结点在OSG 中使用类osg::Node 来表示,非常的方便快捷。
文档评论(0)