在SceneTree之外拥有SceneGraph的重点是什么

时间:2015-07-16 08:05:48

标签: opengl scenegraph

MDN中显示SceneGraph和SceneTree。

ST(SceneTree)本质上是SG(SceneGraph)的展开同步副本。

因为你无论如何都需要ST,因为:

  • 它提供实例,您需要保存属性

  • 您无论如何都需要遍历ST以更新转换和其他级联变量,例如可见性

即使SG提供的冗余度较低,首先要获得SG的重点是什么?

1 个答案:

答案 0 :(得分:1)

引用提出该演示文稿的人Markus Tavenrath,他被问到同样的问题:http://pastebin.com/SRpnbBEja discussion on IRC (starts ~9:30)的结果)

[我的重点]

  

一般来说,SceneGraph的一个论点是人们拥有他们的   自定义SceneGraphs实现已经需要保留它们   遗留原因和这个SceneGraph就是CPU的原因   渲染阶段的瓶颈。我的谈话的目标是展示   以GPU可以获得的方式增强传统SceneGraph的方法   瓶颈。一个非常有趣的实验是添加   OpenSceneGraph的技术......

     

除此之外,SceneGraph在数据方面更强大   操纵,数据访问和重用。即钻石的形状可以   如果你想用实例化复杂的对象,真的很强大   多个节点。我们的SceneGraph中的另一个强大功能是   属性功能将在未来用于动画   (搜索LinkManager)。使用LinkManager,您可以创建一个   连接属性的网络,让数据沿着链接流动   定义的顺序。动画缺少的是曲线对象   它可以用作动画的输入。所有这些功能都有   关于内存大小和每个对象级别的某些成本   更多内存意味着在遍历期间触摸的缓存行更多,这意味着   更多的CPU时钟用于遍历。

     

SceneTree旨在仅保留层次结构和少数层次结构   属性,必须沿着层次结构传播。这条路   节点非常轻量级,因此,如果需要,遍历是   效率很高。这也意味着提供了很多功能   SceneTree中不再提供SceneGraph。虽然随着   通过SceneTree获得的知识应该可以编写一个   SceneGraph提供了大部分的性能特征   SceneTree。

     

根据您编写的应用程序类型,您甚至可能   决定SceneTree太大你可以写你的   直接应用于像RiX这样没有的接口   层次结构,因此消除了另一层; - )。

首先,人们已经习惯使用场景图,并且存在许多自定义实现。

除此之外,scenetree实际上是一个修剪过的场景图,其中只有必要的组件,这意味着场景图对艺术家和建模者更有用,因为它更好地抽象场景。复杂属性可以是例如影响人群中每个人的外观的RNG种子。

在一个场景图中,根人员节点只有一个属性seed。它的孩子会根据种子选择精确的网格和颜色。但是在扩展的树中,用于替代发型,服装等的未使用的网格已经被修剪过了。