這是一個在各種3D軟體都很常見的功能,就是讓某個模型隨機或是有序地"長"在另一個物件表面上! 例如樹木、小石塊等等,如果有用過Maya MASH的人應該會很熟悉,而Unreal Engine自然也有這樣的功能,叫做Procedural Foliage,以下是一些簡易的筆記。
第一步! 先打開Procedural Foliage功能!
先到Edit-->Editor Preferences面板,搜尋Procedural Foliage!
View post on imgur.com
接著,我們在content browser建立一個Static Mesh Foliage ,命名為Foliage_S,這個東西是用來儲存模型資訊的容器,我們可以從這邊調整模型的參數。
現在,我們到資料夾裡面,選定我們想要生長的模型然後把它加入到Foliage_S裡面。
View post on imgur.com
現在,準備製造一個發射器,也就是Procedural Foliage Spawner,它是一個用來裝載Static Mesh Foliage的容器,理論上可以容納無限個,所以要程序生成模型一定要有個東西!
現在,我們把剛剛的Foliage_S加到這個發射器裡面!現在已經完成了一半了!
View post on imgur.com
最後,再把發射器拖進場景再按下resimulate,就會看到地表上已經出現我們指定的模型了!!
View post on imgur.com
接下來讓我們看看Static Mesh Foliage裡面有哪些設定可以調整的!
Align Normal
顧名思義就是讓模型沿著表面的法線生長,如果打開,就會得到一堆歪斜服貼的模型,如果關掉,就會像樹木一樣垂直生長於每個表面!
View post on imgur.com
Collision Radius& Shaded Radius
上面這兩個參數通常會一起設定,所以就一起介紹了,這兩個參數會決定某個範圍內要產生的模型!
Collision Radius是一個決定某個範圍內,要產生的模型的參數,我們可以把它想像成是樹木的軀幹,假設我們設定Collision Radius為100,那麼就表示這個軀幹粗100公分,而且這個範圍內不會產生其他的樹木!
Shaded Radius則是在樹木的陰影範圍之下,多少的範圍內不能產生模型,因為Foliage就是植披的意思,所以這個系統也是以植物的生長來做參考,所以假設我們設定100,那就代表這100公分的範圍內的陰影不會產生其他模型!
總而言之,如果你想要你的Foliage模型彼此之間很靠近,那麼就調低數值,反之就調高!
View post on imgur.com
Initial Seed Density
這是一個決定Foliage 的Seed密度會有多高的數值,這邊的的Seed就代表種子,每個種子都會生成一棵樹,也就是一個模型,而密度越高,自然就會有越多的模型出現!
PS.如果你把數值調高,卻沒有出現更密集的模型,那可能要回去調整Collision Radius& Shaded Radius的數值,把它們調低!
View post on imgur.com
Num Steps& Seed Per Steps
這是一個稍微複雜一點的參數,簡單來說,Step就代表這個Foliage系統會模擬的次數,而Seed Per Steps就代表每次模擬會產生的小種子,也就是說如果Seps是3,Seed Per Steps是5,那麼就代表每次模擬都會產生5顆種子,而且會模擬四次(Step是從0開始計算),也就會出現20顆種子!
這個概念就類似每棵大樹周圍都會再長幾棵小樹的意思,所以如果你想要你的Foliage附近有些小小的模型,就調高Seed Per Steps這個數值!
View post on imgur.com
Max Initial Age & Max Age &Procedural Scale
這兩個數值是有關種子的年齡,Max Initial Age代表越早被模擬出來的樹木,也就是Num Steps 0所產生的模型,而Max Age則代表這個模擬出來的樹木最大會到幾歲,假設Max Age是10,然後Num Steps是5,那麼就代表這個模擬最老只會產生5歲的樹木!
這兩個數值很重要是因為它會影響到底下的Procedural Scale,也就是模型的大小!
按照設定,Num Steps數字越前面所產生的模型,模型就會越大,而之後則會越來越小!
View post on imgur.com
Cull Distance
這是一個讓攝影機決定,多遠的距離這些Foliage會開始消失,可以幫助我們節省系統的運算資源!
但如果我們希望不管多遠的距離,整個場景都要一目瞭然,那麼就把數值保持在0就可以了!
Procedural Foliage Blocking Volume
這是一個很好用的功能,當我們不想要抹個區域出現Foliage時,就可以使用這個東西,有點類似路障的效果!
首先先把Procedural Foliage Blocking Volume拖入場景中。
然後再放置到我們想要禁止生長的區域然後再resimulate就完成了,可以旋轉位移縮放,也可以複製多個!
個別調整Foliage模型
有時候為了畫面美觀,我們不免需要直接手動個別調整單一的Foliage模型,這時候只要進入Foliage模式,使用Select工具就可以直接調整我們想要動的模型了!
PS.用這個方法要注意的是,一旦我們按下resimulate,剛剛調整的東西就會回復原狀!!
加入不同的Item
現在,Foliage只有一種類型的模型似乎有點單調,我們可以複製原本的Foliage_S然後指定給不同的模型,最後加進Spawner裡面,這樣整個場景會更加豐富!
Overlay Priority
當我們的Spawner有兩個以上的Items時,這個數值就決定了哪個物件會優先、占有比較多空間,也就是說數字越大,佔的空間就會越多,如果數字一樣就會平均分配!
Distribute Seed& Random Seed
如果我們不滿意現在的模型分布,想要改變一下排列方式,那麼就可以使用Distribute Seed,只要數入任意數字,系統就會自動改變模型的分布!
Distribute Seed是在Static Mesh裡面,針對某個item做改變,而Random Seed則是在Spawner裡面,會針對整個群組做變換!
如果覺得這篇文章有幫助你在動畫之路走得更長遠,可以使用 Google 或 Facebook 帳號快速登入,按Like五下,就可以幫助我從Likecoin得到回饋,完全不用任何費用! 一點點的鼓勵都會成為我寫作的動力,感激不盡!
0 留言