1. 程式人生 > >談談遊戲影視中的貼花decals技術

談談遊戲影視中的貼花decals技術

貼花是遊戲引擎當中常用的一類貼圖技術,通常是把圖片繪製到另一個物體的表面,遊戲當中我們常常看到的汙跡,彈孔,腳印,牆面塗鴉等等這些都歸功與decals神奇效果。

這類技術有很多種,有的純粹是面片加透明貼圖,有的是分層材質,所以說貼花技術不只是單純的一種技術,它可以是一種材質,也可以是模型,或者是兩者效果的混合,有很多種表現方式

一般運用於遊戲當中decal的技術是螢幕空間的延遲貼花,具有很好的視覺化佈置效果,也具有很好的效能

 

比如ue4當中的延遲貼花,一般的Decals是一種材質,這種材質使用如下設定後,就可以像模型一樣拖入場景的空白區域(和正常材質不同,正常材質只能拖到模型上),這種材質會有一個框表示投射的範圍,放入其內部的模型就會被投射上貼圖。

當然貼花不只是投射顏色(也就是材質中一般的diffuse),它也可以投射其他的屬性,包括自發光,粗糙度之類,這個一般看引擎,ue4支援的還是比較多的,還能投射視差3d效果。這種貼花一般要注意的就是過於垂直它的平面會使紋理產生拉伸,但是也可以通過材質計算切掉多出來的部分

貼花還能輔助製作一些薄的模型部分
比如作為水塘和積水之類有很好的作用,一般傳統方式通常使用平面
http://forums.joinsquad.com/topic/28637-free-assets-puddle-decal-material/

ue4還有一種貼花是mesh decals,國內有翻譯為網格模型多重貼圖,是4.13才開始有的,這種貼花又恢復到普通材質了,材質是直接賦予到模型上的是結合模型使用的,普通貼花是一個平面的投射,但是mesh decals是一個立體的貼花,可以方便地在非平面的地方利用彎曲或者其他包裹的模型來豐富模型的細節,這種貼花一般製作模型細節的補充,例如柱子上的凹痕或者武器上的細節,至於這些為什麼不做成貼圖,因為貼花更方便更換。

這種貼花要注意的就是包裹模型需要比本身模型略大一點,防止模型之間穿插,可以用於骨骼物體模型也是很好的優勢

 

離線渲染我見過的decal技術比較少,類似功能更多使用層材質
下面是利用maya中projection節點和arnold層材質模擬的decals
在maya2018 arnold5下測試效果,材質連起來比較麻煩,一開始簡單,但是有置換的話,置換部分需要另外連比較麻煩。
如果只有一個材質可以用aimix材質,但是這個只能混合surface shader,而不能混合材質前面的結果,所以也比較麻煩,最後多個decals用了ailayer材質

但是因為maya中材質系統實在比較差,基本沒法和ue4材質編輯器或者substance designer相提並論,缺少太多功能,所以很多材質方式都顯得比較雞肋,在實際專案中不好控制也不方便使用

maya 的projection可以參考
https://knowledge.autodesk.com/support/maya-lt/downloads/caas/CloudHelp/cloudhelp/2018/ENU/MayaLT-CharacterAnimation/files/GUID-B7E73748-5F8E-4E66-BE88-DF3C2A3DF438-htm.html
http://wiki.bk.tudelft.nl/toi-pedia/Texture_positioning_-_Projection_mapping

ue4 decals
https://docs.unrealengine.com/en-us/Resources/ContentExamples/Decals/1_1
MeshDecals
https://docs.unrealengine.com/en-us/Engine/Rendering/Materials/MeshDecals
https://docs.unrealengine.com/en-us/Engine/Rendering/Materials/HowTo/MeshDecals
decal參考
http://martindevans.me/game-development/2015/02/27/Drawing-Stuff-On-Other-Stuff-With-Deferred-Screenspace-Decals/