对于3D图形应用程序,我们经常使用场景图将元素组织成组和节点。场景图是一棵树。
但是为了提高效率,我们还需要使用像Octree,R-Tree等空间数据结构。
我想知道现代系统如何将这两者结合在一起?有推荐的方法吗?
答案 0 :(得分:1)
我想知道现代系统如何将这两者结合在一起?是 有推荐的方法吗?
这实际上取决于具体情况,我认为没有一种通用的方法可以做到这一点。
有时使用不同的分区结构是一个好主意,例如将一个对象分解为具有逻辑意义的对象的简单场景图用于动画,而只看到三角形汤的BVH用于渲染。
系统可以有不同的工具;它们中的每一个都使用最方便的结构,如BSP用于关卡设计工具,kd树用于光照地图计算,门户网站用于实时渲染的封闭环境,然后是开放空间中的八叉树。
为不同的事物组合相同的空间分区结构,如碰撞和渲染可以提高性能并减少内存。然而,在现代系统中,通常会错过良好的组合,因为系统使用不同的中间件,其中一些不暴露其分区结构并将其保持在内部。
要构建一个好的系统,研究目标应用程序很重要,在复杂性,可重用性,内存和性能之间找到一个很好的折衷方案很重要。最重要的是,抽象是拥有灵活而强大的系统的基础。