【露西亚-深红之渊】自娱自乐向战双卡渲还原尝试

前言

仅供个人记录和学习、交流,侵删

贴图简介

战双的模型贴图除了官方给的MMD模型就有的Base Color和法线贴图以外,还可能会有一张LightMap(RGB),一张PBRMap(RGBA),一张Ramp贴图(类似LUT)。
Ramp的话,白毛只有一张头发的,而且只给了暗部的颜色。其他人物大概率都会有一张皮肤的贴图来模拟3S效果(心疼两秒)。

剩下两张贴图各通道的作用,看过几篇讲战双渲染的说法不一,我自己做的时候也是边参考别人的文章边对着UV和贴图还有游戏画面比较连猜带蒙。可能每个角色的shader都是定制的,所以这篇文章的贴图介绍也只针对露西亚——深红之渊 泛用式。
先看看这张绿乎乎的xxxAO.png
在这里插入图片描述
R:高光范围
G:RampOffset
B:高光强度
解释下G通道,就是对 从亮部变成暗部的那个阈值(下面会讲到) 进行偏移,(某种程度上也可以理解成AO),像铭牌后面的常暗、头发暗部的形状,都是这么做的。
头发的暗部形状
铭牌后面的肉(钢板?)

再看看这张xxxPBR.png

左上到右下RGBA
啊喂,怎么这么糊啊?
是的,你没看错,这张图是32x32的。
在PS里面打开,放大到能看清楚,已经可以看见好大一块像素格子了。
当时就被震惊到了:还能这么省?
R:粗糙度
G:金属度
B:高光遮罩(用来区分是否PBR及其强度)
A:高光强度、材质区分
注意需要PBR的部分的镜面反射与普通的镜面反射相互独立

描边

最普通的BackFacing(法线外扩),其他文章已介绍得十分详尽故不赘述。

漫反射

正常的半兰伯特,然后用一个阈值定出明暗分界,可以稍微smooth一下让分界线不要那么硬。
更好更完善的讲解可以看知乎上2173大佬的文章,简明易懂有源码。

镜面反射

同上。正常的布林冯,照样拿一个阈值定出高光有和无的阈值来定分界,记得要乘高光强度和高光范围。

边缘光

各部分的边缘光思路不一样,部分也加入了我自己的想法所以并没有完全照着游戏来hhh
先讲肉
在这里插入图片描述
我希望通过边缘光来实现皮肤次表面散射效果(SSS)。
关于3S效果,网上有许多大佬给出更加正确、完善的解释和做法。我这里只是用最简单的方法来模拟最基本的3S效果。
先来看看日常生活中的次表面散射
请添加图片描述请添加图片描述
两张图都是我拿着手机手电筒在比较近的距离照我的手,区别是一个是从后面照一个是从前面照
可以看到当有强光从后方射来时,肉比较薄的部分(即边缘)更容易观察到散射现象,即变亮变红。
从前方射来时,明暗交界线处在逐渐变暗的同时也会有饱和度加深的现象产生。
在刚才的漫反射部分,明暗交界线已经柔化过了,所以后者可以姑且不管
那前者就是菲涅尔乘上暗部,再smooth一下
在这里插入图片描述
然后是脸
ayanami嘿嘿嘿...
二次元里经常在逆光的时候在面部边缘画一条比较硬的明部,来让画面更加通透。
实现和上面差不多,不过注意这里就不要给太多的柔化了,或者也可以直接clamp一下。
头发也会这么画,但鉴于效果不佳且游戏里本来也没有,所以想了想还是没加上去。

手:
请添加图片描述
照样是比较硬的边缘光,不过这里不是提亮而是直接变白
不知道为什么这条边缘光游戏里手臂上没有,为了保证材质一致所以我给手臂也加上了
请添加图片描述
衣服、绑腿等布料部分不加边缘光

PBR结合

其实就是把Cook-Torrance的BRDF拿过来用一用,光照模型已经在外面的.cginc写好了,直接把参数写进去就好
在这里插入图片描述

一些Tricky的小细节

飘眉效果

请添加图片描述
人物的头发下面可以把眉毛和眼睛显示出来,有透明度混合,而且并不是所有头发都是透的!左眼不透,右眼正前方那条毛比较透,然后转个角度让其他毛挡在右眼前面的时候又渐渐变得不透,应该是想做成薄的头发能透过头发看到眼睛和眉毛,厚的头发就只能看见头发。

神奇的是,头发和脸是仅有的有顶点色的部件,猜测和飘眉效果有关系
。。。好吧我想了好久都没想明白怎么把算式写得像游戏里的一样,或许还计算了头发到眼睛(眉毛)的距离,距离越远混合中头发的比例越高
(后记:在知乎上看到一篇分析是猜测和描边宽度有关系,我对比了下游戏感觉很有可能,灰色部分涂到的变粗,黄色部分涂到的不描边。然后脸部的顶点色用来控制阴影。)
在这里插入图片描述
于是我自己画了张遮罩扔到了头发的Lightmap里,通过遮罩的数值来控制头发在哪里可以产生飘眉效果。反正R和B的通道是空的,不用白不用。
在这里插入图片描述
下面就是实现了,方法很简单,正常的stencil加一个Pass来做透明的效果就好了
首先我先在ddc里面给右眼的眉毛单独分了个材质球,要透过的地方就给新的材质,其他部分比如说脸啥的该正常绘制就正常绘制,头发和要透过的地方(眉眼)在它们前面画好
在这里插入图片描述
先把眉毛(眼睛)正常画出来
在这里插入图片描述
然后正常画后面没有眉毛(眼睛)的头发
在这里插入图片描述
最后绘制后面有眉毛(眼睛)的头发并透明混合

猜你喜欢

转载自blog.csdn.net/qq_15972907/article/details/123589562
今日推荐