潮濕效果
物體表面是如何變濕的?
- 物體表面吸水使顏色變深
- 潮濕的顏色會(huì)變得暗淡且飽和
實(shí)現(xiàn)
-
增加飽和度且變暗
潮濕的物體表面的特點(diǎn)
- 當(dāng)水作用在材質(zhì)表面,材質(zhì)表面的specualr會(huì)略微變?nèi)跚?mark>粗糙度會(huì)大幅降低
- 對(duì)于積水的表面,我們?cè)O(shè)置它的roughness = 0.07, specualr = 0.3,一個(gè)value = 1用于控制潮濕程度,最后進(jìn)行l(wèi)erp即可
實(shí)現(xiàn)
-
潮濕程度為1的效果
-
潮濕程度為0的效果
-
加入多孔性
多孔性也就是吸水性,多孔性越高,顏色越暗
表面水珠(Rain Drop)效果
本節(jié)展示如何實(shí)現(xiàn)雨滴效果
雨滴紋理
為了實(shí)現(xiàn)表面水珠,我們需要一個(gè)雨滴紋理,它的RG通道表示雨滴法線;B通道表示時(shí)間偏移mask(使得雨滴在不同時(shí)間出現(xiàn));alpha通道表示靜止和動(dòng)態(tài)的雨滴
-
雨滴法線
-
時(shí)間偏移
-
動(dòng)靜雨滴
黑點(diǎn)表示靜止的雨滴,白色表示動(dòng)態(tài)雨滴
實(shí)現(xiàn)
處理normal
因?yàn)樵诩y理圖中normal的范圍為[0,1],而歸一化normal范圍為[-1,1],因此我們需要進(jìn)行一個(gè)轉(zhuǎn)化
處理時(shí)間偏移
這里重點(diǎn)在于Frac(),因?yàn)镚通道值大多各不相同,這樣減去時(shí)間的增量并取小數(shù)部分限制在[0,1]即可實(shí)現(xiàn)如下的閃爍效果
動(dòng)態(tài)雨滴
只需將時(shí)間offset用于A通道即可實(shí)現(xiàn)動(dòng)態(tài)雨滴效果
-
無(wú)normal
"Multiply" "subtract" 是因?yàn)檫@里想提取time offset的白色雨滴(大雨滴) -
有Normal
靜態(tài)雨滴
-
因?yàn)樵贏通道中,黑色是靜態(tài)雨滴,白色是動(dòng)態(tài)雨滴,在處理動(dòng)態(tài)效果時(shí)只處理了白色的值,那么在處理靜態(tài)效果時(shí)進(jìn)行一個(gè)反轉(zhuǎn)即可
注意,這里使用power()是因?yàn)槲覀冎幌胍玫桨咨突疑男Ч⒉幌胍疑?,但此時(shí)范圍是[-1,1],因此需要控制一下范圍
控制雨滴效果方向
-
在現(xiàn)實(shí)中,雨水來(lái)自天空,肯定只有上面才有雨滴效果,整個(gè)物體都有雨滴效果是不科學(xué)的,因此我們需要控制雨滴效果的方向——normal方向
控制水滴的粗糙度
-
目前已知表面偏向0,雨滴偏向1,而我們想要的效果是雨滴光滑表面粗糙,因此可以將之前得到的值進(jìn)行反轉(zhuǎn)然后作用域roughness即可
流淌雨滴(Rain Drip)效果
流淌雨滴紋理
和雨滴效果相同,流淌雨滴紋理由法線貼圖(RG)、mask(B)、time offset(A)組成
映射到世界空間
-
為了應(yīng)對(duì)物體從局部空間變化到世界空間的狀況,需要將紋理映射到世界空間,這樣無(wú)論物體進(jìn)行任何矩陣運(yùn)算,雨滴的流淌總是正確的
-
使用世界空間的位置作為采樣的紋理坐標(biāo),只需提取RB
這里的Multiply()是為了正確的比例,乘以的value越小,采樣得到的圖像越大;value越大,采樣得到的圖像越小
為什么還有負(fù)號(hào)呢?因?yàn)檫@樣可以對(duì)采樣方向取負(fù)
-
采樣側(cè)面
這里改變正負(fù)號(hào)是為了讓物體的側(cè)面和正面不再相同
-
混合正側(cè)面
采樣兩次紋理進(jìn)行合并是很簡(jiǎn)單的,但只采樣一次又該如何實(shí)現(xiàn)呢?
在這里采用世界空間的法線作為物體面的判斷基準(zhǔn)
制作動(dòng)畫(huà)的mask紋理
它的rgb通道都是相同的,a通道沒(méi)有使用
實(shí)現(xiàn)流淌雨滴
-
將mask紋理映射至世界空間
下圖中,可以將白色部分視為雨滴,基于這個(gè)實(shí)現(xiàn)動(dòng)畫(huà)即可
-
初步雨滴動(dòng)畫(huà)
-
控制雨滴速度
雨滴在不同物體上的滑落速度是不一樣的,因此我們還需要讓這些雨滴的速度有所差異
-
雨滴法線
-
將雨滴效果控制在物體側(cè)面
3.5用于控制正方向的白色范圍,-1,5用于控制負(fù)方向的白色范圍
雨滴漣漪(Rain Ripple)效果
本節(jié)將展示如何實(shí)現(xiàn)雨滴打到水面產(chǎn)生的波紋效果
紋理
-
動(dòng)畫(huà)mask紋理(漸變紋理)
用該紋理可以實(shí)現(xiàn)圓從無(wú)到有,從小到大,最后漸漸消散
-
法線紋理
該紋理的R通道是動(dòng)畫(huà)mask紋理,GB通道是法線信息 -
多個(gè)漣漪紋理
alpha通道包含time offset
波紋效果
-
實(shí)現(xiàn)紋理動(dòng)畫(huà)都需要Time節(jié)點(diǎn)。很容易實(shí)現(xiàn)以下內(nèi)容
-
控制波紋邊緣的銳度(讓波紋邊緣不再是漸變色)
-
初步實(shí)現(xiàn)波紋
因?yàn)樗y屬于正弦函數(shù),因此在這里我們使用一個(gè)sin,并讓他在一個(gè)周期內(nèi)產(chǎn)生五個(gè)波紋(因?yàn)閁E5的sin函數(shù)默認(rèn)周期為1)
-
標(biāo)準(zhǔn)的sin函數(shù)
UE5中的sin函數(shù)并不是標(biāo)準(zhǔn)的sin函數(shù)(一個(gè)周期為2Π),它的默認(rèn)周期為1,因此我們需要將其改為6.283185
-
放大淡出效果
目前我們實(shí)現(xiàn)的效果是到最大然后消失,但我們希望的是放大淡出。目前的效果是因?yàn)槟芰渴菑?到1,而放大淡出的效果應(yīng)該是從1到0
法線
多個(gè)漣漪
- 為每個(gè)漣漪賦予單獨(dú)的Time
多個(gè)漣漪相互疊加
-
目前的效果只是在固定位置不同時(shí)間段產(chǎn)生波紋,但沒(méi)有展現(xiàn)波紋的疊加效果
-
首先,我們需要對(duì)"1-x"進(jìn)行修改,添加力的因素
- "Multiply 0.8"是因?yàn)樾枰紤]力的因素,讓漣漪的初始能量不為1
- "Add 0.2"是因?yàn)樾枰紤]雨滴重量不能為0的情況
-
漣漪的疊加
總體思路是使用四個(gè)不同的漣漪效果——不同的時(shí)間,不同的漣漪強(qiáng)度,對(duì)采樣結(jié)果進(jìn)行疊加
-
求取四個(gè)不同的時(shí)間
-
求取四個(gè)不同的uv
-
求取四個(gè)不同的雨滴重量
-
normal混合
-
最終效果
水坑(Rain Puddle)效果
紋理
-
扭曲紋理,
對(duì)于扭曲紋理,我們將該紋理設(shè)置為"Linear Color"且無(wú)"sRGB",因?yàn)樗话叶戎怠5诙堉?,我們把該圖的黑色部分視為水坑,部分有水坑部分沒(méi)有符合現(xiàn)實(shí)常理(后面處理會(huì)進(jìn)行"1-x"運(yùn)算,將白色部分看成水坑)
映射至世界空間
-
初步映射
-
控制水坑大小
這是一個(gè)灰度圖,通過(guò)做減法即可放大水坑,但這里采用一種更加靈活的方式——lerp
-
控制水坑位置
讓上圖可以看到水坑的紋理延申到了其他面,但正常來(lái)說(shuō)應(yīng)該只有上面才會(huì)出現(xiàn)水坑,因此需要想辦法讓水坑只出現(xiàn)在物體上面
-
確保水坑只有白色
從上圖可以得知,有些部分是灰色的。因此我們需要再"Multiply"確保只存在白色和黑色
normal
-
水坑的漣漪不僅僅在水滴落下時(shí)會(huì)產(chǎn)生,當(dāng)被風(fēng)吹時(shí)也會(huì)產(chǎn)生。水滴落下的效果在之前已經(jīng)實(shí)現(xiàn)了,對(duì)于風(fēng)吹的漣漪我們采用UE5提供的紋理
-
-
控制漣漪位置
本小節(jié)的實(shí)現(xiàn)是水坑,那肯定是在水坑處產(chǎn)生漣漪??!
融合所有效果
- 將以上所有效果融合即可實(shí)現(xiàn)一個(gè)完整的雨天shader
- 你可能不是很清楚,這里的mask究竟代表什么含義。仔細(xì)觀察下圖,不難發(fā)現(xiàn)mask其實(shí)就是我們所實(shí)現(xiàn)的效果
normal 混合
混合表面水珠normal 和流淌雨滴normal
- 采用Rain Drip作為alpha的原因:假定我們只考慮alpha為1/0的情況,若alpha為1,我們希望只有RainDrip效果沒(méi)有RainDrop,以Lerp效果來(lái)說(shuō)確實(shí)如此;若alpha為0,我們希望只有RainDrop效果沒(méi)有RainDrop,從Lerp效果來(lái)說(shuō)確實(shí)如此。但若以RainDrop作為alpha則不符合我們的條件
混合外部normal
- 因?yàn)槟壳斑@兩個(gè)normal只是內(nèi)部實(shí)現(xiàn)的material function的normal,還需要與欲使用的材質(zhì)的normal進(jìn)行blend
水坑
濕度控制
- max():因?yàn)檫@三個(gè)效果是各自獨(dú)立的材質(zhì)函數(shù),如果分開(kāi)運(yùn)算會(huì)使得這三效果不一致,我們需要求得以這三之一的max以達(dá)到最好且一致的效果
吸水性
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-482184.html
reference
Rustling Leaves Shader - UE4 Materials 101 - Episode 12 - YouTube文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-482184.html
到了這里,關(guān)于UE5 材質(zhì) 雨滴shader的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!