澄清八角树以及它们如何在Voxel世界中发挥作用

Gop*_*gop 1 opengl lwjgl voxel multidimensional-array octree

我读到了关于八叉树的信息并且我并没有完全理解它们在一个体素世界中如何工作/被实现,其中八叉树的目的是通过将重复的体素连接到一个大的"体素"来降低您将渲染的体素的数量.

以下是我想澄清的问题:

  • 您将使用什么类型的数据结构?如何将体素的三维阵列转换为具有不同大小的体素的阵列,这些体素在阵列中占据多个位置?
  • 什么是节点以及它们用于什么?
  • 八叉树是否连接体素,因此只有方形或者它可以是矩形或L形或整个Y列的体素或什么?
  • 八叉树真的能提高体素游戏的性能吗?如果是这样通常是多少?

Mad*_*Tom 5

快速回答:

  • 树:
    每个节点有8个子节点,左上角,左上角等等,直到某个级别
    此代码可能变得非常复杂,特别是如果体素可以在运行时更改.
  • 体素的类型(颜色,材料,项目列表)
  • 是的.仅限立方体
    更具体地说是1x1,2x2,4x4,8x8等.它必须是整个节点.
    如果你真的想要你可以定义某种模式,但它不再是octdtree.
  • 是的,但这取决于你的数据.想象一下,分别描述256个相同的块,或描述一次(如Minecraft中的空气)

我首先尝试理解四叉树.你可以在纸上做,或用它做一个测试程序.如果你进行实验,你会自己回答这些问题