4

我一直在思考这个问题……许多 3d 引擎支持使用四叉树、LOD 的高级地形渲染……所有您期望的功能。但是我见过的每个引擎都从高度图加载高度数据......灰度位图。我只是不明白这有什么用 - 高度图中的每个点都可以有 256 个值之一。但是,如果您想为珠穆朗玛峰建模怎么办?1米甚至更大的细节?这远远超出了 256 的范围。当然,我知道您可以实现自己的地形格式来实现这一点,但我就是不明白为什么高度图尽管有很大的局限性,但仍被如此广泛地使用。

4

6 回答 6

6

高度图非常轻量级,加载速度非常快,并且可以通过程序相当容易地生成。他们还使用了相当小的内存空间。

它们被大量使用,因为它们简单快捷,并且可以很好地处理许多场景。话虽如此,它们并不是对所有场景都有用,也不是完全通用的地形格式。

于 2010-06-10T22:05:50.717 回答
5

从显示图形的角度来看,通常重要的最大精度是(简单来说)最终显示器1中的单个像素。考虑到当前典型显示器的分辨率,为高度图再添加几或三位会很好——但对于大多数几何图形来说,这并不是真正必要的。特别是,即使单个像素几乎定义了您经常使用的最大精度,但绘制珠穆朗玛峰使其高度实际上有两三个像素的错误对于大多数人来说并不是一个主要问题时间。

归根结底:您想要使用一米的精度来绘制珠穆朗玛峰高度图的想法完全是一个错误——对这种精度水平的需求(甚至使用)是正确的。稀有和不存在之间的界限。同时,使用相对密集的格式(例如每像素一个字节)通常意味着相当多——更少的存储空间和更少的带宽导致更快的显示。

  1. 从技术上讲,使用抗锯齿,亚像素分辨率可以而且确实意味着一些东西——但是,虽然它对于平滑线等看起来很锯齿状的东西很重要,但对于像获得正确的山高度这样的东西,它并不重要意味着几乎这么多。事实上,就大多数人大部分时间的关心而言,这完全没有意义。
于 2010-06-10T22:22:59.390 回答
3

高度图优点:

  1. 从远处看就像真实的地形。
  2. 假设 z 向上,很容易计算任意 x 和 y 的高度。这对于移动玩家、碰撞检测和物理非常有用。
  3. 易于在绘画程序中编辑。

高度图缺点:

  1. 当有大的平坦区域(恒定高度)时,内存使用效率低下。
  2. 当有大的平坦区域时,使用渲染硬件效率低下。
  3. 不能代表陡峭或悬垂的地形。
  4. 只能表示正方形区域。
于 2010-06-10T22:22:14.937 回答
0

但是,如果您想为珠穆朗玛峰建模怎么办?

你会用别的东西。显然,如果您遇到的每个引擎都使用高度图,那么它对它们来说就很好。如果简单的解决方案适合您,则无需使事情过于复杂。

于 2010-06-10T22:08:57.130 回答
0

高度图的另一个优点是,通常它避免了使物理和运动方面更加困难的悬垂问题。但即使使用高度图,您也可以拥有其他可能产生悬垂的几何图形。

此外,只要高度变化不会太大而导致拉伸,纹理可以更简单。

于 2010-06-10T22:12:24.017 回答
0

高度图具有直接硬件支持(纹理)的优势,并且可以使用现有的绘画工具(甚至是专门的)进行绘制。

当然,根据高度图所存储信息的格式,有些渲染看起来并不应该是这样,而是因为高度图实际上是在错误的情况下使用的。

作为增强,高度图像素可以存储在 16 位浮点数(半浮点数)或 32 位浮点数中,允许使用具有固定精度的 8 位像素具有更高的范围和精度。

于 2010-06-10T22:28:11.413 回答