打开Unity,新建一个Terrain对象:
新建完的地形是否符合游戏世界的尺寸大小?要想知道地形是否符合实际,一般可以通过找一个参考物体,比如人形物体或立方体,通过比对参考物体就可以大概知道刷绘出的地形高度是否合适,平坦区域的尺寸是否符合实际场景。
新建一个Cube:
可以看到一个Cube对应了地形中的一个方格,也就是1平方米的面积,点击Terrain后可以在这里看到地形的分辨率是500x500:
在地形分辨率的下方有一栏为Terrain Height,这个值就是我们在地形生成技术(一)中说到的地形物理高度值,我们可以通过该值乘以HeightMap中的灰度值大小(0 ~ 1),来生成实际高度值。
而上图中Detail Resolution相关栏主要是对一些细节分辨率的控制,如可以在相同区域大小的地形块中放置多少的植被或地貌图。对于植被或地貌的相关贴图可以在贴图网站中找到,这些贴图往往是无缝贴图。
如果地形在同一个区域有不同植被纹理堆叠,我们会使用Splatmaps技术。如下图,地形上除了土地,还有草地覆盖,而土地与草地在表现上就需要进行混合,混合方式所采用的方式就是Splatmaps技术,该算法原理其实并不复杂,简易公式如下:
其中Texture代表当前纹理的颜色值,PreviousColor可以表示上一张纹理的颜色值,alpha即是混合的强度,比如以画刷刷绘地形的过程表示,长按画刷,此时alpha为1,代表当前纹理全覆盖至土地纹理上方,以此类推。
如果需要刷绘蕨类植被,一般是通过Billboard的方式创建,每个Billboard是由四边形组成,Billboard一般是面对着相机,如下为Unity刷绘蕨类植被等资源的面板设置。
回到Texture Resolution面板,在HeightMap Resolution栏中可看到该值为513x513,这意味着我们可以通过513x513的HeightMap分辨率对地形分辨率大小为512x512的地形进行实际映射。
上述这些值都是可自定义大小的,默认的Terrain Width与Terrain Height值为1000x1000。