Transcript
Page 1: Unity遊戲程式設計(11) 創建遊戲地形

電子工程系應 用 電 子 組電 腦 遊 戲 設 計 組

Unity遊戲程式設計(11) 創建遊戲地形

吳錫修

March 21, 2017

Page 2: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

Unity的地形系统允許你添加廣濶的自然場景

高度優化地形渲染達到渲染效率

使用地形編輯器可用快速創建高品質的自然

地形引擎

2 Wu, ShyiShiou Dept. of E.E., NKUT

Page 3: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

新增3D專案,專案名稱terrain

選單命令Assets> Import Packages> Environment

Environment套件 1/5

3 Wu, ShyiShiou Dept. of E.E., NKUT

Page 4: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

5種地形紋理

懸崖 (Cliff)

草地 (Grass)

岩草 (GrassRock)

岩泥 (MudRock)

沙地 (Sand)

Environment套件 2/5

4 Wu, ShyiShiou Dept. of E.E., NKUT

Page 5: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

2種植草

Environment套件 3/5

5 Wu, ShyiShiou Dept. of E.E., NKUT

Page 6: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

3類樹種

Boardleaf (闊葉),有Desktop與Mobile二款

Conifer(針葉)

Palm (棕櫚)

Environment套件 4/5

6 Wu, ShyiShiou Dept. of E.E., NKUT

Page 7: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

3種水紋

各有日、夜兩種形式

Environment套件 5/5

7 Wu, ShyiShiou Dept. of E.E., NKUT

Page 8: Unity遊戲程式設計(11) 創建遊戲地形

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

調整地形參數

Page 9: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

基本地形參數

Draw開啟地形渲染

Pixel Error像素誤差,代表地形貼圖 (高度圖、紋理等)和生成的地形之間的映射精確度;較大誤差值,地形精度低,但渲染負荷較小

Base Map Distance以高解析度顯示地形紋理的最大距離。超過該距離,改用較低解析度的合成圖像以提高渲染效率

Cast Shadows地形是否投射陰影

地形參數 1/9

9 Wu, ShyiShiou Dept. of E.E., NKUT

Page 10: Unity遊戲程式設計(11) 創建遊戲地形

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

Page 11: Unity遊戲程式設計(11) 創建遊戲地形

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

Page 12: Unity遊戲程式設計(11) 創建遊戲地形

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

Page 13: Unity遊戲程式設計(11) 創建遊戲地形

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

Page 14: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

草之風力設定

Speed風吹過草時的速度

Size風影響的草面積

Bending草被風吹時的彎曲程度

Grass Tint所有草和細節模型整體的色調

地形參數 6/9

14 Wu, ShyiShiou Dept. of E.E., NKUT

Page 15: Unity遊戲程式設計(11) 創建遊戲地形

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

Page 16: Unity遊戲程式設計(11) 創建遊戲地形

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

Page 17: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

高度差貼圖8位元或16位元灰階RAW圖檔,全黑表示高度最低,全白則為最高

Import Raw匯入高度差貼圖建立地形

Export Raw將目前地形滙出為高度差貼圖檔

地形參數 9/9

17 Wu, ShyiShiou Dept. of E.E., NKUT

參照原地形尺寸

Page 18: Unity遊戲程式設計(11) 創建遊戲地形

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

畫刷樣式

Page 19: Unity遊戲程式設計(11) 創建遊戲地形

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

畫刷樣式

Page 20: Unity遊戲程式設計(11) 創建遊戲地形

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

畫刷樣式

Page 21: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

編輯地形 4/4

21 Wu, ShyiShiou Dept. of E.E., NKUT

Page 22: Unity遊戲程式設計(11) 創建遊戲地形

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

畫刷樣式

Page 23: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

預設會使用第⼀個加入的紋理貼滿全部地形

描繪地形紋理 2/3

23 Wu, ShyiShiou Dept. of E.E., NKUT

Page 24: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

描繪地形紋理 3/3

24 Wu, ShyiShiou Dept. of E.E., NKUT

Page 25: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

Place Trees (植樹)滑鼠左鍵植樹,Shift+滑鼠左鍵為移除樹木

植被作業 1/7

25 Wu, ShyiShiou Dept. of E.E., NKUT

編輯樹種清單大量植樹

Page 26: Unity遊戲程式設計(11) 創建遊戲地形

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

Page 27: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

植被作業 3/7

27 Wu, ShyiShiou Dept. of E.E., NKUT

Page 28: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

Place Details (種植花草細節物件)滑鼠左鍵植草或細節,Shift+滑鼠左鍵為移除

Place Details時要拉近地形

植被作業 4/7

28 Wu, ShyiShiou Dept. of E.E., NKUT

Page 29: Unity遊戲程式設計(11) 創建遊戲地形

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

Page 30: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

Healthy Color健康的草色

Dry Color枯萎的草色

Billboard是否為看板貼圖

植被作業 6/7

30 Wu, ShyiShiou Dept. of E.E., NKUT

Page 31: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

植被作業 7/7

31 Wu, ShyiShiou Dept. of E.E., NKUT

Page 32: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

修整水池

水底貼圖,使用岩石材質可以有比較好的效果

將材質拖曳到水池

Environment\Water\Water4\Prefabs\Water4Advanced.prefab

滑鼠左鍵還按著時,會自動偵測地形高度,方便選取所要的高度

製作水池 1/2

32 Wu, ShyiShiou Dept. of E.E., NKUT

Page 33: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

調整水的大小及位置,使其涵蓋整個水池

製作水池 2/2

33 Wu, ShyiShiou Dept. of E.E., NKUT

Page 34: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

選單命令Assets> Import Packages> Characters

加入第一人稱控制器 1/3

34 Wu, ShyiShiou Dept. of E.E., NKUT

Page 35: Unity遊戲程式設計(11) 創建遊戲地形

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

Page 36: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

加入第一人稱控制器 3/3

36 Wu, ShyiShiou Dept. of E.E., NKUT

Page 37: Unity遊戲程式設計(11) 創建遊戲地形

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

Page 38: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

Pulse Manitude陣風量

Pulse Frequency陣風頻率

執行測試遊戲,檢視樹葉是否受風吹動;樹葉擺盪除了受風力影響,也與樹木的Bend Factor參數有關

加入風場效果 2/2

38 Wu, ShyiShiou Dept. of E.E., NKUT

Page 39: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

Asset Store下載Free HDR Sky套件

變更天空背景 1/3

39 Wu, ShyiShiou Dept. of E.E., NKUT

Page 40: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

變更場景天空背景

選單命令Window> Lighting

Scene頁籤,設定Skybox欄

變更天空背景 2/3

40 Wu, ShyiShiou Dept. of E.E., NKUT

Page 41: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

執行測試遊戲

變更天空背景 3/3

41 Wu, ShyiShiou Dept. of E.E., NKUT

Page 42: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

選單命令GameObject> 3D Object> Tree

主幹Shape設定

Length (高度)

Radius (樹幹半徑)

點擊縮圖調整分佈曲線

自造樹木 1/4

42 Wu, ShyiShiou Dept. of E.E., NKUT

根部

上部

Page 43: Unity遊戲程式設計(11) 創建遊戲地形

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

Page 44: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

新增枝幹

自造樹木 3/11

44 Wu, ShyiShiou Dept. of E.E., NKUT

節點數量

1

2

3

顯示/隱藏

Page 45: Unity遊戲程式設計(11) 創建遊戲地形

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(輸生)

Page 46: Unity遊戲程式設計(11) 創建遊戲地形

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

Page 47: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

修剪枝幹

移除整個枝幹:選取枝幹根部 (圓形選取區),按Delete,

選取枝幹節點 (方形選取區),按Delete

調整枝幹位置

拖曳枝幹根部 (圓形選取區)

自造樹木 6/11

47 Wu, ShyiShiou Dept. of E.E., NKUT

Page 48: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

調整枝幹

選取枝幹節點 (方形選取區),拖曳調整

枝幹⼀旦修剪或調整過,就不能再變更枝幹Distribution設定

自造樹木 7/11

48 Wu, ShyiShiou Dept. of E.E., NKUT

Page 49: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

自造樹木 8/11

49 Wu, ShyiShiou Dept. of E.E., NKUT

Page 50: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

加上樹葉

自造樹木 9/11

50 Wu, ShyiShiou Dept. of E.E., NKUT

Page 51: Unity遊戲程式設計(11) 創建遊戲地形

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

Page 52: Unity遊戲程式設計(11) 創建遊戲地形

shap

e th

e fu

ture

設定材質

Geometry/Material

自造樹木 11/11

52 Wu, ShyiShiou Dept. of E.E., NKUT


Top Related