我读到了关于八叉树的信息并且我并没有完全理解它们在一个体素世界中如何工作/被实现,其中八叉树的目的是通过将重复的体素连接到一个大的“体素”来降低您将渲染的体素的数量。
以下是我想澄清的问题:
答案 0 :(得分:5)
快速回答:
我首先尝试理解四叉树。你可以在纸上做,或用它做一个测试程序。如果您进行实验,您将自己回答这些问题
答案 1 :(得分:3)
正确完成八叉树也可以帮助您进行邻居搜索,这使您可以确定一张脸是否被视为“可见”(即最终看到一块体素可见)。一旦建立了八叉树,就可以使用它来存储XYZ坐标,然后将其提取到一个阵列中。然后,您将此阵列提供给您的VERTEX缓冲区(GL解决方案需要此解决方案),然后您可以根据需要以块形式呈现(随着摄像机向前移动等)。
如果存在相同类型的Cubes,那么Octree也会在那里非常自然地崩溃Cubes变成更大的......就像俄罗斯方块那样,当你有相互“适合”的颜色/形状时...这反过来可以减少你的顶点计数和渲染你真正绘制正方形和矩形的组合如果操作正确,您将得到许多块,这些块只在顶点缓冲区中可见“面”。然后,您必须构建自己的遮挡剔除算法,然后降低对此的可见性,从而减少所需的渲染。
我在这里做了一个例子:
注意外部是如何渲染的,但是块本身一直向下到底,即使块的深度面应该相互抵消? (需要更多优化)。还要注意相机如何转动并从渲染缓冲区中移除面?