真实大地形初探


//更新2020.07.15:国外一个地形高度网站,terrain.party,提供了全球任意位置高度图下载,PNG格式的灰度图。拖入Unity更改图片属性:read/write checked。

1下载卫星图

1.1 下载

框选一个矩形区域,弹出一个选择菜单栏

image

几个关键数据:

Map下拉有卫星图和交通图,第一次选择区域时用卫星图。

zoom表示缩放的精度级别,值越高,像素密度越大,瓦片区块越多。

1.2 拼接

下载好之后需要拼接

image

zoom要与下载设置的zoom一样!导出之后的ecw文件会有色差问题,这里先不管了。

2裁切卫星图

2.1 裁切导出

下载好ecw格式的文件用mapper打开裁切导出。而worldMachine导入文件的格式支持png、bmp等,如下图

image

导出后会生成png、pgw与prj(带有坐标信息),这里还需要一个经纬度信息

2.2 生成经纬度信息

把导出好的png再次用mapper打开,生成经纬度信息。

image

只需要TXT元数据,导出会有两个文件:.jpg和.txt。jpg暂时不用,打开txt能看见经纬度信息。南和西开始代表小值,北和东代表大值。

3下载DEM数据

打开网址http://www.gscloud.cn/search,获取高程数据:GDEMV2 30M 分辨率数字高程数据。

把txt里面的经纬度信息输入,下载。下载好的数据解压,导入mapper中,输出hfz格式选择边界框并继续输入经纬度信息,确定。

把生成的hfz文件导入mapper,测量裁切后地形长宽值。

4导入DEM到WorldMachine

4.1 导入高程数据

新建File Input设备,导入高程hfz数据。设置它的长宽,自然高度

image

4.2 导入贴图

新建File Input设备,选中Interpret as RGB;点选Place into current view。

5 对公路和河流的侵蚀与遮罩

5.1 侵蚀的问题

制作公路与河流略。用Erosion侵蚀设备对公路和河流边缘地形进行圆润打磨。

对公路和河流的combiner高程输出作为侵蚀输入,这时出现问题了

image

黄线左右对比,被侵蚀的特别厉害,公路消失了,河流很浅了。

5.2 对侵蚀使用遮罩

对公路和河流layout的shapeMask合并相加,强度最大。

image

公路和河流的高低差合并,mask遮罩合并反转,侵蚀。

6 设置各种材质

6.1 沟壑材质效果

image

Erosion flow输出给Equalizer平衡器和Clamp压缩

Combiner对选中的区域反转进行mask遮罩,被遮罩的部分不进行flow效果添加;对flow的颜色用color生成器增强。

6.2 公路或河流材质,突出显示

image

三个端口,A、B端口是混合类型,C是将要控制的对象shape mask连接。然后选择方法。

image

这里端口A是整体颜色,端口B是给控制对象要添加颜色,端口C的输入是控制对像的特定输出。然后用上图的算法进行混合。就是把个体与整体的突出分离融合。

然后是河流:

image

突出河流颜色,新增color生成器与公路combine合并,然后把河流的shape遮罩输入,只对河流部分增加颜色。

7 导出

7.1 导出高度图、位图

导出高度图,需要连接最后一次height Filed output;image

导出位图也就是rgb贴图需要连接最后一次bitmap output.image

7.2 导出网格优化

导出网格mesh也要连接最后一次heightFiled output,跟导出高度图的连接点相同。image

image

参数说明:从上至下从左至右

Always output all tiles:一般勾选。如果要导出特定坐标的话需要手动选择下面列出的格子。

Tiling Options:
Merge to xxx:勾选,
Share edge x:勾选.共享边缘顶点。
Flip y-axis :翻转坐标Y轴朝向。
Calculate edge :勾选,计算瓦片边缘。
Tile Resolution:单个瓦片分辨率
tiles per : 最终瓦片数量
blending: 瓦片边缘过渡的混合强度
Naming string:命名格式format

7.3 导出splatmap

地形贴图分层显示。

image

red是flow shape;每个select slope连接heightFiled,然后调整高度,分别连接green、blue。最后输出png格式的bitmap贴图。

7.4 导出有腐蚀效果的splatmap

新版本叫image  ,老版本叫image

8 导入unity

image -> image ->image

depth根据world machine导出时的格式精度;
宽高是整个分辨率;
byte order字节大小端;
flip表示左右手坐标系,wm勾了unity就不勾。保持统一就行
Terrain size:unity中单位为米,根据wm长宽等比例缩,Y值高度也要等比例缩放。

设置splat分层贴图:

核心就是读取和设置TerrainData的alphamap数据

image

image

然后读取创建好的splat贴图数据。

image

注意splat贴图的rgb之和不能大于1,如果手动制作的贴图不能保证,在代码里加几行

image

这样在每层边缘过渡的时候不会有硬边了。

image -> image


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM