是否有场景图的替代品?

时间:2013-04-27 11:21:15

标签: opengl directx graphic scene scenegraph

场景图表让您可以推断出自己的位置 - >如果一个节点不需要渲染,那么该节点的子节点也不需要渲染。

但是,如果场景中的物体不断改变位置,它似乎可能不是最好的方法,所以你总是需要更新你的场景图。

我想知道是否有一种完全不同的降低场景复杂度的方法?

1 个答案:

答案 0 :(得分:8)

  

如果不需要渲染一个节点,则不需要渲染该节点的子节点。

事实并非如此。想想父节点只是略微偏离视野,但是孩子明显在视野范围内。

场景图形不是用于可见/不可见几何图形确定的工具。场景图管理对象之间的几何变换层次。星系→恒星→行星→卫星等。

您实际想到的不是场景图,而是 Bounding Volume Hierachies (BVH),这是一个完全不同的概念。是的,你可以将BVH与场景图数据混合在一起,而且通常都会这样做,但它们的使用方式不同。

  

但是,如果场景中的物体不断改变位置,它似乎可能不是最好的方法,所以你总是要更新你的场景图 BVH。

情况确实如此。因为BVH结构是正在进行的研究的主题,主要集中在自适应BVH修改,在那里你不必重建整个BVH只是一个子集的变化。然而,BVH本质上是搜索树结构,并且为了使搜索有效,您必须平衡搜索树,这本身可能是一项代价高昂的操作。

因此,需要在重建整棵树或平衡整棵树的成本之间进行权衡。

光明的一面曾经非常需要完美的隐形表面识别,这在软件光栅化器时代已经很久了。

我们现在生活在GPU具有大量透支储备的时代,而“更差,更好”的方法通常会产生良好的结果。一个非常好的方法是让GPU和CPU协作遍历一个非常简单,只有松散连接的BVH,基于轴对齐边界框(AABB),其中树节点重叠并且可以测试子体积的可见性通过将AABB边界面发送到GPU进行干运行渲染而不产生像素,但收集统计数据,如果实际绘制了任何边界体积,则收集多少。这是一种非常流行的方法,它可以产生非常好的效果。

相关问题