原神角色渲染03
高光

lightmap的r通道是區(qū)分高光區(qū)域的信息,以0.1為間隔。每一層代表不同的材質的高光。我數了一下迪西婭這張似乎有7層,分別是(0,0.2,0.5,0.6,0.7,0.8,0.9,1),我通過數學運算來分別提取這些層。(運算原理和之前提取ramp區(qū)域的一樣,把要提取的值移到0上,然后取絕對值再把其他部位變成1),值得一提的是,要把lightmap的壓縮給關了,不然提取出來的黑色部位不是死黑也就是不是0值,估計原理還是和之前一樣,壓縮后圖像精度下降了。
灰度值為0的地方,看起來是皮膚和一些布料啥的。

灰度值為0.2的地方,看起來是皮靴?

灰度值為0.5的地方,看起來好像還是皮制品

0.6-1.0的高光范圍。

我后面在擴大范圍后進行了一個減0.1的操作來降噪。至于為什么能,仔細想一下就懂了。

所以其實看完各層高光后可以發(fā)現,除了1.0是金屬,其他都是非金屬,有大佬直接劃分高光為金屬非金屬兩種,不過我覺得在游戲里面應該還是對各層高光進行了不同的高光強度的劃分。但是我這里也直接分為兩種吧,后面要細化的時候再改,反正改也很簡單。

我直接以1.0值的劃分來作為一個金屬與非金屬區(qū)域的mask。然后非金屬區(qū)域的高光直接乘以b通道的高光強度,金屬區(qū)域的高光再乘上個基礎色。

上面那個是基礎效果,下面我們來對金屬的高光進行優(yōu)化。首先便是采樣這個金屬高光圖,據說使用方式和matcap一樣。那么我們就按那個方法來采樣。采樣方法可以看我之前的專欄。

采樣結果以及乘上基礎色后。我測試了一下,應該是用這個matcap后就不用布林馮了。

融合各高光后的結果。(雖然可能乍一看還看不出啥)

補充1:可視化法線矢量

補充2:ramp優(yōu)化(或者說改動)
之前使用smoothstep的ramp過渡我還是感覺有點硬(雖然卡渲好像就是要這種硬的),但是我去角色演示里面看了下好像還是有點軟的。

所以,我在半蘭伯特那里進行了修改,不使用smoothstep,而是用自己想的數學運算。(我發(fā)現我好喜歡用數學運算來改變各種映射,其實只要想清楚原理,這種映射挺簡單的)

我解釋一下這個運算過程吧,如下圖。

唉我現在竟然能想出這種映射,希望未來的我不會退步到想不出這種運算,甚至看還不懂。