【MMD教程&杂谈&配布】在ray渲染中使用乘算Sph和相应的通道贴图

封面那个画是著名鸽手 空旧 画的!
大家好呀!又双是我!
和以前不同,这次是用专栏的方式和大家探讨一下MMD在ray中使用Sph的一些个人拙见,并且讲一些我认为有必要的知识点(但可能和原主题关系不大)。

首先我想和大家讲一下,ray目前是怎么进行加算Sph的。
先说我的结论,在ray的Main栏目中使用的Sph贴图,最终效果其实是通过类似后处理的方式描绘上去的,也就是把只有Sph的画面和ray渲染的画面这两个画面加算在一起。
文字很难描述,所以这里上图解释。

然后我们什么MME都不载入(包括ray.x文件),只在main栏目载入ray里对应的带Sph的main文件的话,我们可以得到下面这张图。

我们可以看到这个画面只画出了Sph,而载入了main文件的人物会变黑。这其实就是ray的main文件的其中的作用,把模型变成全黑的剪影遮罩,对含透明度的贴图按照阈值切割舍弃,以及画上Sph。
为什么要把模型变黑?因为不变黑的话,ray的画面出来以后要和带贴图的画面加算,就会变得很亮!这也是为什么载入Ray后不载Ray的main文件的部分会很亮的原因!
之后我们在PS对这两张图片进行加算(线性减淡(添加)),就可以得到下面这个样子了!

然后我们看看MMD里ray上载入带Sph的main文件后的样子。

是不是效果近乎一模一样!!
如果你理解上面所说的,你就能理解ray的main文件的作用,ray是怎么叠加Sph的,以及为什么不载入main文件或者用了其他的渲染的main文件画面会变得很亮了!
因为你载入了其他的main文件以后,这层画面的模型不再是全黑的,和ray的画面再一相加,直接亮死了。

咳咳,扯远了,上面也想说明一点,想让ray用上乘算Sph就不能从main文件下手,因为怎么改main文件的代码,最终都是类似后处理的方式和渲染画面相加;另外如果把他们的混合模式改成相乘,那没有Sph的地方就会直接全黑。
因此!我从material文件下手了!
接下来就是配布相关了!

我修改了材质文件的fxsub,追加了对Sph的计算,使用Sph贴图来进一步改变材质的albedo反射色。
打开fx文件,第24-30行,你可以看到我追加了这么一段定义。

然后第24行的值,
0就是不启用;
1就是乘算;
2就是加算;
第25行用来指定Sph的路径。

然后你可以通过第29行的值来改变强度。

并且你可以通过使用float3(),分别控制RGB的强度。

这样就不用去专门改Sph的颜色了!不管加算乘算都可以这么做,很方便!

然后接下来要讲的是第30行的影响程度,其实很好理解,
当这个值为0时,就是完全不受Sph的影响;
当这个值为1时,就是完全受Sph的影响;
当这个值介于0-1之间时,就表示受Sph影响的程度;

其实这个数值单独拿出来没有很大的实际意义,配合通道贴图使用你就能明白了!
这里拿头发高光举例,这里没有使用Sph

然后是载入了Sph,调了一下颜色,模式为2(加算)。

接下来我们用这张表示影响程度的通道贴图,
纯黑色的部分代表数值为0(完全不受影响);
纯白色的部分代表数值为1(完全受影响)。


到这里大家一定知道通道贴图的用处了吧!他可以做到不分离材质但是让材质的不同部分效果不同。
并且如果用抠图和复制材质面的方式分离出来的话,在Ray里因为透明阈值切割,不能存在半透明区块(特指main文件),会导致锯齿感相对比较强烈。
最后顺带一提,这里的Sph影响材质的Albedo,不会像画面后处理加算那么的明显,
他会受到光照,法线贴图的影响,因而会更加自然,但也需要你更多的耐心。
最后这里在贴一下乘算的效果!


以上。
感谢你可以耐心的读到这里。

此专栏涉及到的借物,感谢太太们的配布。
模型:miHoYo/观海/烛哥你是我的神
MME:Rui_cg/ikeno/针金p/そぼろ/P.I.P/山田淀子/less/Elle/データP/ビームマンP/三金络合物

终于到配布地址了额,从凌晨写到现在天都亮了!
配布地址:
https://bowlroll.net/file/281701
里面呢有两个版本,分别用于 ray - 1.5.2 和 ray - dev ,大家按自己的版本选择即可!

#更新20220727
修正matcap的错误方向,对齐进行垂直翻转以保证和PmxEditor中效果一致。
#更新20240322
追加ALBEDO_MATCAP_MAP_AFFECT_SWIZZLE参数,可以自由选择使用哪个通道作为影响值。
如果之前已经下载过,可直接替换fxsub文件。