由于是采用四叉树结构,不同级别的分块之间可能会出现裂缝(Cracks)。
如上图所示,在点A,B处可能会由于两个分块不共享顶点而出现裂缝。目前有不少解决裂缝的方法,主要分为跳点法和加点法。跳点法就是在较高分辨率的分块的边界上跳过一些点不绘制,这样可以保持相邻分块的连续性。加点法就是在较低分辨率的分块边界上新增一些顶点以达到两个分块顶点保持连续的目的。无论是新增点还是去除点都需要对整个地形进行遍历并且对相关分块重新进行三角形剖分,而且丧失了分块的独立性,给我们利用分块的Cache带来了难度,增加了问题的复杂性,进而影响到效率。
我们采用一种效率更高的消除裂缝的办法。对每个分块的四条边,在现有的顶点的基础上再延伸出一圈,他们和单个分块的边界共享顶点,只是高度值不同,这种延伸出来的一圈叫做“裙子”(Skirts)。投影之后只要保证顶点的高度值足够大,两个分块的裙子可以把裂缝遮挡住。当然,这种消除裂缝的方式会增加绘制的三角形绘制数量,但是通过测试发现,对于现在的图形处理器来讲,这种三角形数量的额外增加不会带来多少性能上的下降。
渲染程序截图:
有关Terrain LOD和Skirt的讨论 http://www.gamedev.net/community/forums/topic.asp?topic_id=376154