揭开“大量细节的神秘面纱”


17

就在最近,试图在Unity中实现分块的细节系统。我将生成四个网格平面,每个平面都有一个高度图,但我想目前这并不是太重要。在阅读完有关此技术的内容后,我有很多疑问,我希望这不是一口气就能提出的,但是我非常感谢有人帮助我理解这种技术。

1:我无法理解在块状LOD管道的哪一点网格被分割成块。是在初始网格生成过程中执行此操作,还是执行此操作的单独算法?

2:我知道四叉树数据结构用于存储块状LOD数据,我想我有点遗漏了点,但是四叉树是否为每个细分级别存储了顶点和三角形数据?

3a:通常如何计算相机距离。在阅读有关四叉树的知识时,经常会提到与Axis对齐的边界框。在这种情况下,每个块都会有一个碰撞边界框来检测相机或播放器是否在附近?还是有更好的方法呢?(也许是射线广播?)

3b:大块自己计算相机距离吗?

4:每个块都具有相同的“分辨率”。例如,在顶层,网格将为32x32,每个细分节点也将为32x32。下面的例子:

分段LOD的示例


如果有人知道对于程序行星更好的LOD方法,那也将很有趣。
尤金·尤金

我想您已经看过Thatcher Ulrich的原始SIGGRAPH论文和相关程序?tulrich.com/geekstuff/chunklod.html
drxzcl 2012年

我有一点,它非常有用,但是没有涉及细节或实现方法。谢谢
Caius Eugene

1
这里有许多关于行星LOD的选择。vterrain.org/LOD/spherical.html
OriginalDaemon

Answers:


12

1:我无法理解在块状LOD管道的哪一点网格被分割成块。是在初始网格生成过程中执行此操作,还是执行此操作的单独算法?

不要紧。例如,您可以将分块集成到网格生成算法中。您甚至可以动态地执行此操作,以便使用类似等离子的优化算法动态添加较低的级别(例如,随着玩家靠近)。您还可以根据艺术家输入或高程测量数据生成高分辨率网格,并在资产最终确定时将其汇总到所有LOD块中。或者您可以混合搭配。这实际上取决于您的应用程序。

2:我知道四叉树数据结构用于存储块状LOD数据,我想我有点遗漏了点,但是四叉树是否为每个细分级别存储了顶点和三角形数据?

不必要。该树仅存储有关几何图形及其渲染方式的信息。这可能意味着在每个树节点处都有一个顶点/面列表。在当今时代,更现实的是,您将网格/实例的句柄存储在GPU内存中。

3a:通常如何计算相机距离。在阅读有关四叉树的知识时,经常会提到与Axis对齐的边界框。在这种情况下,每个块都会有一个碰撞边界框来检测相机或播放器是否在附近?还是有更好的方法呢?(也许是射线广播?)

一个非常便宜和容易的选择是使用到块的中心点的距离,然后对其进行校正。您知道该距离总是被低估了:如果中心点位于distance Z,则意味着一半的块比该距离更近。但是,我们不知道的是方向。如果我们正在w边上看一个宽度很宽的块,则该块的最接近位将在distance处Z-w。但是,如果我们先查看块,则最接近的位将在distance Z-sqrt(2)*w。如果您可以忍受这种不确定性(几乎总是可以),那么您就完成了。请注意,您还可以使用基本三角函数校正视角。

我更喜欢计算从相机到块的绝对最小距离,以最大程度地减少伪像。实际上,这意味着进行点平方距离测试。然后,要计算到中心点的距离还需要做更多的工作,但这并不意味着您每帧都需要做大量的工作。

如果您可以利用物理引擎来做到这一点,那么一定可以这样做,但是您确实想更多地从“距离查询”而不是“冲突”考虑。

3b:大块自己计算相机距离吗?

这实际上取决于引擎的设计。我建议保持叶子相对较轻。根据您的平台,每帧有数千个地形块执行自己的更新的呼叫开销会严重影响性能。

4:每个块都具有相同的“分辨率”。例如,在顶层,网格将为32x32,每个细分节点也将为32x32。

它们不是必须的,但是如果所有块都占用相同数量的空间,则很方便。然后,您可以以“块”为单位进行(GPU)内存管理。如果一种分辨率是另一种分辨率的倍数,则更容易删除/隐藏两个大小不同的块之间的接缝,因为它们共享更多的顶点。(例如:32x32和64x64比32x32和57x57更易于管理)(感谢Guiber!)。如果您有充分的理由更改块的几何尺寸,则一定要这样做。


2
如果一种分辨率是另一种分辨率的倍数,则更容易删除/隐藏两个大小不同的块之间的接缝,因为它们共享更多的顶点。(例如:32x32和64x64比32x32和57x57更易于管理)
Alayric 2012年

辉煌的答案,它清除了很多东西。特别是很多实现取决于引擎的功能。对于3a,我仍然不确定何时触发距离查询,这是我认为声音很重的两个实现,因此我将对此进行更多研究。谢谢
Caius Eugene

1
@CaiusEugene:我认为您正在考虑距离确定。我在第3a点的答复中添加了一种非常便宜,非常基本的算法,可以帮助您入门。
drxzcl 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.