ue4---1,pbr概述,數(shù)據(jù)運(yùn)算,uv運(yùn)算

這是關(guān)于ben? cloward虛幻引擎材質(zhì)教學(xué)的筆記

pbr材質(zhì)簡(jiǎn)述

物體表,表面的入射光種類可以簡(jiǎn)單概括為兩類,直接光(直接接受光源發(fā)射出的光線)和間接光(周圍環(huán)境反射所產(chǎn)生的光)。反射光也是,高光(很多光線在一個(gè)方向進(jìn)行傳輸)和漫射光
引擎為了便于計(jì)算,將這四種光單獨(dú)計(jì)算再合成為一個(gè)整體。
平時(shí)我們所見(jiàn)到的圖片一般都有光照和陰影,這張照片是用儀器測(cè)量出的物質(zhì)表面顏色
實(shí)際測(cè)量所得的各種物質(zhì)的基礎(chǔ)顏色
法線貼圖上的每一個(gè)像素的rgb值,都代表它的這個(gè)像素點(diǎn)所對(duì)應(yīng)切線空間的xyz矢量值。所謂切線空間,就是以像素點(diǎn)垂直方向?yàn)閦軸,uv上的u為x軸,為y軸。
粗糙度,更像是微觀層面的法線貼圖
當(dāng)金屬通道輸入為1,高光輸入不再影響材質(zhì),影響反射的就是輸入的basecolor,又因?yàn)榻饘俚姆瓷涫?0-100%,所以給與basecolor的值不能太低

數(shù)據(jù)運(yùn)算

1,一維數(shù)據(jù),適合用于調(diào)整金屬度,粗糙組,高光。

這幾個(gè)數(shù)據(jù)都是使用一維浮點(diǎn)數(shù)作為輸入。

在這里,將一維數(shù)據(jù)到連接主節(jié)點(diǎn)的三維數(shù)據(jù)口,可以發(fā)現(xiàn)主節(jié)點(diǎn)自動(dòng)補(bǔ)齊了剩下的兩個(gè)通道數(shù)據(jù)。還是以復(fù)制的形式補(bǔ)齊。

2,二維數(shù)據(jù)適合用于調(diào)整uv,但是如果把二維數(shù)據(jù)給與三維接口。

主節(jié)點(diǎn)也是將缺失的第三通道補(bǔ)齊,不過(guò),補(bǔ)的是零。

3,三維數(shù)據(jù)適用于基礎(chǔ)顏色,自發(fā)光,法線。

當(dāng)二維或者三維數(shù)據(jù)輸入主節(jié)點(diǎn)的一維端口

這里使用的是一個(gè)二維數(shù)據(jù)(0,1)。

顯而易見(jiàn),所顯示的是粗糙度為0的情況。

所以,這種情況,主節(jié)點(diǎn)只會(huì)使用第一個(gè)通道的值。

4,主節(jié)點(diǎn)可以這樣對(duì)輸入數(shù)據(jù)進(jìn)行補(bǔ)齊和挑選,但其他節(jié)點(diǎn)之間就不太一樣


一維數(shù)據(jù)可以和其它維度運(yùn)算,二維不能與三維或四維運(yùn)算。

除了一維數(shù)據(jù)和主節(jié)點(diǎn),其它節(jié)點(diǎn)間的運(yùn)算都需要數(shù)據(jù)類型相同。

uv運(yùn)算

1,texcoord節(jié)點(diǎn)的含義

因?yàn)閎en在課程中講解的并不是很清楚,這段關(guān)于uv的部分都是我自己思考猜出來(lái)的。

這個(gè)是將texcoord節(jié)點(diǎn)的rg兩個(gè)通道傳遞給主材質(zhì)節(jié)點(diǎn)基礎(chǔ)顏色,因?yàn)檫@個(gè)節(jié)點(diǎn)只有兩個(gè)通道,直接傳遞不影響結(jié)果



其實(shí)texcoord節(jié)點(diǎn)就是這兩個(gè)方向布置的兩張灰度圖

上圖uv兩個(gè)通道合起來(lái)的樣子,下面把兩個(gè)通道單獨(dú)顯示,將texcoord的兩個(gè)通道拆出來(lái)


這個(gè)是u方向,顯示有些問(wèn)題,但是能看出來(lái)u方向從黑到白,即從0到1


v方向

texcoord節(jié)點(diǎn)在r和g通道提供兩張這樣的梯度圖。當(dāng)我們對(duì)texcoord節(jié)點(diǎn)進(jìn)行加減乘除時(shí)。

是對(duì)texcoord的這兩張圖進(jìn)行一系列運(yùn)算,改變r(jià)和g通道上的灰度分布,再將其傳遞給texture sample節(jié)點(diǎn)的uvs端口。

texture sample節(jié)點(diǎn)會(huì)檢查每個(gè)點(diǎn),讀取這個(gè)點(diǎn)傳遞進(jìn)來(lái)時(shí)對(duì)應(yīng)rg通道的灰度信息,再調(diào)用原uv的r和g灰度值所對(duì)應(yīng)位置的貼圖信息。

舉個(gè)例子,texture sample節(jié)點(diǎn)中,傳遞進(jìn)來(lái)一個(gè)點(diǎn),它的rg通道灰度值分別為(0.3,0.21),但它在傳進(jìn)來(lái)時(shí),在那張圖絕對(duì)位置是(0.8,0.9),此時(shí)它會(huì)調(diào)用原uv(0.3,0.21)處的貼圖數(shù)據(jù),雖然它在傳遞給texture sample時(shí)的絕對(duì)位置是(0.8,0.9)。

再舉個(gè)例子,如果將兩個(gè)數(shù)字輸入給texture sample的uvs端口,會(huì)咋樣?

如果輸入0.5和0.5,就是把r和g兩張灰度為0.5的圖對(duì)texture sample輸入,然后texture sample會(huì)將所有的點(diǎn)都調(diào)用原uv中(0.5,0.5)處所對(duì)應(yīng)的貼圖數(shù)據(jù)。

結(jié)果:


2,uv的加法

對(duì)于uv的運(yùn)算,輸入給texture sample,超過(guò)1的數(shù)值整數(shù)部分會(huì)被忽略,只讀取其小數(shù)部分。

此處以u(píng)(x)方向?yàn)槔?/p>

這是原始u方向上的圖像,要對(duì)他進(jìn)行加0.1的操作


對(duì)u方向加0.1,然后在u方向上就變成了0.1-1.1,又因?yàn)閷?duì)于整數(shù)部分這個(gè)節(jié)點(diǎn)是不進(jìn)行計(jì)算的,所以他的真實(shí)反映是0.1-1,然后是0-0.1

表現(xiàn)在貼圖上就是貼圖左移了10%。

實(shí)例:

沒(méi)對(duì)u位移之前


給u方向加0.1,貼圖左移10%

其實(shí)我們的計(jì)算主要是對(duì)u和v的黑白貼圖進(jìn)行變化,然后調(diào)用原uv數(shù)據(jù)和省去整數(shù)這部分都是texture sample這個(gè)節(jié)點(diǎn)在進(jìn)行。所以我們可以像編輯貼圖那樣對(duì)輸入texture sample的圖像進(jìn)行編輯。

3,uv的乘法

清楚了加法,乘法的道理也是一樣

這是原始狀態(tài),從左到右是0-1,正好是將uv平鋪一次


將u方向乘以3

從左到右就是從0到3

因?yàn)闀?huì)忽略整數(shù),所以就是將0-1重復(fù)三次,貼圖在u方向平鋪三次。

4,世界絕對(duì)位置下的uv變化

ben在案例中大量使用了世界坐標(biāo),是因?yàn)槭澜缱鴺?biāo)可以隨著物體改變而發(fā)生改變。

作用到材質(zhì)上,結(jié)果就是,只需要制作很少的貼圖,把他們擺在不同的位置,就有不同的材質(zhì)表現(xiàn)。

當(dāng)使用絕對(duì)世界位置時(shí),這些貼圖會(huì)平鋪很多次,究其原因,也是因?yàn)閭鬟f給texture sample的圖中,數(shù)值從0到很大,去除整數(shù),實(shí)現(xiàn)了多次0到1。

現(xiàn)在,將世界坐標(biāo)乘以較小的一個(gè)數(shù),得到下面這張圖

乘完后,確實(shí)變小了,方向卻不對(duì),看一下為啥


將r通道分離出來(lái),可以從中間看出來(lái)有一個(gè)從0到1的過(guò)程,符合uv中的u方向


再看b(z)方向,他中間有一段從0到1,可以確定它的方向是從下到上逐漸變大。和uv分布中的v方向相反,所以所得結(jié)果也相反
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容