是否有场景图的替代品?

Mai*_*ein 3 opengl directx scenegraph graphic scene

场景图使您可以推断其位置 - >如果不需要渲染一个节点,则不需要渲染该节点的子节点.

但是,如果场景中的物体不断改变位置,它似乎可能不是最佳方法,因此您总是需要更新场景图.

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

dat*_*olf 8

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

这不是真的.考虑一个父节点只是略微偏离视野,但是一个孩子明显在视野范围内.

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

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

但是,如果场景中的物体不断改变位置,它似乎可能不是最佳方法,因此您必须更新场景图 BVH.

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

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

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

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