地形绘制比较简单,各种3d引擎实现基本相似,
引入一个高度图,用颜色深浅来表示高度。
依次扫描,根据高度,生成相应的三角形,最终形成地形
鬼怪引擎,将地形场景作为八叉树场影管理的子类进行派生。
采用的是性价比较高的GeoMipMap算法,
即把地形分成相同的块,称为tile。
根据每个tile距离观察者的距离,来决定该块的解析度。
边界处理,由于相邻块可能出现解析度不一,引起地形撕裂,在解析度不同的地方。
边缘部的三角形需要特殊处理
鬼怪还进行了更进一步的优化,会根据相邻的四个tile的解析度,
生成一个map
由于生成tile时,鬼怪采用的是顶点索引方式,如果在map里找到相应的项,
则顶点索引无需要再次生成,直接传给opengl即可,这样极大的提高生成lod的速度
仿真程序截图:(笔者尚未处理边解析度不同的边缘地带,所以地形中会出现撕裂的现象)
从每个块的"北"面边缘,针对解析度不同,进行处理后