我要发帖 回复

正式会员

11

主题

65

积分

0

专家分

:

私信
发表时间 : 2007-9-26 00:48:21 | 浏览 : 2632    评论 : 3
初入3D领域, 写一下自己的学习笔记,很久没写过文章了,不当之处还请谅解。

基本上所有的3D课程或讲座都会提到 Scene Graph(简称SG), 它是所有现代3D引擎和3D软件的设计核心之一,在很多著名的商业软件及游戏中都有应用,例如 3D MAX, Maya, AutoCAD, Adobe Illustrator, and CorelDRAW 等等. VRML, Delta3D, OSG, OpenSG, Java3D 等其核心也是Scene Graph。

那么SG到底是什么?为什么要使用呢?OpenGL基于硬件的API等是作为底层图形硬件API而设计开发的,其任务是创建一个应用层以支持不同的图形硬件。为了便于硬件抽象,同时具有灵活和高性能,这一层必须尽可能设计的很薄。但由于这一应用层做的很薄,使得上层的3D开发而变得复杂,也就是说每个3D物体必须一个点一个点或者一个面一个面的定义,其它例如光源,相机,材质等等定义起来一样很复杂,其并不具有组织和遗传特性。这就强烈需要一个中间过渡层,而通过 Scene Graph (SG)可以很好的解决这一问题,构建一个灵活而具有遗传特性的组织结构。

简单的讲,SG是一种数据结构,一种有向非循环图(DAGs,directed acyclic graphs),经常用于计算机图象处理。其为一种树状结构并具有一些经典图元,节点,树枝等(感兴趣的朋友可以查看一些图论和拓朴学的书)。一个SG树必须至少具有一个根节点,可以具有很多子节点。

节点在SG中用于组织和描述3D物体,因此非常重要。不同的SG模型具有不同的节点类型,一般归纳起来通常有下面几种。

-几何节点(Leaf-Node):包含基本的几何数据,用于描述3D物体的外形轮廓。
-群节点(Group-Node):用于逻辑上组织或归类多个3D物体。
-变换节点(Transform-Node):用于移动或旋转,变形3D物体,通常在大多数SG应用实例中,也是群节点。
-外观节点(Appearance-Node):用于描述3D物体的外观,如纹理,材质,光面反射等。
-全局节点(Global-Node):用于描述整个场景的渲染效果,如光线等。
-非虚拟节点:不用于3D渲染,而用于别的效果,如声音,音乐等。
-动作节点(Action-Node):用于用户交互或者动画的节点。

001.jpg

对于图论里说述的抽象图而言,基本的运作方法就是遍历(Traversal),简单说就是按照一定方法查看节点信息。而对于有向非循环图(DAGs)这种方法通常采用的标准是宽度第一(breadth-first-traversal)和深度第一(depth-first-traveral),在SG的遍历过程中将对便利的每个节点采取相应的操作。通常这些操作包含有计算Bounding Box, 计算Transformation Matrix,事件发送,节点查询,数据写入,执行Callback等等。

002.jpg

按照PHIGS规范(Programmer’s Hierarchical Interactive Graphics System),遍历是通过一个形象话的定义-访问者(Visitor)来实现的。在计算机图形学中存在一些经典问题如渲染(Rendering),剪切(Frustrum-Culling),动画(Animation),碰撞检测(Collision-Detection),拾取(Picking)等,都可以通过特殊的Visitor来实现。关于Visitor的实现模版,在Gamma先生的著作Design Patterns中有详述,感兴趣的朋友可以去查看。

而OSG中的三大遍历阶段(Update-Cull-Draw)都是通过特殊的Visitor实现的,由于大家对这三大遍历阶段如何工作都有了解,所以这里就不做介绍了。总之SG在3D图形学的应用中非常重要,希望上面讲的能对大家有所帮助,错误和不当的地方还望指出,互相学习共同提高。

[ 本帖最后由 Alexsander 于 2007-9-26 12:51 AM 编辑 ]

最近VR访客

FlySky 评论于2007-9-26 01:02:06
不错~看来楼主对3D理论理解很有见解~~~

基本上3D中的场景都是这样的~~

OSG中国官方网站:http://www.osgChina.org
OSG中国官方讨论区:http://bbs.osgChina.org

OSG专业群-OSG地形研究者 49668412
      OSG地形专业研究 45763709
FlySky 评论于2007-9-26 01:03:35
如果有时间的话,还请楼主多写些原创的作品出来,大家共同学习~~~

期待,,,,,呵呵~~~

OSG中国官方网站:http://www.osgChina.org
OSG中国官方讨论区:http://bbs.osgChina.org

OSG专业群-OSG地形研究者 49668412
      OSG地形专业研究 45763709
obuil 评论于2007-9-26 08:45:09
不错的东西,支持原创

那么比如vega prime使用的vsg引擎 和 ogre中也有node的概念
ogre本人觉得也应该属于Scene Graph实现

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2021-10-26 01:11 AM

返回顶部