博客專欄

EEPW首頁 > 博客 > Unity3D :樹

Unity3D :樹

發(fā)布人:xyni2023 時間:2023-05-10 來源:工程師 發(fā)布文章
推薦:將NSDT場景編輯器加入你的3D工具鏈
3D工具集:NSDT簡石數(shù)字孿生

可使用類似于繪制高度貼圖和紋理的方式在地形上繪制樹。然而,樹是從表面生長的 3D 對象實體。Unity 使用優(yōu)化(比如針對遠處樹的公告牌)來保持良好的渲染性能。這意味著可以實現(xiàn)茂密森林(擁有數(shù)以千計的樹),而仍然保持可接受的幀率。

有樹的地形有樹的地形

繪制樹

工具欄上的 Paint Trees 按鈕可用于繪制樹:

Paint Trees 按鈕Paint Trees 按鈕

地形最初沒有可用的樹原型。為了開始在地形上繪制,需要添加樹原型。單擊 Edit Trees 按鈕,然后選擇 Add Tree。在此處,可從項目中選擇樹資源,并將其添加為__樹預(yù)制件__以便與畫筆結(jié)合使用:

Add Tree 窗口Add Tree 窗口

為便于進行原型設(shè)計,SpeedTree 在 Asset Store 上的免費 SpeedTrees 包 中提供了四種 SpeedTree 模型?;蛘?,您也可以創(chuàng)建自己的樹。

如果所導入的樹預(yù)制件支持 Bend Factor__,__Add Tree 窗口將顯示用于調(diào)整風響應(yīng)性的 Bend Factor 屬性。SpeedTree Modeler 創(chuàng)建的樹沒有 __Bend Factor__;只有 Tree Editor 創(chuàng)建的樹才有。請參閱下文關(guān)于__讓樹在風中彎曲__的部分。

配置 Settings 中的設(shè)置(如下文所述)后,可以按照與繪制紋理或高度貼圖相同的方法在地形上繪制樹。若要從區(qū)域中移除樹,請在繪制時按住 Shift 鍵。若要僅移除當前選定的樹類型,請在繪制時按住 Control 鍵。

設(shè)置

選擇要放置的樹之后,可調(diào)整其設(shè)置以便自定義樹的位置和特征。

樹的設(shè)置樹的設(shè)置

屬性功能
Mass Place Trees創(chuàng)建一批整體覆蓋的樹,但不繪制在整個地形上。批量放置樹后,仍然可以使用繪制功能來添加或移除樹,從而創(chuàng)建更密集或更稀疏的區(qū)域。
Brush Size控制可添加樹的區(qū)域的大小。
Tree DensityTree Density 控制 Brush Size 定義的區(qū)域中繪制的樹平均數(shù)量。
Tree Height使用滑動條來控制樹的最小高度和最大高度。將滑動條向左拖動繪制矮樹,向右拖動繪制高樹。如果取消選中 Random,可以將所有新樹的確切高度比例指定為 0.01 到 2 的范圍內(nèi)。
Lock Width to Height默認情況下,樹寬度與其高度鎖定,因此始終會均勻縮放樹。然而,可以禁用 Lock Width to Height 選項,然后單獨指定寬度。
Tree Width如果樹寬度未與其高度鎖定,則可以使用滑動條來控制樹的最小寬度和最大寬度。將滑動條向左拖動繪制細樹,向右拖動繪制粗樹。如果取消選中 Random,可以將所有新樹的確切寬度比例指定為 0.01 到 2 的范圍內(nèi)。
Random Tree Rotation如果為樹配置 LOD 組,請使用 Random Tree Rotation 設(shè)置來幫助創(chuàng)建隨機自然的森林效果,而不是人工種植的完全相同的樹。如果要以相同的固定旋轉(zhuǎn)來放置樹,請取消選中此選項。
Color Variation應(yīng)用于樹的隨機著色量。僅在著色器讀取 _TreeInstanceColor 屬性時有效。例如,用 Tree Editor 創(chuàng)建的所有樹的著色器將讀取 _TreeInstanceColor 屬性。
Tree Contribute Global Illumination啟用此復(fù)選框可向 Unity 指示樹影響全局光照計算。
創(chuàng)建樹

可通過兩種方法來新建樹模型。使用 IDV, Inc. 提供的 SpeedTree Modeler 來創(chuàng)建具有高級視覺效果(例如,平滑的 LOD 過渡、快速公告牌以及自然風動畫)的樹。有關(guān)更多詳細信息,請參閱 SpeedTree Modeler 文檔?;蛘?,使用 Tree Editor 來創(chuàng)建樹模型。

在內(nèi)部,地形引擎通過確定樹預(yù)制件的根游戲?qū)ο笊鲜欠翊嬖?LOD 組來區(qū)分這兩種類型的模型。SpeedTree 預(yù)制件具有 LODGroup 組件,但 Tree Editor 預(yù)制件沒有該組件。

創(chuàng)建樹時,將錨點定位在樹的基部(樹破土而出的位置)。性能取決于樹模型的多邊形數(shù),因此請確保在平臺上進行測試,并在必要時創(chuàng)建更簡單的樹。另外,對于 Tree Editor 樹,每個網(wǎng)格都正好有兩種材質(zhì):一種用于樹體,另一種用于樹葉。

用 Tree Editor 創(chuàng)建的樹必須使用__自然/軟遮擋樹葉 (Nature/Soft Occlusion Leaves)__ 和__自然/軟遮擋樹皮 (Nature/Soft Occlusion Bark)__ 著色器。要使用這些著色器,必須將樹放在名為 Ambient-Occlusion 的特定文件夾中,否則樹無法正確渲染。將模型放入此文件夾并將其重新導入時,Unity 會使用一種專為樹設(shè)計的方式計算軟__環(huán)境光遮擋__。

如果在單獨的 3D 建模應(yīng)用程序中更改導入的樹資源,則需要單擊 Editor 中的 Refresh 按鈕來查看地形上更新后的樹:

Refresh 按鈕位置Refresh 按鈕位置

注意:在 3D 建模程序中導入并改變 SpeedTree 模型后,再將其重新導出(擴展名為 .fbx 或 .obj),可能會丟失 SpeedTree 模型附帶的自然風動畫功能。

將碰撞體用于樹

可以將膠囊碰撞體 (Capsule Collider) 添加到樹資源。首先,單擊樹資源旁的 > 以打開預(yù)制件。

然后,選擇 Add Component > Physics > Capsule Collider 來添加碰撞體。單擊預(yù)制件名稱旁的 < 以返回到場景。

還必須在 Terrain Collider 組件中啟用 Enable Tree Colliders。

讓樹在風中彎曲

風區(qū)可以彎曲樹木以模擬風的直接影響。此功能僅可用于通過 Terrain 菜單放置的樹。為此,請選擇地形,單擊 Inspector 中的 Paint Trees 按鈕,然后選擇 Edit Trees > Add Tree__,再選擇樹預(yù)制件。如果未在 Unity 中創(chuàng)建樹,請將 Bend Factor__ 設(shè)置為 1。單擊地形以放置選定的樹。

具有 Bend Factor 的基于地形樹通過彎曲和搖擺(根據(jù)風區(qū)的 Turbulence 和 Main 屬性值),對風區(qū)做出反應(yīng)。Turbulence 設(shè)置用于控制樹葉的飄動。減小該值可使飄動特效流暢。Main 值用于控制風的主要作用力。要創(chuàng)建風區(qū),請選擇 GameObject > 3D Object > Wind Zone。

如果風區(qū)的 Mode 為 Directional__,則其相對于樹的位置無關(guān)緊要。樹將向風區(qū)方向搖擺。然而,如果風區(qū)的 Mode__ 為 Spherical__,則其 Radius__ 必須與樹的半徑重疊。這樣會產(chǎn)生多方向的陣風,風力從中心到邊緣衰減。

在默認設(shè)置下,諸如闊葉樹 (Broadleaf) 預(yù)制件(在 Standard Assets Environment 包中提供)之類的樹可以平穩(wěn)而逼真地擺動。但是,如果您使用自己的樹預(yù)制件,可能需要調(diào)整 Wind Zone 屬性值。如果樹預(yù)制件的樹干徹底彎向一側(cè),請嘗試減小 Main 值?;蛘撸绻麡漕A(yù)制件的樹枝過度彎曲或伸展,請減小 Turbulence 值。

樹細節(jié)級別 (LOD) 過渡區(qū)

對于樹編輯器樹,Unity 的 LOD 系統(tǒng)使用 2D 到 3D 過渡區(qū)域?qū)?2D 廣告牌與 3D 樹模型無縫融合。這可以防止2D和3D樹突然彈出,這在VR中至關(guān)重要。請注意,廣告牌樹木不會接收局部照明,例如點光源和聚光燈。它們使用定向光源,但廣告牌上的照明僅在您旋轉(zhuǎn)攝像機時更新。

對于 SpeedTree 樹,請參閱 LOD 和 LOD 組 (LOD Group) 文檔以了解關(guān)于配置 LOD 組件的更多信息。


*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



關(guān)鍵詞: 編輯器 數(shù)字孿生 3D

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉