Unity2020:實(shí)時(shí)矢量位移映射方法

Amplify Creations團(tuán)隊(duì)與VDM和Amplify Shader Editor分享了關(guān)于矢量位移映射及其實(shí)驗(yàn)的大量文章,并逐步說(shuō)明了如何在Mudbox中創(chuàng)建VDM并在Unity中使用它。
關(guān)于位移貼圖
傳統(tǒng)上,將位移與視差貼圖或POM混淆,該位移用于沿網(wǎng)格面法線偏移頂點(diǎn)。將巖石或磚石材質(zhì)應(yīng)用到簡(jiǎn)單的四邊形上,使其頂點(diǎn)偏移(位移),由于其多邊形數(shù)有限,您將獲得搖擺不定的效果。細(xì)分該網(wǎng)格,您將開始看到置換紋理的更接近表示。但是有一個(gè)問(wèn)題,您的常規(guī)位移紋理僅包含高度數(shù)據(jù),以在單個(gè)方向上偏移頂點(diǎn)。這是使用Amplify Shader Editor進(jìn)行矢量位移映射的地方。

由于多計(jì)數(shù)要求,傳統(tǒng)的置換通常在游戲中不太常見,開發(fā)人員傾向于使用像Parallax Mapping這樣的技術(shù),該技術(shù)提供了不錯(cuò)的但有限的近似值。令人驚訝的是,當(dāng)您需要變形網(wǎng)格或僅對(duì)諸如波浪四邊形之類的物體應(yīng)用波浪狀效果以燃燒火焰或搖擺植物時(shí),位移或偏移在實(shí)時(shí)VFX中非常普遍。通常會(huì)進(jìn)一步操縱簡(jiǎn)單的高度,并將其與實(shí)際著色器中的其他效果結(jié)合在一起。一個(gè)值得注意的例外是地形,游戲中幾乎所有傳統(tǒng)地形都是由某種規(guī)則的高度位移產(chǎn)生的。

矢量位移映射的使用更為罕見,通常保留給電影和其他離線渲染場(chǎng)使用,并且由于位移網(wǎng)格需要較高的頂點(diǎn)數(shù)才能準(zhǔn)確渲染其細(xì)節(jié),因此通常與細(xì)分形式結(jié)合使用。通常以高度詳細(xì)的字符(無(wú)論是人類還是鱗狀龍)看到。VDM是呈現(xiàn)超詳細(xì)模型同時(shí)仍能夠使用簡(jiǎn)化網(wǎng)格的最高性能方法之一。?
VDM實(shí)際上可以被視為Geometry Image的一種形式,該技術(shù)最近因在Unreal Engine 5 Nanite中的使用而變得流行。

應(yīng)用矢量位移貼圖的位置
向量位移貼圖不僅用于渲染,而且還廣泛用于資產(chǎn)生產(chǎn)中。這是將雕刻的細(xì)節(jié)重新用作圖章以確保設(shè)計(jì)之間一致性的好方法。實(shí)際上,您可以為ZBrush和Mudbox創(chuàng)建并分發(fā)自己的VDM圖章。它們可以在雕刻工具(例如ZBrush)中進(jìn)行應(yīng)用和混合的簡(jiǎn)單性,有點(diǎn)像工具打擊,使其成為所有產(chǎn)生它們的整個(gè)社區(qū)的任何管道的必備工具。
您可以像Nicolas Swijngedau一樣在他令人敬畏的Horror VDM Brush Pack中混合搭配。

或者將其用于更實(shí)用的東西,例如他的Beard VDM筆刷包。
https://www.artstation.com/marketplace/p/m3Db/zbrush-beards-vdm-brush

向量位移可用于在網(wǎng)格面法線以外的方向上偏移頂點(diǎn),這意味著您可以以足夠的精度位移網(wǎng)格以使其近似于原始的高多邊形頂點(diǎn)位置。?
以這個(gè)蘑菇為例:沒(méi)有向量位移,您只能使其偏移,但使用VDM,您實(shí)際上可以實(shí)現(xiàn)更接近原始造型的效果。

使用VDM和Amplify Shader Editor進(jìn)行實(shí)驗(yàn)
我們一直在尋找一種可能的簡(jiǎn)化工作流程,該流程將允許用戶實(shí)時(shí)利用VDM而不會(huì)陷入技術(shù)要求的困境。事實(shí)證明,最麻煩的部分實(shí)際上是獲取可在諸如Unity 3D之類的引擎中使用的數(shù)據(jù)。一旦掌握了如何使用Mudbox創(chuàng)建VDM的方法,我們就開始嘗試使用Unity的Amplify Shader Editor。
https://assetstore.unity.com/packages/tools/visual-scripting/amplify-shader-editor-68570?aid=1011l3ogR&utm_source=aff
實(shí)際上,VDM在著色器編輯器中非常容易設(shè)置,并且完全基于節(jié)點(diǎn),因此可以嘗試進(jìn)行實(shí)驗(yàn)。
我們從在這些類型的示例中通常看到的常見“蘑菇”開始嘗試。同樣重要的是要注意,我們有意去尋找極端的例子(四到高聚)。用戶仍然可以使用與高多邊形網(wǎng)格非常相似的低多邊形網(wǎng)格。?
這種類型的VDM非常適合單個(gè)對(duì)象,但也可以用于詳細(xì)對(duì)象的修補(bǔ)程序中。我們甚至可以使用摳圖著色器來(lái)隱藏四邊形的未使用基礎(chǔ)。由于我們使用的是Tessellation,因此我們幾乎可以根據(jù)相機(jī)距離自由進(jìn)行LOD控制。


我們對(duì)結(jié)果感到非常滿意,但是我們決定嘗試一些更實(shí)用的方法,因此我們選擇了下一個(gè)合乎邏輯的東西,那就是一款Poltergeist / Videodrome風(fēng)格的電視,它將困擾您的夢(mèng)想。
我們首先構(gòu)建了帶有UV的基本低聚電視,然后我們將其帶到Mudbox進(jìn)行了詳細(xì)設(shè)計(jì)。每個(gè)元素都在單獨(dú)的圖層中完成,因此我們可以分別導(dǎo)出它們以供以后在著色器中進(jìn)行操作。?


如何在Mudbox中創(chuàng)建VDM并將其導(dǎo)入到Unity
第一步應(yīng)該是測(cè)試您的創(chuàng)作工具,以確??梢栽赨nity中使用導(dǎo)出的地圖。我們的編輯器軟件包包括一個(gè)HDRP示例,可幫助您入門,但是可以使用Amplify Shader Editor輕松將其轉(zhuǎn)換為其他渲染器。
我們建議使用Mudbox,因?yàn)樗坪跏鞘褂媒^對(duì)切線模式在幾乎任何類型的烘烤中獲得一致結(jié)果的最簡(jiǎn)單方法(對(duì)象也可以,只需確保在R通道輸出上添加一個(gè)減節(jié)點(diǎn))。
首先在Mudbox中創(chuàng)建一個(gè)Plane,將其命名為低。
克隆平面,將其命名為高。
在高處雕刻一些東西,例如耳朵或涼爽的墻壁。
選擇最低點(diǎn)并轉(zhuǎn)到“提取地圖”。
切換矢量位移,在列表上設(shè)置高網(wǎng)格,選擇“絕對(duì)切線”,并確保將其保存到32位EXR。
確保還切換法線貼圖提取并使用細(xì)分方法對(duì)其進(jìn)行烘焙(法線紋理可以為8位)。
在Mudbox方面就可以了。在編輯器中執(zhí)行以下步驟:
導(dǎo)入您的32位EXR VDM紋理和法線貼圖。
確保在Unity中將法線貼圖紋理參數(shù)設(shè)置為“法線貼圖”。
在EXR VDM上禁用sRGB(色彩紋理)。
確保將項(xiàng)目設(shè)置為線性,否則Unity會(huì)通過(guò)限制EXR 0-1弄亂您的負(fù)值。
將“法線”拖放到“?放大著色器編輯器”?畫布中,然后將其插入“法線”輸入中。
添加EXR VDM紋理;您需要添加一個(gè)添加節(jié)點(diǎn),以便可以將綠色通道替換為藍(lán)色,還需要添加一個(gè)變換方向節(jié)點(diǎn),以便可以從切線到對(duì)象。
如果位移顯示為“ off”,請(qǐng)嘗試添加“縮放倍增”節(jié)點(diǎn)。對(duì)于打算用于Unity的大多數(shù)模型,0,10似乎可以解決問(wèn)題。

這些是基礎(chǔ)。如果一切都按預(yù)期進(jìn)行,那么您應(yīng)該得到如下結(jié)果

我們使用Substance Painter對(duì)墻進(jìn)行了一些額外的步驟,這是一種快速而輕松的紋理化對(duì)象的方法。?
我們導(dǎo)出了網(wǎng)格的低,中和高多邊形版本。
用過(guò)的Substance Painter生成底墻而不會(huì)破壞(可選)。
并導(dǎo)入損壞的中多邊形以創(chuàng)建材料的損壞版本(我們使用了相應(yīng)的損壞的高多邊形版本來(lái)生成地圖)。
這是我們墻面效果的完整指南:

可以使用的地方
盡管您可以使用基于距離的細(xì)分來(lái)獲得免費(fèi)的LOD控制,但是細(xì)分本身目前是性能密集型的。我們相信可以肯定的是,下一代GPU將通過(guò)使用網(wǎng)格著色器極大地改善曲面細(xì)分性能以及幾何成像。
目前將其添加到典型游戲中可能并不可行;但是,在不受常規(guī)游戲約束約束的更加封閉的場(chǎng)景中,該技術(shù)還有許多其他用途。
在嘗試VDM時(shí),會(huì)想到幾個(gè)示例,例如具有復(fù)雜表面(外星人,生物,恐龍等)的詳細(xì)角色,復(fù)雜角色的服裝,高度詳細(xì)的風(fēng)景裝飾品,科幻面板,墻壁/地面損壞貼花,實(shí)際的風(fēng)景細(xì)節(jié)通常無(wú)法通過(guò)規(guī)則位移或視差貼圖來(lái)實(shí)現(xiàn),甚至對(duì)于墻面,內(nèi)部或海浪也無(wú)法平鋪VDM紋理。
實(shí)際上,對(duì)于如何使用它沒(méi)有最佳使用規(guī)則,該技術(shù)足夠靈活,可以將其與其他效果(例如我們的電視指針)結(jié)合使用,通過(guò)將VDM與“噪聲節(jié)點(diǎn)”相乘,可以添加波動(dòng)效果。

有一些值得注意的項(xiàng)目使用了Tessellation進(jìn)行定期置換,《Ghost of a Tale》是使用效果最好的最頻繁使用的游戲之一。但是VDM在實(shí)時(shí)應(yīng)用程序中的使用率很低。我們實(shí)際上不知道目前是否有任何使用它的東西。??

您最有可能在使用某種形式的向量位移映射創(chuàng)建的游戲中看到資產(chǎn);VDM格式中有很多內(nèi)容,用于有機(jī)和硬表面藝術(shù)。

歸根結(jié)底,真正適合喜歡嘗試新穎技術(shù)的用戶。我們期待看到他們提出了什么瘋狂的東西!
注意:我們測(cè)試了一些替代工具來(lái)生成VDM紋理,但是不幸的是,我們的測(cè)試無(wú)法確定哪種方法最好。如果您有任何見解,我們很樂(lè)意聽取有關(guān)ZBrush,Blender或替代軟件的可能解決方案的信息。?您可以在官方的Amplify Creations Discord上找到我們。
https://discord.com/invite/zVdqVSp
ZBrush?為VDM測(cè)試提供了一個(gè)場(chǎng)景。在Blender中,設(shè)置起來(lái)有點(diǎn)復(fù)雜,但是nutelZ似乎已經(jīng)完成了一些工作(尚未與Unity / ASE完全兼容)。我們希望看到這種方法成為Blender藝術(shù)家的入門技術(shù)(您可以在此處下載nutelZ的Custom Blender Node?)。
https://drive.google.com/file/d/0B1mc80hFkBqcZHAxNUwtNENOTkU/view
https://assetstore.unity.com/packages/tools/visual-scripting/amplify-shader-editor-68570
https://assetstore.unity.com/packages/tools/visual-scripting/amplify-bundle-173849
轉(zhuǎn)~https://80.lv/articles/case-study-vector-displacement-mapping-in-real-time/
微信公眾號(hào)關(guān)注:CG小蘇???
?更多免費(fèi)~??
?更多CG資訊等著你~
