當前位置:首頁 >教程首頁 > Unreal Engine >如何製作程序草叢 ?

如何製作程序草叢 ?

發布時間:2021-10-21 10:12:22

Hello,大家好,今天給大家帶來的是通過Megascans, SpeedTree & UE4製作程序草叢。

3D環境藝術家Karsten Malmquist向我們展示了如何創建實時的程序草,闡述了如何使用Megascans掃描的庫,結合SpeedTree創建草叢,並講解了如何設置草的著色器。

0.webp.jpg

一、介紹

我是Karsten Malmquist,是瑞典Malmö的Ernst&Borg工作室的環境藝術家。我畢業於Malmö的遊戲開發學校The game Assembly,我曾在PortaPlay和Star Vault中《Mortal Online2》擔任實習生。

二、程序草叢項目

我已經在這個項目上忙活了好幾個周末。最初隻是為了一種景觀效果的嚐試,後來變成了更大的東西了。在這一點上,這更像是一個大項目的第一個“裏程碑”,我想程序生成一個完整的生物群落。對我來說,這幾乎就像在空氣中繪畫一樣,但是這個是3D的!

1.webp.jpg

從Megascans 到SpeedTree工作流程

通常我的工作流程先是從瀏覽Megascans庫開始,因為,我想要知道哪些資產是可以使用的。在瀏覽時,我會劃分出哪些資產是可以開箱即用,哪些資產是可以通過再修改,然後變成我項目中的資產。在這種情況下,Megascans庫中有很多可以使用的草模型,但是,我看到它們的模型麵數比我想想中的還要密集,所以,我決定製作自己的草叢。

我清楚要自己製作草叢後,我開始收集Megascans中不同的草叢圖集,匹配SpeedTree製作合適的草叢。我之所以使用SpeedTree,是因為它提供了一種非破壞性的程序化工作流程,你可以在其中改變幾乎任何想法,而無需從頭重做。我使用Megascans的掃描圖集是因為,你可以嚐試許多不同的漂亮圖集作為素材,而不必花費大量時間製作高質量高模型。

在嚐試不同的草叢貼圖紋理時,我得出的結論是,單個草叢之間的間距越大,最終效果看起來會越好。當我草叢之間的間隔很緊密的時候,整個紋理隨著mipmap開始混合在一起,這樣就破壞了,草是由一根根細絲組成的錯覺。

為了在SpeedTree中創建草叢,我通常是從創建模型片開始,並將模型頂點放置在貼圖剪影頂部,並確保不同級別的LOD能夠分配到合適的三角形。我現在不太擔心最終的三角形數量,因為,我知道一旦我將草叢導入到Unreal Engine,結合整體效果,再次優化模型。

2.webp.jpg

設置完模型LOD後,我可以開始製作草叢。為此,我首先使用 Zone節點來定義草生成的位置,然後連接一個包含我之前創建的模型片的Leaf Mesh節點。SpeedTree通常的工作邏輯是子節點跟隨著父節點生成,所以,這種情況下,葉子的模型片是在Zone節點創建的區域內生成的。

3.webp.jpg

為了從整體上調整草叢,我修改了Zone節點,是為了確定模型片生成的位置,然後修改了Leaf Mesh節點以改變模型片的生成數量和方向。

選擇Zone節點後,我又轉到“Generation”選項卡,並調整“sweep”設置,以使草叢以圓形生成,以及調整“Number”設置,在更多區域能夠隨機生成。

4.webp.jpg

選擇Leaf Mesh節點,我還調整了 “Generation” 選項卡下的草的數量,然後,向下轉到 “Local Orientation” 選項卡,更改了單個卡片的局部朝向。我個人建議嚐試不同的設置,看看它們的哪個效果會更合適。

5.webp.jpg

在編輯草叢的時候,我還會考慮以下幾點:

1.整個草叢的大小範圍

2.這個草叢有多少模型麵數

草叢的大小範圍之間是相互影響的,是需要在引擎中生成一些實例地形來驗證的。為了提高性能,你也許希望草叢範圍大一些,以降低整體的資源開銷,但是,你肯定也不希望它們太大,以至於草叢在一些不平坦的地形,出現這種類似的情況(懸浮)。

6.webp.jpg

模型片的數量會非常影響性能。因為,大量的模型麵數會導致大量Alpha通道的透支,這是非常昂貴的開銷。對於這個項目,我發現為了更好的效果,你可以額外的加一些模型麵數,把完全透明的部分沿著透明通道裁切掉空白的部分。如果你在SpeedTree中製作自己的植被,我同時建議您嚐試不同的模型麵數,以找到最好效果方案。

下麵是我的草叢現在在SpeedTree裏麵的樣子:

7.webp.jpg

當我們在SpeedTree中製作好草叢後,它們就需要導入到虛幻引擎中了。在這一點上,我希望在整個場景中都可以看到草,而不是隻有一個區域有。當引擎中有草之後,我也會繼續在SpeedTree中做些調整,以便讓它們在引擎中看起來更好看。然而,在我回到SpeedTree之前,我想在Unreal Engine中設置一個適當的Shader,這樣我在改進草叢時,就不會被草地上那些奇怪的陰影分散注意力。

三、設置草地的Shader

通常將植被從SpeedTree導入Unreal Engine不會馬上看起來很好看,因為,你需要一個好的Shader來讓自己的植被看起來更好看。當然,在SpeedTree中也有一個選項,可以將現有的Material導出到Unreal中,但我發現,我需要一個比這個功能更全麵的解決方案。所以,我沒有使用導入默認的Shader,而是自己製作了這些功能:

1. 淡化效果,是基於草叢與相機的距離。

為了做到這一點,我使用了Per Instance Fade Amount這個節點,這個Shader節點可以設定視口與草之間實際漸弱量。為了使用這個節點,我必須用到一張草地貼圖,貼在地麵上,我用Landscape Material來做。打開Landscape Grass Type並將“Start Cull Distance”設置為低於“End Cull Distance”的值,將使Per Instance Fade Amount開始輸出,在草的Material中,實際每個草的數量,在它們距離Start Cull Distance更遠的時候就會漸弱。有了這些信息,我現在就可以調整草的整體不透明度,讓它在遠處是淡出的。

8.webp.jpg

2. 增加法線貼圖的強度。

這將改善草光照在模型片上的效果,可以給人一種,每個草的光影是指向不同的方向的錯覺,而不是看起來像一整排扁平的草。我使用了一個Flatten Normal節點來實現這個效果。這個結果是根據你使用的法線貼圖而變化。理想情況下,你希望是草光影的指向是不同方向的,每個草都有不同的彎曲、扭曲和旋轉,就像它們在自然界中做的那樣。

9.webp.jpg

3. 次表麵散射。

這個可以使草看起來更加真實的最重要的部分之一。我發現,使用albedo作為次表麵顏色,對草來說效果很好,我還用頂點顏色弱弱的加暗草叢根部的區域,以便使草叢能夠更好地與地表紋理得到混合。

10.webp.jpg

4. 顏色變化也很重要。

以擺脫草的顏色過於均勻,過於人為化。我在我的Shader中使用了小規模和大規模兩種變化,小規模變化由一個名為Speed Tree Color Variation的節點組成,它為每個草提供隨機顏色。大規模的顏色變化,是要在世界空間 XY中平鋪一個紋理蒙版,我用它來實現兩種顏色之間的變化。

11.webp.jpg

5. 高度變化

是我最喜歡的Shader功能之一,因為它可以讓草看起來非常蓬鬆。我通過沿著法線的頂點偏移,來實現這個效果。由於我不想偏移草根,所以,我將頂點顏色刷在靠近地麵的頂點上,好實現根部沒有偏移效果。為了獲得變化,我在世界空間中平鋪一個蒙版,來指定那些草叢要偏移。

12.webp.jpg

這裏是所有Shader的視覺彙總:

13.gif

四、設置Landscape Material

Landscape Material是這個項目中,將所有東西鏈接在一起的關鍵部分,它使我能夠從根本上,以高層次的方式,來生成程序植被。Material本身也非常簡單,它隻有兩層,一層叫“Grass”,另一層叫“Grass High”,我可以在Landscape這個環節將它畫出來。用這些Landscape通道輸出節點,再鏈接到不同的草節點。Grass層將產生一個較短的草,而Grass High層將產生一個更高的草。此外,我在整個Landscape的世界空間 XY 中使用蒙版平鋪在 Grass 圖層上生成雜草和花朵簇。最後,為了減少過度繪製,我通過簡單地從各自的蒙版中減去高草蒙版來確保雜草、花朵和矮草不會在高草圖層上生成。

14.webp.jpg

五、優化

我發現在優化任何類型的植被(包括草)時,優化的透支開銷是最重要的一個問題。因為我想要一個漂亮的特寫渲染,所以,我決定增加模型片,使草叢更密集。例如,如果我的目標想要達到 60 FPS,我就不會這樣做。對我來說在這個項目上,我的 PC使用GTX 1060,以 40-45 FPS的速度運行1080p。所以,為了提高性能,我會減少草叢中模型片的密度(幸運的是,這是一個非常簡單的解決方法,因為我在SpeedTree中使用了程序工作流),並在虛幻引擎中也能優化相對距更遠的草。

15.webp.jpg

六、結論

回想起來,這個項目是一次非常有趣的經曆,我從中學到了很多東西。我認為最大的挑戰是弄清楚如何在SpeedTree中製作看起來不錯的草叢,並結合在虛幻引擎中去完善這個結果。在我看來,弄清楚要使用什麼樣的貼圖紋理,以及設置一個好的著色器,是兩個關鍵的裏程碑。

優化也是一個很大的挑戰,雖然我嚐試了不同的方法,並得出了一些結論,很明顯如何製作優化精良的植被,還是有很多東西需要學習的,我希望在繼續這個項目的過程中大家也能學到一些東西。

感謝你的閱讀,我希望你覺得這很有趣。如果你有任何問題,請隨時將它們發送給我!

- End -

华体会hth体育网 賞析
  • 2101期學員李思庭作品

    2101期學員李思庭作品

  • 2104期學員林雪茹作品

    2104期學員林雪茹作品

  • 2107期學員趙淩作品

    2107期學員趙淩作品

  • 2107期學員趙燃作品

    2107期學員趙燃作品

  • 2106期學員徐正浩作品

    2106期學員徐正浩作品

  • 2106期學員弓莉作品

    2106期學員弓莉作品

  • 2105期學員白羽新作品

    2105期學員白羽新作品

  • 2107期學員王佳蕊作品

    2107期學員王佳蕊作品

專業問題谘詢

你擔心的問題,火星幫你解答

微信掃碼在線答疑

掃碼領福利1V1在線答疑

點擊谘詢
添加老師微信,馬上領取免費課程資源

1. 打開微信掃一掃,掃描左側二維碼

2. 添加老師微信,馬上領取免費課程資源

×

同學您好!

您已成功報名0元試學活動,老師會在第一時間與您取得聯係,請保持電話暢通!
確定