簡介
Terrain在Simulator Scene的work pipeline中是一個可以很快速建構地形在Unity的一個Engine,他可以省下很多時間去建模(環境地形),而且建構自然景物也是可以很快的直上植被與樹木、水。雖然在遠景的景物不大會影響AI訓練,但近端的地形就會影響到,此工具會提升整個場景的畫面讓整個模擬場景更佳的真實。
建立Terrain
首先我們在專案中的Hierarchy視窗中點選右鍵->3D Object->Terrain,視窗中就會產生一個Terrain object,在Project->Asset中會產生一個特別的Terrain Icon,如下圖。
Terrain ToolBar
我們先看下方紅色框框Terrain Collider,當你新增一個Terrain後他會自己賦予這個Component並會將TerrainData自動連結在Asset folder的物件。Collider就是碰撞器,意思就是讓Terrain賦予物理的碰撞器,可以跟其他場景中擁有碰撞器的物件做互動。
上圖紅色小框框處是Terrain的工具區,由左至右依序介紹:
1.Create Neighbor Terrains:建構鄰近的新Terrain。
2.Paint Terrain:設定地形的高矮胖瘦、材質等工具。
3.Paint Trees:透過筆刷將地形植栽樹木的工具。
4.Paint Details:透過筆刷將地形種植花草等之為末節的細節。
5.Terrain Settings:有關地形的所有設定。
Create Neighbor Terrains
點選Toolbar第一個功能後會在Inspector視窗呈現如上圖的畫面,並在Scene出現綠色框線,在主體Terrain四周產生,假如想要新增鄰近的新Terrain只要在框線內電擊滑鼠左鍵,系統將自動新增。如下圖。
而在Terrain中有兩個參數
Fill Heightmap Using Neighbors:這裡提到Heightmap是控制地形高度的地圖,那這邊勾選是否在鄰近的Terrain使用同樣的Heightmap
Fill Heightmap Address Mode:在下拉選單中有兩個選項,Clamp,將主要Terrain從邊界自動延伸的功能。Mirror,將主要Terrain鏡射的功能。
而提到Neighbors Terrain就要先講到Terrain Settings的第一個欄位的前幾項,如下圖。默認情況下,會中啟用Auto Connect。 啟用這功能地形系統會自動管理相鄰地形圖塊之間的連接,並且圖塊會自動連接到具有相同分組ID的任何鄰居。
Paint Terrain
這個功能算是整個Terrain最重要的功能,如上圖。分作五個子功能:
1.Raise or Lower Terrain
此功能用意是同步將地形拉高或是拉低,有三個參數可以調整,筆刷樣式、筆刷大小以及筆刷的透明度。系統提供默認的筆刷樣式是比較陽春的,可以到Asset Store下載Free的比刷樣式然後匯入。如何匯入?如下圖紅色框框處,新增筆刷按鈕按下會跳出左邊視窗,把想要的筆刷把想要的筆刷樣式(Heightmap)匯入,筆刷也是可以客製化的,他就是像SubstancePainter中的Alpha map,可以將白色處突起或降低。
選好這三個元素後就可以在Scene視窗中的Terrain開始拉高或拉低整體地形。
2.Paint Texture
來到了將地形蒙皮的時候了,我個人小小的建議是先把地形的硬面(高低起伏)建構好再進行蒙皮。首先要新增Terrain Layers,點選紅色箭頭處的Edit Terrain Layer..,下方有四個選項:
Create Layer:要新增前你要準備好Texture才能新增。然而要做出精細的地形就要在layer著墨一下,下方有Layer的不同圖層(Diffuse , Normal , Mask Map),其實有點像是Material,可以使用Substance B2M做出精細的材質進而匯入。
Add Layer:是假如你有下載到layer resource,可以用這功能新增到自己的Terrain裡面。
Replace Layer:將你在Terrain Layers中已有的圖層做替代,意思是將其他已有的圖曾替換目前所選擇的圖層。
Remove Layer:將Terrain Layers視窗中已選擇的該圖層刪除。
設定好之後一樣透過控制筆刷大小與透明度開始在Terrain Object上作畫,由於剛剛已經匯入筆刷了,所以在之後有關比刷的欄位都無需再次匯入先前已經匯入的筆刷。
3.Set Height、4.Smooth Height、5.Stamp Terrain
Stamp Terrain
這邊我把這三個功能拿來一起講,我自已會排一個使用流程,我會先用Stamp Terrain描繪較為顯著的地形。如下圖所示,他會在Scene視窗中預先勾勒出你所選擇筆刷樣式的地形,可以調整Stamp Height來看是不是你想要的樣式。
Max<–>Add的slider bar用意是可讓你選擇是選擇最大高度,還是將Stamp的高度添加到Terrain的當前高度。
而假如你想要做出低窪的地形可以將Subtract打勾,這個選項是將Stamp Height 跟 Max <–>add這兩個功能做連動的。
Set Height
這個就是比較單純的設定地形的高度,調整Height後直接可以在Terrain上作動,順帶一提也是剛剛沒提到的,在每個功能的下方都會有個功能提示,像在Set Height功能中假使你按著鍵盤的shift並讓比刷在Terrain上游移,視窗中的Height會跟隨你遊移到的Terrain高度做即時顯示,適合用在製作精密Terrain時使用。
Smooth Height
最後用此功能去把叫銳利的地形去修整,因為太銳利的地形看起來就不太自然和諧。在這只有一個參數需要調整,Blur Direction,調整該值以控制要柔化的區域。 如果將它設置為–1,該工具將使Terrain的外部(凸出)邊緣變軟。 如果設置為1,則該工具將使Terrain的內部(凹入)邊緣變柔和。 要均勻平滑地形的所有部分,最好把它設定值條成0。
小結
由於Terrain要講述的細節還有一半,我們把它放到下個篇章來詳述,第二篇章主要會講述植被與Terrain的設定,這會間接影響到real time render的效能。
Reference:https://docs.unity3d.com/Manual/script-Terrain.html