Unity 3D 使用筆刷繪制地形

2020-07-13 17:33 更新

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

剛創(chuàng)建的初始地表只有一塊巨大的平面。Unity 3D 提供了一些歸納于地形菜單欄的工具,可供游戲開發(fā)者在該平面上創(chuàng)建很多地表元素。

地形菜單欄一共有7個按鈕,含義分別為

  • 編輯地形高度。

  • 編輯地形特定高度。

  • 平滑過渡地形。

  • 地形貼圖。

  • 添加樹模型。

  • 添加草與網(wǎng)格模型。

  • 其他設(shè)置。

如下圖所示,每個按鈕都可以激活相應(yīng)的子菜單對地形進行操作和編輯。

地形高度繪制

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

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

當(dāng)使用這個工具時,高度將隨著鼠標(biāo)在地形上掃過而升高。如果在一處固定鼠標(biāo),高度將逐漸增加。這類似于在圖像編輯器中的噴霧器工具。

如果鼠標(biāo)操作時按下 Shift 鍵,高度將會降低。不同的刷子可以用來創(chuàng)建不同的效果。

例如:

  • 創(chuàng)建丘陵地形時,可以通過 soft-edged 刷子進行高度抬升。

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

  1. Paint Height,類似于 Raise/Lower 工具,但多了一個屬性 Height,用來設(shè)置目標(biāo)高度,如下圖所示(左邊第二個)。

  • 當(dāng)在地形對象上繪制時,此高度的上方區(qū)域會下降,下方的區(qū)域會上升。

  • 游戲開發(fā)者可以使用高度屬性來手動設(shè)置高度,也可以使用在地形上 Shift + 單擊 對鼠標(biāo)位置的高度進行取樣。

  • 在高度屬性旁邊是一個 Flatten 按鈕,它簡單地拉平整個地形到選定的高度,這對設(shè)置一個凸起的地平線很有用。

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

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

Smooth Height 可以用于緩和地表上尖銳、粗糙的巖石。參數(shù)列表如下:

參數(shù) 含義 描述
Brushes 筆刷 設(shè)置筆刷的樣式。
Setting 設(shè)置
Brushes Size 筆刷尺寸 設(shè)置筆刷的大小。
Opacity 不透明度 設(shè)置筆刷繪制時的高度。
Height 高度 設(shè)置繪制高度的數(shù)值。

地形紋理繪制

在地形的表面上可以添加紋理圖片以創(chuàng)造色彩和良好的細節(jié)。

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

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

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

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

參數(shù)列表:

參數(shù) 含義 描述
Brushes 筆刷 設(shè)置筆刷的樣式。
Setting 設(shè)置
Opacity 不透明度 設(shè)置筆刷繪制時的高度。
Textures 紋理 設(shè)置繪制地形紋理圖片樣式。
Brush Size 筆刷尺寸 設(shè)置繪制紋理的筆刷的大小。
Target Strength 目標(biāo)強度 設(shè)置所繪制的貼圖紋理產(chǎn)生的影響。

樹木繪制

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

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

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

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

  • 參數(shù)列表:
參數(shù) 含義 描述
Tree Density 樹木密度 設(shè)置樹的間距。
Setting 設(shè)置
Tree Height 樹木高度 設(shè)置樹的高度,勾選Random選項,可以出現(xiàn)樹木高度 在指定范圍內(nèi)隨機變化的效果。
Lock Width to Height 鎖定樹木的寬高比 鎖定樹木寬高比。
Brush Size 筆刷尺寸 設(shè)置種植樹時筆刷的大小。
Tree Width 樹木寬度 設(shè)置樹的寬度,勾選Random選項,可以出現(xiàn)樹木寬度 在指定范圍內(nèi)隨機變化的效果。
Random Tree Rotation 樹木隨機旋轉(zhuǎn) 設(shè)置樹木隨機旋轉(zhuǎn)一定的角度。

草和其他細節(jié)

一個地形表面可以有草叢和其他小物體,比如覆蓋表面的石頭。草地使用二維圖像進行渲染來表現(xiàn)草叢,而其他細節(jié)從標(biāo)準(zhǔn)網(wǎng)格中生成。

在地形編輯器中單擊 Edit Details 按鈕,在出現(xiàn)的菜單中將看到 Add Grass TextureAdd Detail Mesh 選項,選擇 Add Grass Texture,在出現(xiàn)的窗口中選擇合適的草資源,如下圖所示。

參數(shù)列表:

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

地形設(shè)置

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

基本地形參數(shù):

參數(shù) 含義 描述
Draw 繪制 繪制地形。
Pixel Error 像素容差 顯示地形網(wǎng)格時允許的像素容差。
Base Map Dist 基本地圖距離 設(shè)置地形高度的分辨率。
Cast Shadows 投影 設(shè)置地形是否有投影。
Material 材質(zhì) 為地形添加材質(zhì)。

樹和細節(jié)參數(shù):

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

風(fēng)參數(shù):

參數(shù) 含義 描述
Speed 速度 風(fēng)吹過草地的速度。
Size 大小 同一時間受到風(fēng)影響的草的數(shù)量。
Bending 彎曲 設(shè)置草跟隨風(fēng)彎曲的強度。
Grass Tint 草的色調(diào) 設(shè)置地形上的所有草和細節(jié)網(wǎng)格的總體渲染顏色。

風(fēng)域

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

執(zhí)行 GameObject3D ObjectWind Zone 菜單命令,創(chuàng)建一個風(fēng)域,風(fēng)域的參數(shù)如下圖所示。

參數(shù)列表:

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

風(fēng)域不僅能實現(xiàn)風(fēng)吹樹木的效果,還能模擬爆炸時樹木受到波及的效果。

需要注意的是,風(fēng)域只能作用于樹木,對其他游戲?qū)ο鬀]有效果。場景中不同模式下的風(fēng)域參數(shù)設(shè)置如下表所示。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號