对于3D图形应用,我们经常使用场景图将元素组织成组和节点。场景图是一棵树。
但是为了提高渲染效率,我们还需要使用空间数据结构,如八叉树、R-树等。
我想知道现代系统是如何将这两者结合在一起的?有什么推荐的方法吗?
发布于 2013-08-18 05:11:52
我想知道现代系统是如何将这两者结合在一起的?有什么推荐的方法吗?
这真的取决于情况,我不认为有一个通用的方法来做到这一点。
有时使用不同的分区结构是一个好主意,例如,将对象分解为逻辑上有意义的对象的简单场景图用于动画,而只看到三角形汤的BVH用于渲染。
一个系统可以有不同的工具;它们中的每一个都使用最方便的结构,如用于关卡设计工具的BSP,用于光照地图计算的kd-tree,用于实时渲染封闭环境的门户,然后在开放空间中使用八叉树。
为不同的事情组合相同的空间分区结构,比如碰撞和渲染,可以提高性能并减少内存。然而,在现代系统中,好的组合经常会丢失,因为系统使用不同的中间件,其中一些没有公开其分区结构并将其保留在内部。
要构建一个好的系统,研究目标应用程序是很重要的,在复杂性、可重用性、内存和性能之间找到一个好的折衷是很重要的。最重要的是,抽象是拥有灵活和健壮的系统的基础。
https://stackoverflow.com/questions/18289008
复制相似问题