電子工程系應 用 電 子 組電 腦 遊 戲 設 計 組
Unity遊戲程式設計(11) 創建遊戲地形
吳錫修
March 21, 2017
shap
e th
e fu
ture
Unity的地形系统允許你添加廣濶的自然場景
高度優化地形渲染達到渲染效率
使用地形編輯器可用快速創建高品質的自然
地形引擎
2 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
新增3D專案,專案名稱terrain
選單命令Assets> Import Packages> Environment
Environment套件 1/5
3 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
5種地形紋理
懸崖 (Cliff)
草地 (Grass)
岩草 (GrassRock)
岩泥 (MudRock)
沙地 (Sand)
Environment套件 2/5
4 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
2種植草
Environment套件 3/5
5 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
3類樹種
Boardleaf (闊葉),有Desktop與Mobile二款
Conifer(針葉)
Palm (棕櫚)
Environment套件 4/5
6 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
3種水紋
各有日、夜兩種形式
Environment套件 5/5
7 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
選單命令GameObject> 3D Object> Terrain
預設地形為⻑500m、寬500m、高600m,模型為三角網面所組成
調整地形大小
Terrain Width = 400 (X軸)
Terrain Length = 300 (Z軸)
Terrain Height = 150 (Y軸)
新增地形
8 Wu, ShyiShiou Dept. of E.E., NKUT
調整地形參數
shap
e th
e fu
ture
基本地形參數
Draw開啟地形渲染
Pixel Error像素誤差,代表地形貼圖 (高度圖、紋理等)和生成的地形之間的映射精確度;較大誤差值,地形精度低,但渲染負荷較小
Base Map Distance以高解析度顯示地形紋理的最大距離。超過該距離,改用較低解析度的合成圖像以提高渲染效率
Cast Shadows地形是否投射陰影
地形參數 1/9
9 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
Material用於渲染地形的材質
Built In Standard使用Unity 5.x內建的PBR (Physically-Based Rendering) 材質。每個splat層,使用⼀個反照率和平滑度紋理,⼀個法線紋理和⾦屬度值
Built In Legacy Diffuse早期版本的內建地形材質。使用Lambert lighting model (僅漫射項) 及選擇性的法線貼圖
Built In Legacy Specular早期版本的內建地形材質。使用BlinnPhong lighting model (漫射和鏡面項),選擇性的法線貼圖。可為地形指定整體鏡面顏色和光澤
Custom使用自定材質來渲染地形
地形參數 2/9
10 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
Reflection Probes如何在地形上使用反射探針。須使用內建標準材質或支援反射渲染的自定義材質
Off關閉反射探針
Blend Probes只有在反射探針之間才會進行混合運算
Blend Probes And Skybox在反射探測器之間或反射探針與場景預設反射探針之間都會進行混合運算
Simple在反射探針之間重疊部份不進行混合運算
Thickness地形碰撞體積,沿負Y軸延伸值
地形參數 3/9
11 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
樹木與細部物件參數
Draw開啟樹木、草、及細部物件渲染
Bake Light Probes For Trees開啟樹木烘焙光照探針
Detail Distance當細節與攝影機的距離大於設定值,便不顯示細節
Collect Detail Patches當細節塊面變不可見時,自動回收記憶體
Detail Density在單位區域內細節/草的密度上限。降低此值,可以減少渲染負荷
Tree Distance當樹木與攝影機的距離大於設定值,與便不顯示樹木
地形參數 4/9
12 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
Billboard Start當樹木與攝影機的距離大於設定值,樹木將顯示為圖像而非模型
Fade Length樹在3D物件和圖像之間轉換的臨界距離
Max Mesh Trees在地形上栽種的3D模型樹的總量上限。超過這個限制,以圖像取代樹木
地形參數 5/9
13 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
草之風力設定
Speed風吹過草時的速度
Size風影響的草面積
Bending草被風吹時的彎曲程度
Grass Tint所有草和細節模型整體的色調
地形參數 6/9
14 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
解析度設定
Terrain Width地形寬度 (X軸)
Terrain Length地形⻑度 (Z軸)
Terrain Height地形高度 (Y軸)
Heightmap Resolution高度圖解析度,必須為2的N次方減1
Detail Resolution細節解析度
Detail Resolution Per Patch塊面細節解析度
地形參數 7/9
15 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
Control Texture Resolution控制貼圖解析度,Splat紋理混合貼圖的解析度
Base Texture Resolution基本貼圖解析度,當與攝影機達到Basemap Distance的距離後,貼圖的解析度
地形參數 8/9
16 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
高度差貼圖8位元或16位元灰階RAW圖檔,全黑表示高度最低,全白則為最高
Import Raw匯入高度差貼圖建立地形
Export Raw將目前地形滙出為高度差貼圖檔
地形參數 9/9
17 Wu, ShyiShiou Dept. of E.E., NKUT
參照原地形尺寸
shap
e th
e fu
ture
Raise/Lower Terrain (升高/降低地形)點擊或持續按壓滑鼠左鍵調高地形,同時按Shift鍵則降低地形
Brush Size 畫刷尺寸1~100
Opacity 不透明度0~100,數值愈大畫刷作用效果愈強
編輯地形 1/4
18 Wu, ShyiShiou Dept. of E.E., NKUT
畫刷樣式
shap
e th
e fu
ture
Paint Height (繪製高度)使用滑鼠左鍵 (點擊或持續按壓) 調高地形至指定高度,同時按Shift鍵則取得地形高度;適合用來製作平台或走道
Brush Size 畫刷尺寸1~100
Opacity 不透明度0~100,數值愈大畫刷作用效果愈強
Height 限高值,點擊Flatten按鈕,將地形全部整平
編輯地形 2/4
19 Wu, ShyiShiou Dept. of E.E., NKUT
畫刷樣式
shap
e th
e fu
ture
Smooth Height (將地形平滑化)使用滑鼠左鍵 (點擊或持續按壓) 柔化地形高低落差
Brush Size 畫刷尺寸1~100
Opacity 不透明度0~100,數值愈大畫刷作用效果愈強
編輯地形 3/4
20 Wu, ShyiShiou Dept. of E.E., NKUT
畫刷樣式
shap
e th
e fu
ture
編輯地形 4/4
21 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
Paint Texture在地形上塗上紋理,點擊Edit Textures按鈕管理紋理
Brush Size 畫刷尺寸1~100
Opacity 不透明度0~100,數值愈大畫刷作用效果愈強
Target Strength 覆蓋強度,0~1.0,數值愈大紋理愈明顯
描繪地形紋理 1/3
22 Wu, ShyiShiou Dept. of E.E., NKUT
畫刷樣式
shap
e th
e fu
ture
預設會使用第⼀個加入的紋理貼滿全部地形
描繪地形紋理 2/3
23 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
描繪地形紋理 3/3
24 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
Place Trees (植樹)滑鼠左鍵植樹,Shift+滑鼠左鍵為移除樹木
植被作業 1/7
25 Wu, ShyiShiou Dept. of E.E., NKUT
編輯樹種清單大量植樹
shap
e th
e fu
ture
樹木設定
Brush Size畫刷尺寸
Tree Density植樹密度
Tree Height樹高,當勾選Random時,由右側橫向條寬度決定樹高範圍,左端點為樹木最小高度,右端點為樹木最大高度
Lock Width to Height勾選時鎖定樹木⻑寬比,未勾選時則由Tree Width設定樹木的寬度
Ramdom Tree Rotation隨機旋轉樹木角度
植被作業 2/7
26 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
植被作業 3/7
27 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
Place Details (種植花草細節物件)滑鼠左鍵植草或細節,Shift+滑鼠左鍵為移除
Place Details時要拉近地形
植被作業 4/7
28 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
Detail Texture花草貼圖
Min Width貼圖最小寬度
Max Width貼圖最大寬度
Min Height貼圖最小高度
Max Height貼圖最大高度
Noise Spread植草參次變化值
植被作業 5/7
29 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
Healthy Color健康的草色
Dry Color枯萎的草色
Billboard是否為看板貼圖
植被作業 6/7
30 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
植被作業 7/7
31 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
修整水池
水底貼圖,使用岩石材質可以有比較好的效果
將材質拖曳到水池
Environment\Water\Water4\Prefabs\Water4Advanced.prefab
滑鼠左鍵還按著時,會自動偵測地形高度,方便選取所要的高度
製作水池 1/2
32 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
調整水的大小及位置,使其涵蓋整個水池
製作水池 2/2
33 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
選單命令Assets> Import Packages> Characters
加入第一人稱控制器 1/3
34 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
將FPS Controller拖曳到場景中
Characters\Prefabs\FPSControl.prefab
FPS Controller已自帶攝影機,所以將預設的Main Camera刪除
FPS Controller
滑鼠控制鏡頭方向
方向鍵移動
Shift+方向鍵跑步移動
加入第一人稱控制器 2/3
35 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
加入第一人稱控制器 3/3
36 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
選單命令GameObject> 3D Object> WindZone
Mode
Directional方向氣流,例如⼀般的季風
Shperical環狀氣流,例如颱風或直昇機起降形成的氣流;此時Radius參數為氣流半徑
Main風力
Tubulence風力變化快慢
加入風場效果 1/2
37 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
Pulse Manitude陣風量
Pulse Frequency陣風頻率
執行測試遊戲,檢視樹葉是否受風吹動;樹葉擺盪除了受風力影響,也與樹木的Bend Factor參數有關
加入風場效果 2/2
38 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
Asset Store下載Free HDR Sky套件
變更天空背景 1/3
39 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
變更場景天空背景
選單命令Window> Lighting
Scene頁籤,設定Skybox欄
變更天空背景 2/3
40 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
執行測試遊戲
變更天空背景 3/3
41 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
選單命令GameObject> 3D Object> Tree
主幹Shape設定
Length (高度)
Radius (樹幹半徑)
點擊縮圖調整分佈曲線
自造樹木 1/4
42 Wu, ShyiShiou Dept. of E.E., NKUT
根部
上部
shap
e th
e fu
ture
Cap smoothing (平滑)
Crinkliness (扭曲)
Seek Sun (向光成⻑)
Flare Radius (樹根皺褶半徑)
Flare Height (樹根皺褶生⻑範圍)
Flare Noise (樹根皺褶變化)
自造樹木 2/11
43 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
新增枝幹
自造樹木 3/11
44 Wu, ShyiShiou Dept. of E.E., NKUT
節點數量
1
2
3
顯示/隱藏
shap
e th
e fu
ture
枝幹Distribution設定
Frequency (枝幹數量) = 40越上層枝幹數量不可太大,以免運算負荷太大
Distribution (枝幹分佈方式) = Opposite
自造樹木 4/11
45 Wu, ShyiShiou Dept. of E.E., NKUT
Random (隨機)
Alternate (交义)
Opposite(對立面)
Whorled(輸生)
shap
e th
e fu
ture
Twirl (捻轉程度) = 0.25
Growth Scale = 1愈上層枝幹愈短
Growth Angle = 0.18主幹此參數表示傾斜程度,枝幹此參數表示向上角度
自造樹木 5/11
46 Wu, ShyiShiou Dept. of E.E., NKUT
Twirl=0 Twirl=0.25
shap
e th
e fu
ture
修剪枝幹
移除整個枝幹:選取枝幹根部 (圓形選取區),按Delete,
選取枝幹節點 (方形選取區),按Delete
調整枝幹位置
拖曳枝幹根部 (圓形選取區)
自造樹木 6/11
47 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
調整枝幹
選取枝幹節點 (方形選取區),拖曳調整
枝幹⼀旦修剪或調整過,就不能再變更枝幹Distribution設定
自造樹木 7/11
48 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
自造樹木 8/11
49 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
加上樹葉
自造樹木 9/11
50 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
樹葉Shape設定
Size (大小分佈)
Perpendicular Align (直向排列)
Horizontal Align (橫向排列)
樹葉Wind設定
Main wind (主風力)
Main Turbulence (主紊流)
Edge Turbulence (邊緣紊流)
自造樹木 10/11
51 Wu, ShyiShiou Dept. of E.E., NKUT
shap
e th
e fu
ture
設定材質
Geometry/Material
自造樹木 11/11
52 Wu, ShyiShiou Dept. of E.E., NKUT