UE4材質 製作UV貼圖

我們想要製作一張uv貼圖,是一個什麼意思呢?我們知道一般來說,我們都是根據uv來採樣貼圖,一般來說這個事情都是美術同學來製作的,所以我們想要進行的是在UE4中,動態或者根據自己的實際情況來生成一張貼圖,並且我們要存儲的內容也可以自己定。你可以自己生成法線貼圖,或者是世界座標的貼圖,等等,並不拘泥於只存儲顏色信息。

那麼,我們如何進行相關的操作呢。

渲染目標

首先我們要做的就是生成一張RT,也就是renderTarget,
在內容瀏覽器中,我們進行創建,這裏我們要創建兩個RT。創建後,打開它們並將分辨率設置爲所需的分辨率。一個大概的尺寸是1024x1024。你可以隨便給它們起個名字,但我建議給它們起個名字:rt_scenecapture然後rt_expanded以避免以後混淆。

展開材質

製作一個新材質,並將其設置爲“Unlit ”和“Two Sided”(防止任何光照貼圖UV都被鏡像,這將導致它們在展開時背面不清晰)。然後將這些節點插入到材質的世界位置偏移輸入中。“Size”將是您設置的Scene Capture actor的Orthographic width。在本例中,我們將使用之前文章提到的BoundingBox0-1UV連接到自發光上。這很有用,因爲它可以用於在光線跟蹤或光子映射時檢查材質中的光線位置。
![Material_Unwrap.jpg][1]

The Actor Blueprint

接下來我們將製作一個新的藍圖Actor並添加一個“場景捕捉組件2d”組件。

![SceneCaptureSettings.gif][2]

選擇組件並將“投影類型”(Projection Type)設置爲“正交”(Orthographic)並將“正交寬度”(Ortho Width)設置爲1000,以匹配“UV展開大小”(UV Unwrap Size)1000。將紋理目標設置爲我們在第一步中創建的rt_scenecapture。同時將位置設置爲0,0,500,並將旋轉設置爲-90,-90,0。這是爲了從自頂向下的視圖匹配UV展開的方向。最後,將“Capture Every Frame”設置爲false,以防止它無緣無故地連續捕捉。

接下來,將“靜態網格”組件添加到藍圖中,並將其所有設置保留爲默認值。然後添加一個新變量,使其成爲“靜態網格”類型並使其可編輯(變量右側的這個小眼球按鈕)。
![ConstructionScript.gif][3]
現在轉到藍圖的構造腳本,放置一個“set static mesh”節點,該節點將靜態網格組件設置爲使用您創建的“static mesh”變量。接下來,添加一個“Set Material”節點並指定前面提到的展開材質。具有多個材質元素的靜態網格可以使用“get num materials”-1作爲最後一個索引的forloop將展開材質指定給所有元素。

現在我們只需要在事件圖中添加一些藍圖節點。首先,我們放置一個“自定義事件”並將其命名爲“Dilate”。在這次活動中,我們只做了兩件事。首先我們告訴場景捕捉來捕捉圖像。然後我們調用“Draw Material to Render Target”函數。我們將膨脹材質用作材質,將第二個渲染目標rt_expand用作指定的渲染目標。

一旦將此數據寫入渲染目標,通常可以使用實際的渲染目標執行所需的任何操作,因爲位置貼圖在HDR形式下最有效。如果要創建擴張紋理的靜態紋理,可以在內容瀏覽器中的渲染目標上單擊鼠標右鍵,然後選擇“創建靜態紋理”:

發佈了44 篇原創文章 · 獲贊 10 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章