通過菜單GameObject > 3D Object > Tree可以為當(dāng)前場(chǎng)景創(chuàng)建一個(gè)Tree (樹),同時(shí)還會(huì)把相應(yīng)的Tree asset資源存放在項(xiàng)目文件夾中。

Tree是標(biāo)準(zhǔn)的Fractal(分形)結(jié)構(gòu),按“第一層主干上長(zhǎng)出數(shù)根枝干,然后枝干上又各自長(zhǎng)出數(shù)根細(xì)枝,……最后細(xì)枝上長(zhǎng)出多片樹葉”這樣一層層搭建而來。Maya中的筆刷樹也是用的這種構(gòu)成方法,但Unity3D相對(duì)來說更簡(jiǎn)化了一些。

樹編輯器及節(jié)點(diǎn)
Unity3D提供一個(gè)簡(jiǎn)單的樹編輯器,讓我們可以從主干開始創(chuàng)建一顆完整的樹。這個(gè)樹編輯器很像Xfrog(Maya中集成了一個(gè)簡(jiǎn)化版的Xfrog插件)。
一顆比較完整的樹的結(jié)構(gòu)至少要如下圖所示,有多個(gè)層級(jí),最下方是1個(gè)樹節(jié)點(diǎn),然后接一層枝節(jié)點(diǎn)當(dāng)樹干,然后再接1~2層枝節(jié)點(diǎn)當(dāng)樹枝,最后接一層葉節(jié)點(diǎn)來生成樹葉。

編輯器中間的結(jié)構(gòu)圖示代表了不同層級(jí)的節(jié)點(diǎn),Unity3D的Tree只有3個(gè)不同類型的節(jié)點(diǎn):樹節(jié)點(diǎn)(Tree)、枝節(jié)點(diǎn)(Branch)、葉節(jié)點(diǎn)(Leaf)。每個(gè)節(jié)點(diǎn)上的數(shù)字代表該節(jié)點(diǎn)中總共有多少根“樹枝”或者多少片“樹葉”。

選擇一個(gè)枝節(jié)點(diǎn),我們可以通過右下角的圖標(biāo)為它創(chuàng)建一個(gè)下級(jí)枝節(jié)點(diǎn)或者葉節(jié)點(diǎn),或者復(fù)制/刪除任意枝節(jié)點(diǎn)或葉節(jié)點(diǎn),葉節(jié)點(diǎn)之下不能創(chuàng)建別的節(jié)點(diǎn)。
樹節(jié)點(diǎn)只能有一個(gè),不可刪除。
樹節(jié)點(diǎn)(Tree)
樹節(jié)點(diǎn)是最底部的節(jié)點(diǎn),用來控制整棵樹的參數(shù)設(shè)置

- Distribution
-
Tree Seed:這是一個(gè)“種子數(shù)”,所謂“種子數(shù)”是計(jì)算機(jī)中控制“假隨機(jī)數(shù)”的一個(gè)關(guān)鍵參數(shù),大家只需要知道我們?nèi)绻龊昧艘豢脴湟院笙氲玫搅硪豢妙愃频灰耆粯拥臉?,就可以直接?fù)制這棵樹,什么調(diào)整都不用做,只修改一下新樹的“種子數(shù)”就好了。做好的樹樣子不太理想,改改“種子數(shù)”也許就能獲得一個(gè)好看些的結(jié)果 -
Area Spread:區(qū)域散布距離,值越大,刷出來的樹離筆刷路徑距離越遠(yuǎn) -
Ground Offset:這棵樹離地面的高度
-
- Geometry
-
LOD Quality:設(shè)置LOD(隨距離變化而改變模型精細(xì)度),因?yàn)門ree物體的mesh都是由程序根據(jù)參數(shù)來自動(dòng)生成的,所以天生就有LOD屬性 -
Ambient Occlusion:環(huán)境自遮罩陰影設(shè)置 -
AO Density:AO的程度
-
- Material
-
Translucency Color:透明區(qū)域顏色 -
Trans. View Dep.:透明區(qū)域渲染深度 -
Alpha Cutoff:貼圖上半透明區(qū)域的切除程度,leaf通常都用透明貼圖來呈現(xiàn),但Tree物體會(huì)將透明通道做Cutoff處理,也就是不呈現(xiàn)半透明的效果 -
Shadow Strength:陰影強(qiáng)度 -
Shadow Offset:陰影偏移 -
Shadow Caster Res.:陰影分辨率
-
枝節(jié)點(diǎn)(Branch)
枝節(jié)點(diǎn)是創(chuàng)建枝干的節(jié)點(diǎn),枝干是一根可以扭曲的長(zhǎng)圓錐體,通常會(huì)貼上樹皮的貼圖,用來作為樹干或者主要分叉樹枝。

- Distribution
-
Group Seed:這個(gè)“種子數(shù)”是控制這一“群”枝條如何隨機(jī)分布的 -
Frequency:在一根上級(jí)枝條上會(huì)出現(xiàn)多少根本級(jí)枝條,對(duì)于主樹干來說這個(gè)值設(shè)置為1,其他的枝干這個(gè)值通常大于1 -
Distribution:這些枝條如何分布 -
Growth Scale:通過一根曲線控制這些枝條從長(zhǎng)出點(diǎn)到尖端的截面粗細(xì),通常是會(huì)設(shè)置成越靠近尖端越細(xì) -
Growth Angle:通過一根曲線控制這些枝條從長(zhǎng)出點(diǎn)到尖端的彎曲程度,大部分樹越靠近尖端會(huì)越指向天空
-
- Geometry
-
LOD Multiplier:LOD的設(shè)置,次級(jí)枝條的LOD會(huì)讀取上級(jí)枝條的LOD然后用這個(gè)倍乘數(shù)來調(diào)整 -
Geometry Mode:幾何體模式,可以是branch(枝條)模式,那就是一個(gè)長(zhǎng)圓錐;也可以是一個(gè)fronds(蕨類復(fù)葉結(jié)構(gòu)),那就是一個(gè)扁平的長(zhǎng)條雙面片;還可以是branch+fronds,那就是兩者都有 -
Branch Material:指定枝條的材質(zhì)球 -
Break Material:指定枝條斷口(頂端)的材質(zhì)球
-
- Shape
-
Length:枝條長(zhǎng)度,會(huì)隨機(jī)在指定范圍內(nèi)取值 -
Relative Length:是否使用相對(duì)長(zhǎng)度 -
Radius:枝條的最大直徑 -
Cap Smoothing:斷口處的光滑度 -
Crinkliness:枝條的扭曲度,0代表筆直的枝條,1代表彎彎扭扭的枝條,可以用曲線來控制從根部到頂端使用不同的Crinkliness值 -
Seek Sun:枝條尖端朝向太陽的程度,如果做向日葵的話當(dāng)然就設(shè)成1咯 -
Noise:給枝條根部到頂端的粗細(xì)變化添加一個(gè)噪波隨機(jī)紊亂,值越大越紊亂 -
Noise Scale U:噪波貼圖的大小U值 -
Noise Scale V:噪波貼圖的大小V值 - Flare:只有主干(緊跟樹節(jié)點(diǎn)的那個(gè)枝節(jié)點(diǎn))才能設(shè)置Flare,F(xiàn)lare可以讓主干底部變得很粗,且最底部截面根據(jù)Noise值而變得形狀不規(guī)則,用來模擬樹根有一部分突出在地面以上的效果
-
Flare Radius:主干根部變粗程度 -
Flare Height:主干根部變粗部分高度 -
Flare Noise:主干根部截面
-
- Weld:非主干的枝節(jié)點(diǎn)上出現(xiàn)的是下面3個(gè)屬性,用來模擬長(zhǎng)出數(shù)值的接口處的過渡效果
-
Weld Length:銜接區(qū)域長(zhǎng)度 -
Spread Top:向上方擴(kuò)展程度 -
Spread Bottom:想下方擴(kuò)展程度
-
-
Break Chance:枝條斷裂的可能性,值越大,越多該層級(jí)的枝條出現(xiàn)斷裂,斷裂的枝條會(huì)有斷口,而且也不會(huì)有次級(jí)枝條或葉片產(chǎn)生 -
Break Location:斷裂的位置,會(huì)隨機(jī)在指定范圍內(nèi)取值
-
- Wind
-
Main Wind:風(fēng)力大小 -
Main Turbulence:(非主干的枝節(jié)點(diǎn)上才會(huì)出現(xiàn))主要紊亂場(chǎng)力度大小
-



我們可以手動(dòng)對(duì)branch進(jìn)行調(diào)整:
- Move Branch:branch的中軸控制曲線及其節(jié)點(diǎn)會(huì)顯示在Scene View里,選擇一個(gè)節(jié)點(diǎn)然后移動(dòng)可以改變整個(gè)枝條的形狀
- Rotate Branch:branch的中軸控制曲線及其節(jié)點(diǎn)會(huì)顯示在Scene View里,選擇一個(gè)節(jié)點(diǎn)然后旋轉(zhuǎn),可以旋轉(zhuǎn)自這個(gè)節(jié)點(diǎn)開始以后的枝條部分
- Free Hand:可以手動(dòng)在Scene View中畫出枝條形狀
注意:手動(dòng)調(diào)整之后,很多參數(shù)就不可用了,編輯器中的節(jié)點(diǎn)圖示上也會(huì)多出一個(gè)筆形符號(hào)做為提示。
葉節(jié)點(diǎn)
葉節(jié)點(diǎn)是創(chuàng)建葉片的節(jié)點(diǎn),葉片是一個(gè)Quad面片,通常會(huì)貼上樹葉貼圖,但一般不會(huì)用奢侈到用單個(gè)面片做1片樹葉,常見的用法是單個(gè)面片上貼上一枝帶若干葉片的細(xì)小樹枝的貼圖,來模擬枝繁葉茂的樣子。

- Distribution
-
Group Seed:這個(gè)“種子數(shù)”是控制這一“群”葉片如何隨機(jī)分布的 -
Frequency:在一根上級(jí)枝條上會(huì)出現(xiàn)多少葉片 -
Distribution:這些葉片如何分布 -
Growth Scale:通過一根曲線控制這葉片的大小 -
Growth Angle:通過一根曲線控制這些葉片的彎曲
-
- Geometry
-
Geometry Mode:幾何體模式-
Plane:?jiǎn)蝹€(gè)Quad面片 -
Cross:十字交錯(cuò)的2個(gè)Quad面片 -
TriCross:十字交錯(cuò)的3個(gè)Quad面片 -
Billboard:?jiǎn)蝹€(gè)Quad面片,但永遠(yuǎn)面朝攝像機(jī) -
Mesh:指定一個(gè)多邊形mesh作為葉片形狀
-
-
Material:指定葉片的材質(zhì)球
-
- Shape
-
Size:葉片大小 -
Perpendicular Align:葉片垂直方向?qū)R程度 -
Horizontal Align:葉片水平方向?qū)R程度
-
- Wind
-
Main Wind:風(fēng)力大小 -
Main Turbulence:主要紊亂場(chǎng)力度大小 -
Edge Turbulence:邊緣紊亂場(chǎng)力度大小
-
我們可以手動(dòng)對(duì)leaf進(jìn)行調(diào)整,leaf沒有中軸線,所以只能移動(dòng)或者旋轉(zhuǎn):
- Move Leaf:沿著上級(jí)brunch移動(dòng)leaf
- Rotate Leaf:繞leaf和上級(jí)branch的接觸點(diǎn)旋轉(zhuǎn)leaf
注意:手動(dòng)調(diào)整之后,很多參數(shù)就不可用了,編輯器中的節(jié)點(diǎn)圖示上也會(huì)多出一個(gè)筆形符號(hào)做為提示。
關(guān)于風(fēng)場(chǎng)和動(dòng)力學(xué)解算:
要產(chǎn)生樹被風(fēng)吹動(dòng)的效果,需要?jiǎng)?chuàng)建一個(gè)Wind Zone(風(fēng)區(qū)),我們可以點(diǎn)擊Create Wind Zone按鈕創(chuàng)建,或者從菜單欄創(chuàng)建。


樹物體的“主干”、“枝條”、“葉片”三種不同的結(jié)構(gòu)部分面對(duì)風(fēng)場(chǎng)的動(dòng)力學(xué)表現(xiàn)是不同的:
- “主干”很粗,所以只受到風(fēng)場(chǎng)風(fēng)強(qiáng)的影響,會(huì)被風(fēng)吹彎;
- “枝條”比較細(xì),除了跟著主干運(yùn)動(dòng)并被風(fēng)強(qiáng)吹歪以外,還會(huì)受到一個(gè)紊亂場(chǎng)的影響,具有一定的震顫抖動(dòng)效果;
- “葉片”最輕,尤其在邊緣部分的葉片,震顫抖動(dòng)效果愈發(fā)明顯,所以多了一個(gè)
Edge Turbulence的參數(shù)。
大家可以下載一些Asset Store里提供的免費(fèi)的Tree資源,看看別人是怎么設(shè)置的: