【Unreal Engine Procedural Foliage】程序生成物件在表面上

【Unreal Engine Procedural Foliage】程序生成物件在表面上

 




這是一個在各種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 留言