鉴于学习3D地形绘制已经有一段时间了,所以想把所学过的内容重新回顾一遍。参考资料:《3D游戏编程》。
第一篇 高度图
1 高度图(Height Map)
在高度图中,高度值表现为0 ~ 255之间的明暗值。高度图技巧的使用方法就是:首先,将想要制作的三维地形制作为只包含二维高度信息的高度图,然后,利用高度图信息重新制作为三维地形(terrain)。
2 高度图生成原理
高度图的主要原理就是将二维信息转变为三维顶点信息,一般情况下,二维xy平面空间在三维图形中对应的是xz平面。其核心原理是:将二维(x ,z)坐标所对应的像素亮度值换算为三维(x, y, z)坐标中的y值,因此,大部分情况下,高度图只包含256色亮度值的黑白图片文件。【二维图形中的亮度值可用来表示三维空间中的高度值】
3 高度图实际生成代码
采用伪代码(pseudo code)实现大致的算法,具体如下:
pBits= 读取高度图文件
cx= 高度图的长度
cz= 高度图的宽度
vb= 创建顶点缓冲
p= vb->lock()
for(z= 0; z <