每日一语:
我们是人,生活在这个社会上面,所以,肯定会有这样那样的牵绊。这也是谁都无法摆脱的。但不见得所有人都可以保持清醒的认识。知道自己最最重要的事情是什么。自己该做什么,不该做什么。IT这个行业,知识更新速度极快,逆水行舟,不进则退。既然,我们都在这条大船上面,谁都不想被推下船。大风大浪中的航行,肯定避免不了,有些人肯定会掉下船。掉下船的这些人大部分都是根基不牢。或者称下盘无力。侯杰说过,勿在浮沙筑高台,高台就是再高,下面是浮沙,所以终究会倒的。
正文:
地形绘制基础:
地形网格(mesh)其实就是一系列三角形栅格,但是方格中的每个顶点都被赋予了一个高度值(即高度或海拔),这样该方格就可通过方格对应高度的平滑过度来模拟自然地形中的山脉到山谷的变化。当然,我们还需要对地形网格应用一些细致的纹理来表现沙滩,绿草如茵的丘陵和雪山。
高度图:
我们用高度图来描述地形中的丘陵和山谷。高度图其实就是一个数组,该数组的每个元素都指定了地形方格中某一特定顶点的高度值。(另外一种实现方式可能用该数组中的每个元素来指定每个三角形栅格的高度)。通常,我们将高度图视为一个矩阵,这样高度图中的元素就与地形栅格中的顶点意义对应。
高度图被保存在磁盘中时,我们通常为其每个元素只分配一个字节的存储空间,这样高度只能在区间[0,255]内取值。该范围足以反映地形中的高度变化,但在实际应用中,为了匹配3D世界的尺度,可能需要对高度值进行比例变化,这样极有可能超出上述空间。例如,如果我们在3D世界中的度量单位为英寸,0到255就不足以表达我们目标值的高度。基于上述原因,当将高度图加载到应用程序时,我们重新分配一个整形或浮点型数组来存储这些高度值。
高度图有多种可能的图形表示,其中一种是灰度图,地形中某一点的海拔越高,相应地该点在灰度图中的亮度就越大。
创建高度图:
高度图可自编程序来生成,也可用图像编辑软件来创建。此外,还可利用图像编辑软件提供的一些特殊功能比如过滤器(滤波器)等来创建一些有趣的高度图。注意,当我们创建一副图像时,便指定了一副灰度图。
一旦,完成了高度图的创建,我们需要将其保存为8位的RAW文件。RAW文件仅连续存储了图像中以字节为单位的每个像素的灰度值。这就使得这类文件的读取操作非常容易。
注意,高度信息不一定非要用RAW格式的文件来存储,可根据需要选择任意一种格式。RAW仅仅是由于读取简单。
加载RAW文件: