什么是稀疏的体素八叉树?

pde*_*eva 33 graphics voxels

我已经阅读了很多关于稀疏体素八叉树在未来图形引擎中的潜在用途.

但是我无法找到有关它们的技术信息.

我理解体素是什么,但是我不知道稀疏的体素八叉树是什么,或者它们如何比现在使用的多边形技术更有效.

有人可以向我解释或指出对此的解释吗?

Óla*_*age 27

这是关于此主题的id软件的片段.

id Tech 6将使用更先进的技术,该技术建立在MegaTexture理念的基础上,并虚拟化几何体和纹理,以获得相当于纹理元素的独特几何体:稀疏体素八叉树(SVO).

它通过光线投影存储在八叉树中的体素(而不是三角形)表示的几何体.

目标是能够将部分八叉树流式传输到视频内存中,沿着树向下进一步向下移动以获得更多细节,并为更多对象使用更高级别的更大体素,从而提供自动的细节级别(LOD)系统同时用于几何和纹理.

另外这里有一个纸这一点.

在这篇伟大的博客文章中找到更多信息.

好吧,单独的体素不是那么有趣,因为对于任何合理详细的模型,你将需要极大量的体素(如果使用均匀的网格).

因此,需要一个分层系统,它将我们带到八叉树.八叉树是一种非常简单的空间数据结构,它将每个节点细分为8个同样大的子节点.

稀疏八叉树是八叉树,其中大多数节点都是空的,类似于离散化微分方程时得到的稀疏矩阵

  • 通过插入正交的3个平面来细分八叉树节点,每个平面垂直于三个基矢量x,y和z中的一个,并且穿过被分割的体积的中心(对于均匀的八叉树).由3个正交平面划分的体积具有8个子体积. (11认同)

小智 20

一个八叉树有8个邻居,因为如果你想象一个正方形,那就被切成4个相等的四分之一

______________
|     |      |
|     |      |
|_____|______|
|     |      |
|     |      |
|_____|______|
Run Code Online (Sandbox Code Playgroud)

然后它将是一个"四边形"(四)树.

但在3个维度中,你有自己,一个立方体,而不是一个正方形,所以水平,垂直和沿Z轴切割它,你会发现8块而不是4块像这样

    _____________
   /     /     / |
  /-----/-----/  |
 /_____/_____/ | |
 |     |     | |/|
 |-----|-----|/| |
 |     |     | |/
 |_____|_____|/
Run Code Online (Sandbox Code Playgroud)

希望自从...

是什么让SVO与众不同,它存储体素信息,这是一个空间点,具有颜色,正常等属性.

SVO背后的想法是忽略三角形和纹理的需要,将它们放在一个包含体素三角形壳体(模型)的单个SVO中,并将其表面纹理全部放在一个对象中.

这里需要八叉树的原因是,否则统一的网格结构将需要很多内存来供现有的图形卡处理.

所以使用SVO可以实现一种Mip-Mapped 3D纹理.

MipMapping基本上是相同的图像,但是在不同的尺度上,一个具有更多细节,一个具有最少的细节(但从远处看起来非常相似)

那种靠近物体的方式可以从SVO流出更多的细节,而更多的物体流更少的细节......也就是说,如果你使用的是Ray-Casting ..光线越远离相机,我们就越少挖掘我们的Mega - 纹理/ SVO

但是,如果你认为盒子外面就像"Euclideon"的"无限细节"一样,你只需使用平截头体切片和平面/ aabb交叉点,用我们切片广告牌的投影UV来找到屏幕上的每个纹素颜色,反对宽度*高度像素,射出光线,与nvidia的天真"光束优化".

PS(关于主题的分类):对于那些不了解欧几里得怎么做的人,我相信这是最实用的解决方案,我有理由支持它(他们不使用光线投射)

他们拥有的最大的谜团,不是渲染,而是存储他们的数据.RLE根本不会削减它......因为一些体积/体素数据可能更随机,而且RLE无用的"固体"更少,也压缩对我来说通常需要至少5个字节.他们说他们通过压缩输出了大约一半的内容.所以他们使用的是2.5字节,这与现在的Triangle大致相同