现在的位置: 首页 > 综合 > 正文

Scene Management – Scene Graph

2011年09月19日 ⁄ 综合 ⁄ 共 1445字 ⁄ 字号 评论关闭

Scene Graph故名思意就是场景图,或者说是用来组织场景的一种“图”数据结构,通常是以逻辑关系(比如整体-部分)划分数据,当然也有按照其它关系(比如空间关系,状态等)划分数据的。其特点是都是层次结构,层次结构的好处是某个层次的数据的规模相比整体数据能大规模衰减,缩小规模当然能提高效率。常见的Scene Graph实现有有向非循环图(DAG),无向非循环连通图(UDCG Tree)等结构。

 

来看看使用SG的好处是什么,先来看看别个的Scene Graph实现。

 

WildMagic (ver 1.07)

 

特点:

  • 场景图的结构方面:以Tree来实现,即Node0-1Parent Node0-*Child Node
  • 优点:使用Tree,非常简洁明了,方便Traverse,从上至下,从下至上。
  • 缺点:NodeGeometry共同继承自Spatial,容易造成基类Spatial的膨胀,无论是成员还是接口,实际上有些NodeSpatial属性不多,象Light
  • 缺点:使用Tree,造成某些Nodeshare上麻烦,比如Geometry EntityShare,类GeometryParent最多只有一个,如果想共享Geometry,必须生成多个Geometry挂到不同的Node下。
  • 几何实体与场景图的关系:Geometry Entity不是Node,挂在Node
  • 如何裁剪Cull:包含BVH
  • 渲染状态的处理:不支持State Sort
  • 其它细节:
  • Transform不是Node
  • LightNode
  • Camera 不是Node

 

 

OSG (ver 2.8.1)

特点:

  • 场景图的结构方面:以DAG来实现,Node0-*Parent NodeGroup Node 0-*Child Node
  • 优点:使用DAG,能方便的共享Node,易于扩展。比如:Geometry的共享。
  • 缺点:包含多个Parent Nodes的时候不方便Traversal
  • 几何实体与场景图的关系:Geometry Entity不是Node,挂在Node
  • 如何裁剪Cull:包含BVH
  • 渲染状态的处理:支持State Sort,支持State Cache
  • 优点:State Sort,相同State Set的一块渲染,减少渲染State切换的开销。
  • 优点:State Cache,在State有必要的时候才去更新,减少State频繁的切换和查询。
  • 其它细节:
  • TransformNode
  • 优点:Transform作为NodeShare Transform Data,减小了Node的大小。

 

  • LightNode
  • Camera Node

 

 

OGRE (ver: v1-4-7)

 

 

特点:

  • 场景图的结构方面:以Tree来实现,以Tree来实现,即Node0-1Parent Node0-*Child Node
  • 优点:使用Tree,非常简洁明了,方便Traverse,从上至下,从下至上。
  • 几何实体与场景图的关系:Geometry Entity不是Node,挂在Node下,Geometry可以方便的被不同Node共享。
  • 如何裁剪Cull:包含BVH
  • 渲染状态的处理:支持State Sort
  • 优点:上层支持Render StrategySort,底层支持Material/Texture NameSort
  • 其它细节:
  • TransformNode
  • 优点:Transform作为NodeShare Transform Data,减小了Node的大小。

 

  • LightNode
  • Camera Node

抱歉!评论已关闭.