Unity 3D 使用筆刷繪制地形

2020-07-13 17:33 更新

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

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

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

  • 編輯地形高度。

  • 編輯地形特定高度。

  • 平滑過(guò)渡地形。

  • 地形貼圖。

  • 添加樹(shù)模型。

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

  • 其他設(shè)置。

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

地形高度繪制

在地形編輯器中,前 3 個(gè)工具用來(lái)繪制地形在高度上的變化。

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

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

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

例如:

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

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

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

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

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

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

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

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

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

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

地形紋理繪制

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

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

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

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

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

參數(shù)列表:

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

樹(shù)木繪制

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

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

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

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

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

草和其他細(xì)節(jié)

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

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

參數(shù)列表:

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

地形設(shè)置

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

基本地形參數(shù):

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

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

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

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

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

風(fēng)域

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

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

參數(shù)列表:

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

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

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

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)