计算机图形学 - 高度图

高度图(Height Map)


1. 什么是高度图?

首先,什么是高度图(Height Map)呢?所谓高度图实际上就是一个2维数组。创建地形为什么需要高度图呢?我们这样考虑,地形实际上就是一系列高度不同的网格而已,这样数组中每个元 素的索引值刚好可以用来定位不用的网格(x,y),而所储存的值就是网格的高度(z)。正是由于这个简单的映射关系,最常见的地形生成方法都使用高度图作 为输入数据。同时,为了减小数组的尺寸,通常使用Byte类型来保存高度值,因此,地形中最低点将用0表示,而最高点使用255表示(当然,这样做可能会 出现一些问题,比如,地形中大部分区域的高度差别都不大,但是有少数地方高度差特别大时,不过大多数情况下这个系统都能运行的很好)。使用2D Byte数组的另一个好处就是我们高度图刚好可以用一张灰度位图(gray-scale bitmap) 来表示。对于位图中的每个像素来说,同样使用0~~255之间的值来表示一个灰度。这样,我们又能把不同的灰度映射为高度,并且用像素索引表示不同网格。


要从高度图创建一个地形,你需要创建一个与高度图相同大小的顶点网格,并使用高度图上每个像素的高度值作为顶点的高度。例如,你可以使用一张6×6像素分辨率的高度图生成一个6×6大小的顶点网格。


网格上的顶点不仅包含位置,还包含诸如法线和纹理坐标的信息。下图展示了一个在XZ平面中的6×6大小的顶点网格,每个顶点的高度对应在Y坐标上。



你应定义相邻顶点的距离(水平和垂直)。这个距离在上图中用“Block Scale”表示。这个距离小会使顶点间的高度过渡平滑但减少了网格大小,这个距离大能使网格尺寸变大,但顶点间的过渡会变得陡峭。如果两顶点间的距离是1米,那么所生产地形的大小就是25平方米。


由于高度图通常是一张8位灰度图,它的高度值变化范围是在0和255之间,其中0 (黑色)表示最低高度而255 (白色)表示最大高度。你可以使用一个缩放值增加这个间隔,用这个缩放值乘以默认高度值,增加其范围,这样可以增加高度范围,但会使两个高度之间的误差增大。


2. 高度图格式

你使用的高度图文件格式是RAW,这个格式不包含诸如图像类型和大小信息的文件头,所以易于被读取。RAW文件只是简单的二进制文件,只包含地形的高度数据。在一个8位高度图中,每个字节都表示顶点的高度。



  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值