C語言中文網 目錄

Unity 3D使用筆刷繪制地形

Unity 3D 中,除了使用高度圖來創建地形外,還可以使用筆刷繪制地形。

因為 Unity 3D 為游戲開發者提供了強大的地形編輯器,通過菜單中的 GameObject→3D Object→Terrain 命令,可以為場景創建一個地形對象。

初始的地表只有一個巨大的平面。Unity 3D 提供了一些工具,可以用來創建很多地表元素。

游戲開發者可以通過地形編輯器來輕松實現地形以及植被的添加。

地形菜單欄一共有7個按鈕,含義分別為編輯地形高度、編輯地形特定高度、平滑過渡地形、地形貼圖、添加樹模型、添加草與網格模型、其他設置,如下圖所示,每個按鈕都可以激活相應的子菜單對地形進行操作和編輯。

地形編輯工具

地形高度繪制

在地形編輯器中,前 3 個工具用來繪制地形在高度上的變化。

左邊第一個按鈕激活 Raise/Lower Height 工具,如下圖所示。

當使用這個工具時,高度將隨著鼠標在地形上掃過而升高。

如果在一處固定鼠標,高度將逐漸增加。這類似于在圖像編輯器中的噴霧器工具。如果鼠標操作時按下 Shift 鍵,高度將會降低。不同的刷子可以用來創建不同的效果。例如,創建丘陵地形時,可以通過 soft-edged 刷子進行高度抬升。

而對于陡峭的山峰和山谷,可以使用 hard-edged 刷子進行高度削減。

Raise/Lower Height/Smooth Height工具

左邊第二個工具是 Paint Height,類似于 Raise/Lower 工具,但多了一個屬性 Height,用來設置目標高度,如下圖所示。

當在地形對象上繪制時,此高度的上方區域會下降,下方的區域會上升。

游戲開發者可以使用高度屬性來手動設置高度,也可以使用在地形上 Shift+ 單擊對鼠標位置的高度進行取樣。在高度屬性旁邊是一個 Flatten 按鈕,它簡單地拉平整個地形到選定的高度,這對設置一個凸起的地平線很有用。

如果要繪制的地表包含高出水平線和低于水平線的部分,例如在場景中創建高原以及添加人工元素(如道路、平臺和臺階),Paint Height 都很方便。

Paint Height工具

左邊第三個工具 Smooth Height 并不會明顯地抬升或降低地形高度,但會平均化附近的區域。這緩和了地表,降低了陡峭變化,類似于圖片處理中的模糊工具(blur tool)。

Smooth Height 可以用于緩和地表上尖銳、粗糙的巖石。地形表面平滑工具選項設置及功能介紹如下表所示。

參 數 含 義 功 能
Brushes 筆刷 設置筆刷的樣式
Setting 設置  
Brushes Size 筆刷尺寸 設置筆刷的大小
Opacity 不透明度 設置筆刷繪制時的高度
Height 高度 設置繪制高度的數值

地形紋理繪制

在地形的表面上可以添加紋理圖片以創造色彩和良好的細節。

由于地形是如此巨大的對象,在實踐中標準的做法是使用一個無空隙地(即連續地)重復的紋理,在表面上用它成片地覆蓋,可以繪制不同的紋理區域以模擬不同的地面,如草地、沙漠和雪地。

繪制出的紋理可以在不同的透明度下使用,這樣就可以在不同地形紋理間形成漸變,效果更自然。

地形編輯器左邊第四個按鈕是紋理繪制工具,單擊該按鈕并且在菜單中執行 Add Texture 命令,可以看到一個窗口,在其中可以設置一個紋理和它的屬性。

添加的第一個紋理將作為背景使用而覆蓋地形。如果想添加更多的紋理,可以使用刷子工具,通過設置刷子尺寸、透明度及目標強度(Target Strength)選項,實現不同紋理的貼圖效果,如下圖所示。地形紋理繪制工具選項如下表所示。

參 數 含 義 功 能
Brushs 筆刷 設置繪制地形紋理的筆刷樣式
Textures 紋理 設置繪制地形紋理圖片樣式
Setting 設置 設置紋理相關參數
Brush Size 筆刷尺寸 設置繪制紋理的筆刷的大小
Opacity 不透明度 設置筆刷繪制紋理時的不透明度
Target Strength 目標強度 設置所繪制的貼圖紋理產生的影響

紋理貼圖面板

樹木繪制

Unity 3D 地形可以布置樹木。可以像繪制高度圖和使用紋理那樣將樹木繪制到地形上,但樹木是固定的、從表面生長出的三維對象。

Unity 3D 使用了優化(例如,對遠距離樹木應用廣告牌效果)來保證好的渲染效果,所以一個地形可以擁有上千棵樹組成的茂密森林,同時保持可接受的幀率。

單擊 Edit Trees 按鈕并且選擇 Add Tree 命令,將彈出一個窗口,從中選擇一種樹木資源。

當一棵樹被選中時,可以在地表上用繪制紋理或高度圖的方式來繪制樹木,按住 Shift 鍵可從區域中移除樹木,按住 Ctrl 鍵則只繪制或移除當前選中的樹木。樹木繪制面板如下圖所示。樹木繪制工具選項如下表所示。

樹木繪制面板

參 數 含 義 功 能
Setting 設置 設置樹木繪制相關參數
Brush Size 筆刷尺寸 設置種植樹時筆刷的大小
Tree Density 樹木密度 設置樹的間距
Tree Height 樹木高度 設置樹的高度,勾選Random選項,可以出現樹木高度 在指定范圍內隨機變化的效果
Lock Width to Height 鎖定樹木的寬高比 鎖定樹木寬高比
Tree Width 樹木寬度 設置樹的寬度,勾選Random選項,可以出現樹木寬度 在指定范圍內隨機變化的效果
Random Tree Rotation 樹木隨機旋轉 設置樹木隨機旋轉一定的角度

草和其他細節

一個地形表面可以有草叢和其他小物體,比如覆蓋表面的石頭。草地使用二維圖像進行渲染來表現草叢,而其他細節從標準網格中生成。

在地形編輯器中單擊 Edit Details 按鈕,在出現的菜單中將看到 Add Grass Texture 和 Add Detail Mesh 選項,選擇 Add Grass Texture,在出現的窗口中選擇合適的草資源,如下圖所示。草繪制工具選項如下表所示。

草繪制面板

參 數 含 義 功 能
Detail Texture 細節紋理 指定圖片作為草的紋理
Min Width 最小寬度 設置草的最小寬度值
Max Width 最大寬度 設置草的最大寬度值
Min Height 最小高度 設置草的最小高度值
Max Height 最大高度 設置草的最大高度值
Noise Spread 噪波范圍 控制草產生簇的大小
Healthy Color 健康顏色 設置草的健康顏色,此顏色在噪波中心處較為明顯
Dry Color 干燥顏色 設置草的干燥顏色,此顏色在噪波中心處較為明顯
Billboard 廣告牌 草將隨著攝像機同步轉動,永遠面向攝像機

地形設置

單擊地形編輯器最右邊的按鈕可以打開地形設置面板,如下圖所示。該面板用于設置地形參數,如下表所示。

地形設置面板
基本地形參數:

參 數 含 義 功 能
Draw 繪制 繪制地形
Pixel Error 像素容差 顯示地形網格時允許的像素容差
Base Map Dist. 基本地圖距離 設置地形高度的分辨率
Cast Shadows 投影 設置地形是否有投影
Material 材質 為地形添加材質

樹和細節參數:

參 數 含 義 功 能
Draw 繪制 設置是否渲染除地形以外的對象
Detail Distance 細節距離 設置攝像機停止對細節渲染的距離
Detail Density 細節密度 設置細節密度
Tree Distance 樹木距離 設置攝像機停止對樹進行渲染的距離
Billboard Start 開始廣告牌 設置攝像機將樹渲染為廣告牌的距離
Fade Length 漸變距離 控制所有樹的總量上限
Max Mesh Trees 網格渲染樹木最大數量 設置使用網格形式進行渲染的樹木最大數量

風參數:

參 數 含 義 功 能
Speed 速度 風吹過草地的速度
Size 大小 同一時間受到風影響的草的數量
Bending 彎曲 設置草跟隨風彎曲的強度
Grass Tint 草的色調 設置地形上的所有草和細節網格的總體渲染顏色

風域

地形中的草叢在運行測試時可以隨風擺動,如果要實現樹木的枝葉如同現實中一樣隨風搖擺的效果,就需要加入風域。

執行 GameObject→3D Object→Wind Zone 菜單命令,創建一個風域,風域的參數如下圖所示,風域參數如下表所示。

風域

參 數 含 義 功 能
Mode 風域模式 設置風域模式:Directional模式下整個場景中的樹木都受影 響,Spherical模式下只影響球體包裹范圍內的樹木
Main 主風 設置主要風力,產生風壓柔和變化
Turbulence 湍流 設置湍流風,產生一個瞬息萬變的風壓
Pulse Magnitude 波動幅度 定義風力隨時間的變化
Pulse Frequency 波動頻率 定義風向改變的頻率

風域不僅能實現風吹樹木的效果,還能模擬爆炸時樹木受到波及的效果。

需要注意的是,風域只能作用于樹木,對其他游戲對象沒有效果。場景中不同模式下的風域參數設置如下表所示。

實現的效果 參數
Main Turbulence Pulse Magnitude Pulse Frequency
輕風吹效果 1 0.1 1.0或以上 0.25
強氣流效果 3 5 0.1 1.0

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo