真實大地形初探


//更新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