當前位置:首頁 >教程首頁 > Unreal Engine >Unreal製作程序網格材質圖文教程

Unreal製作程序網格材質圖文教程

發布時間:2021-09-28 10:54:31

Hello,大家好,今天跟大家分享Unreal製作程序網格材質圖文教程,我是木偶心沒。

0.webp.jpg

在本教程中,我們將創建一個程序化材質,它將在世界空間中將可自定義的網格投影到任何表麵上。這種材質具有多個網格選項、用於創建細分的不同線條粗細、可配置的棋盤圖案以及其他一些用於遮擋關卡的有用功能。

我創建這種材質的目標是提供一個簡單但功能強大的工具,讓設計師在製作關卡原型時能夠輕鬆地了解比例。它需要易於使用、可定製(不需要幾十個參數),並且完全是程序化的,因此它可以在任何大小下運行。

1.webp.jpg

我將在一個新項目中從頭開始製作這個材質球。如果你已經熟悉此類材質,並且你隻是想看看這種材質與你可能使用過的其他材質有何不同,這裏是完整的材質節點圖。

2.webp.jpg2-2.webp.jpg2-3.webp.jpg

1、Material Instance

3.webp.jpg

網格材質隻有三個參數組;Grid、Checker和 PBR。

Grid

Line tint

材質網格線的顏色。

Primary grid size

以厘米為單位的網格大小。默認情況下,它設置為100,因此網格線間隔 1m。

由於此材質不使用 Unreal Units,因此如果你修改測量設置,該值不會更改。

Primary grid line width

主網格線的粗細。與原點相交的線的強度將是此寬度設置的兩倍。

Use secondary grid

此設置將啟用/禁用一組輔助網格線。默認情況下,設置為true.

Secondary grid size

輔助網格線的大小(以厘米為單位)。默認設置為20,在每個主單元格內製作一個 5×5 的網格。

Secondary grid line width

默認設置為0.5cm。

Secondary grid intensity

此值設置輔助網格線的強度以幫助提高視覺清晰度。值為1表示完全不透明,而值為 0在視覺上與完全禁用輔助網格相同。它的默認值為.2。

Secondary grid fade distance

輔助網格將完全淡出時距攝像機的距離。這是為了避免當 Unreal 嚐試在遠處繪製鉛筆細線時可能出現的任何難看的閃爍偽影。默認情況下設置為2000cm。

4.webp.jpg

Checker

Checker size

棋盤格圖案的一次迭代的大小(以厘米為單位)。

Wall tint

網格材質應用於垂直表麵時的顏色。

Floor tint

網格材質應用於水平表麵時的顏色。

Projection transition contrast

此值將決定材質應在水平和垂直表麵之間混合的程度。值越高,過渡越劇烈。默認情況下,它設置為0,這意味著在傾斜表麵上,顏色將彼此均勻混合。

5.webp.jpg

不同“Projection transition contrast”值對球體的影響

2、Create Material

在你選擇的項目中(我使用的是引擎版本 4.26.2)創建下麵的材質以及材質函數。

6.webp.jpg

一個名為M_Grid的新材質。

兩個新的材質函數。將它們分別命名為MF_Checker和MF_GridLines。

MF_GridLines

我的第一個材質函數將在世界空間中以固定間隔創建一組可定製的線。我們將在材質中使用此函數的兩個實例來創建主網格和輔助網格。

7.webp.jpg

這不是一個很複雜的節點,但它做了很多重要的數學運算。第一部分通過將繪製像素的世界位置除以任意輸入網格大小來生成我們的世界空間網格,然後將餘數乘以自身。

8.webp.jpg

該函數的輸出使用100的大小和1 的線寬

這真的很接近我們需要的,除了有一個問題。在某些世界空間位置,網格麵與網格上的一條線平行,會發生很多奇怪的閃爍。例如,這個立方體的頂麵位於網格的一條線上。Unreal 真的很困惑要畫什麼,所以它試圖一次畫兩個東西。

9.webp.jpg

但是,Epic 已經在他們的內置材質函數“WorldAlignedTexture”中為我們解決了這個問題。如果你雙擊查看此函數的內部,你會看到它們分別投影每個方向,然後根據頂點法線的方向將它們混合在一起。這是我們想要的行為,因此我們將實現類似的東西。

10.webp.jpg

你可以從深入了解Unreal 的材質函數中學到很多東西

MF_GridLines 中的“Creating masks based on vertex normal”部分也執行此操作。它提供了兩個蒙版,一個用於使用藍色通道(Z 軸)使頂點法線朝上或朝下,另一個用於使用紅色通道(X 軸)朝前或朝後。

11.webp.jpg

最後一部分拆分出我們需要的三個投影,然後根據vertex normal mask在它們之間進行混合。這最終會得到一個可以在任何方向上工作的網格,即使應用於更複雜的對象也是如此。

MF_Checker

這個函數稍微高級一點,但使用相同的原理。

12.webp.jpg

你可以從MF_GridLines複製/粘貼第一部分,但需要添加一些內容才能獲得我們需要的功能。這個版本不是生成一組網格線,而是創建一個棋盤格圖案,其大小是我們任意大小輸入的一半。我們需要記住這一點以備後用。

其餘部分是我們之前圖表的一個變體,我們將三個不同的投影分開,然後使用我們的vertex normal mask重新組合它們。重要的是要注意遮罩現在有一個額外的Projection transition contrast scalar輸入值。這將調整蒙版的對比度,改變投影之間過渡的粗糙度。

12-2.webp.jpg

我們需要在這個函數中做的最後一件事是添加一些顏色變化。我添加了兩個顏色輸入和一個 lerp 節點,該節點將使棋盤格圖案中的每個方塊的強度大約為第一個方塊的一半。

13.webp.jpg

主材質

最好把兩個材質函數組合在一起。這主要是放入我們的函數並創建參數來控製它們。

14.webp.jpg

Primary grid部分隻是我們MF_GridLines有用於控製其尺寸和線寬兩個標量參數材質功能中的一個。

Secondary grid部分是相似的,但也包括一些額外的節點。其中之一是 CameraDepthFade 函數,它設置細分線將淡出時距相機的距離。我將隻使用Fade Length輸入並將其餘部分保留為默認值,但你可以參數化其他值以獲得更多控製。

Checker部分就更簡單了,隻是需要添加一些參數來控製它。你可以使用我選擇的相同默認值,也可以選擇你自己的默認值。

3、效果

程序網格材質將適用於任何比例和任何網格。它使用很少的texture samplers,並且將是一個非常有效的工具來幫助你屏蔽關卡。如果你想進一步減少指令數,你可以在材質編輯器詳細信息麵板中將材質設置為“Unlit”和“Fully Rough”。

15.webp.jpg15-2.webp.jpg

材質的lit(頂部)和unlit版本之間的複雜性差異

- End -

來源:Thepoly公眾號

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

    2101期學員李思庭作品

  • 2104期學員林雪茹作品

    2104期學員林雪茹作品

  • 2107期學員趙淩作品

    2107期學員趙淩作品

  • 2107期學員趙燃作品

    2107期學員趙燃作品

  • 2106期學員徐正浩作品

    2106期學員徐正浩作品

  • 2106期學員弓莉作品

    2106期學員弓莉作品

  • 2105期學員白羽新作品

    2105期學員白羽新作品

  • 2107期學員王佳蕊作品

    2107期學員王佳蕊作品

專業問題谘詢

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

微信掃碼在線答疑

掃碼領福利1V1在線答疑

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

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

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

×

同學您好!

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