首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是稀疏体素八叉树?

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

Stack Overflow用户
提问于 2009-06-12 09:48:45
回答 5查看 33.1K关注 0票数 32

我读了很多关于稀疏体素八叉树在未来图形引擎中的潜在用途的文章。

然而,我一直无法找到关于它们的技术信息。

我知道什么是体素,但是我不知道稀疏体素八叉树是什么,也不知道它们比现在使用的多边形技术更有效。

有没有人能给我解释一下或者给我指个说法?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-09-04 10:44:20

一份名为《Efficient Sparse Voxel Octrees Analysis,Extensions,and Implementation》的NVIDIA白皮书对其进行了非常详细的描述here

票数 8
EN

Stack Overflow用户

发布于 2009-06-12 09:52:20

这里有一段关于id Software on this subject.的片段

id Tech6将使用一种更先进的技术,该技术建立在MegaTexture思想的基础上,并将几何体和纹理都虚拟化,以获得与纹理元素等效的独特几何体:稀疏体素八叉树(SVO)。

它通过对存储在八叉树中的体素(而不是三角形)表示的几何体进行光线投射来工作。

目标是能够将八叉树的某些部分流式传输到视频内存中,沿着树向下为附近的对象提供更多细节,并对更多对象使用更高级别、更大的体素,这为几何体和纹理同时提供了自动细节级别(LOD)系统。

也就是here's a paper on this.

在此great blog entry.中找到更多信息

嗯,体素本身并不是那么有趣,因为对于任何合理详细的建模,你都需要非常大量的体素(如果使用统一的网格)。

因此,需要一个层次化的系统,这给我们带来了八叉树。八叉树是一种非常简单的空间数据结构,它将每个节点细分为8个相等大的子节点。

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

票数 26
EN

Stack Overflow用户

发布于 2011-11-15 10:31:24

一棵八叉树有8个邻居,因为如果你想象一个正方形,它被切成4个相等的四分之三,如下所示

代码语言:javascript
复制
______________
|     |      |
|     |      |
|_____|______|
|     |      |
|     |      |
|_____|______|

那么它将是一个“四”(四)-tree。

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

代码语言:javascript
复制
    _____________
   /     /     / |
  /-----/-----/  |
 /_____/_____/ | |
 |     |     | |/|
 |-----|-----|/| |
 |     |     | |/
 |_____|_____|/

希望这使自..。

SVO的独特之处在于,它存储了体素信息,体素信息是空间中的一个点,具有颜色、法线等属性。

SVO背后的思想是忽略三角形和纹理的需求,将它们放在一个SVO中,该SVO包含Voxelized Triangle Hull(模型)及其表面纹理,所有这些都在一个对象中。

这里需要八叉树的原因是,否则统一的网格结构将需要太多的内存来处理现有的显卡。

因此,使用SVO允许一种Mip映射的3D纹理。

MipMapping基本上是相同的图像,但比例不同,一个细节更多,而最新的细节最少(但从远处看非常相似)

这样,附近的对象可以更详细地从SVO流出,而更多的对象可以更少的细节流出。也就是说,如果你使用光线投射..光线离相机越远,我们对Mega-Texture/SVO的研究就越少

但是,如果你像"Euclideon“的”无限细节“那样跳出框框思考,你只会使用平截体切片和平面/aabb交叉点,用我们切片广告牌的投影UV在屏幕上找到每种纹理像素的颜色,而不是宽度*高度像素,射出光线,使用nvidia天真的”光束优化“。

PS(有点离题):对于那些不了解Euclideon是如何做的,我相信这是最实用的解决方案,我有理由支持它(他们不使用光线投射)

他们最大的谜团,不是渲染,而是存储他们的数据。RLE根本不能解决这个问题..因为一些体积/体素数据可能更随机,在RLE没有用处的情况下不那么“可靠”,对我来说,压缩通常需要至少5个字节才能压缩成更少的数据。他们说他们通过压缩输出了大约一半的输入内容。所以他们使用了2.5字节,这与现在的三角形大致相同。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/985893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档