10.1 高度图
本章你将学习如何从高度图生成三维地形。地形是一种表示室外环境的好方法,而有效率的生成地形的方法是使用高度图。要产生照片效果的地形,你还要学习如何在渲染地形时使用多纹理和法线映射。
在本章最后你还要创建一些辅助方法用来查询地形上的点的高度,并在地形和射线间进行碰撞检测。
高度图
高度图是存储地形高度信息的二维贴图,它们通常是8位的灰度图,图像上的每个点存储地形对应位置的高度。图10-1是一张高度图的例子。
图10-1 高度图
要从高度图创建一个地形,你需要创建一个与高度图相同大小的顶点网格,并使用高度图上每个像素的高度值作为顶点的高度。例如,你可以使用一张6×6像素分辨率的高度图生成一个6×6大小的顶点网格。
网格上的顶点不仅包含位置,还包含诸如法线和纹理坐标的信息。图10-2展示了一个在XZ平面中的6×6大小的顶点网格,每个顶点的高度对应在Y坐标上。
图10-2 创建在XZ平面上的6×6顶点网格在顶点网格
你应定义相邻顶点的距离(水平和垂直)。这个距离在图10-2中用“Block Scale”表示。这个距离小会使顶点间的高度过渡平滑但减少了网格大小,这个距离大能使网格尺寸变大,但顶点间的过渡会变得陡峭。如果两顶点间的距离是1米,那么所生产地形的大小就是25平方米。(译者注:原文是255×255m2,怀疑是笔误)
由于高度图通常是一张8位灰度图,它的高度值变化范围是在0和255之间,其中0 (黑色)表示最低高度而255 (白色)表示最大高度。你可以使用一个缩放值增加这个间隔,用这个缩放值乘以默认高度值,增加其范围,这样可以增加高度范围,但会使两个高度之间的误差增大。
图10-3展示了从图10-1的高度图中生成的三维地形,上图是wireframe而下图是solid 。
注意:要渲染如图10-3所示的地形,需要为每个顶点计算法线和纹理坐标,这样才能产生正确的光照和纹理。
图10-3 从高度图生成的地形,上图是wireframe下图是solid
创建高度图
可以从不同途径获得高度图。你可以在Internet上下载各种各样的高度图,包括真实地方的高度图(如城市等)。因为高度图是一张灰度图像,你也可以使用任何一个图形编辑器制作自己的高度图。还有些工具可以通过自定义参数自动产生高度图。产生高度图最简单最快的方法是使用诸如Terragen(http://www.planetside.co.uk/terragen/)的工具软件。Terragen可以根据自定义参数(如地形大小、真实程度、光滑程度、冰川、山谷等)生成高度图。Terragen对非商业应用是免费的。艺术家也可以改进从Terragen生成的高度图。
另一个可以生成高度图的工具是EarthSculptor(http://www.earthsculptor.com/)。EarthSculptor还内置了地形的3D建模工具,可以从地形模型中生成高度图。
高度图文件格式
你使用的高度图文件格式是RAW,这个格式不包含诸如图像类型和大小信息的文件头,所以易于被读取。RAW文件只是简单的二进制文件,只包含地形的高度数据。在一个8位高度图中,每个字节都表示顶点的高度。
发布时间:2009/4/16 下午4:30:29 阅读次数:10840