1

对于 3D 图形应用程序,我们经常会使用场景图将元素组织成组和节点。场景图是一棵树。

但是为了渲染效率,我们还需要使用八叉树、R-Tree等空间数据结构。

我想知道现代系统如何将这两者结合在一起?有什么推荐的方法吗?

4

1 回答 1

1

我想知道现代系统如何将这两者结合在一起?有什么推荐的方法吗?

这真的取决于情况,我认为没有通用的方法可以做到这一点。

有时使用不同的分区结构是个好主意,例如将对象分解为逻辑上有意义的对象的简单场景图用于动画,而仅看到三角形汤的 BVH 用于渲染。

一个系统可以有不同的工具;他们每个人都使用最方便的结构,例如用于关卡设计工具的 BSP、用于光照贴图计算的 kd-tree、用于实时渲染封闭环境的门户以及开放空间中的八叉树。

为不同的事物组合相同的空间分区结构,例如碰撞和渲染,可以提高性能并减少内存。然而,在现代系统中,由于系统使用不同的中间件,并且其中一些没有暴露其分区结构并保持在内部,因此经常会错过良好的组合。

要构建一个好的系统,研究目标应用程序很重要,在复杂性、可重用性、内存和性能之间找到一个很好的折衷点很重要。最重要的是,抽象是拥有一个灵活而健壮的系统的基础。

于 2013-08-17T21:11:52.400 回答