这部分我也不是特别明白,挑我看明白的说。
由于未知神秘原因,用kuro_mdl_export_meshes导出直接用kuro_mdl_import_meshes导入是无法更改材质的,会卡死,必须先用kuro_mdl_to_basic_gltf转成glb之后才能改,目前原因不明,可能是mdl_version导致的?。请务必注意。
有时候我们换了贴图进去会发现色调反光什么的和想象的不一样,其实是shader在捣鬼。比如,如果我们想要这个袖子的这种半透明效果

而把贴图改成这样,也是没有半透明效果的(色调是我为了展示图片确实改过调的,和透明度无关),不如说这图本身就不知道为什么是个半透明的:


就算贴图删掉一块也是变黑而不是变透明:


这时候我们就需要从别人的模型找一个shader,因为shader都是游戏内置的,我们没办法添加新的shader,只能从现有的里面找一个过来。
shader相关的东西算是material_info里每个材质的一个参数。根据老外的说法,每个材质块结构大致如下:

id:仅供参考,不用理。
material_name:材质名字,模型会找对应的,本教学内基本不用理
shader_name和str3:似乎值是一样的。shader的“名字”。
shader_switches_hash_referenceonly:仅供参考的包含了shader具体参数哈希值的一个玩意。可以把shader_name理解成班,shader_switches_hash_referenceonly理解成学号,shader_name#shader_switches_hash_referenceonly才是具体的一个同学(真正的名字)。这个值只是用于编辑者辨识是否是同一个shader的,改不改都不会影响。
textures:贴图。根据老外的说法0是base texture,3是normal map,7是mask map,还有个9是渐变。这里有几个图是跟shader的,不能自己增减。
shaders:有哪些键是跟shader的,不能自己增减,其中的数值本身可以改。但是,Switch_开头的东西也是不能动的。
material_switches:跟随shader固定的,不可以修改。会控制各种…效果?到底会不会呈现,改shader好像主要就是因为要改这个。
uv_map_indices:好像没用。
unknown1,unknown2:不知道什么作用。
————分隔线,以免看不太清楚————
因此,我们在改新材质的时候需要:
找一个已经存在的shader;复制该shader进material_info;改material_name以便改材质;替换对应的贴图;如果shaders里有已经存在的shader_name,就用现在的data部分替换其data部分,但Switch_开头的不要改。(对于空re,好像替换掉这些data会造成别的问题比如带上不需要的金属材质,因此如果您之前下载了我自己做的工具来辅助制作,请看本文最后的更新和用法讲解。)
如此一来,我们就得到带半透明的新效果。
什么,你说透视,那当然是不可能的,衣服下面又没建模!只能单纯的变成鬼透视到后面的人而已啦,像袖子这种里面有胳膊的地方就会透出胳膊。

——————
然后关于slot 3的_n图,我只知道原理上是利用灰度实现0-255的取值,利用rgb(a?会有吗)3(4?)个通道来实现一张图具有3(4?)张图的效果,但实际上到底是什么作用其实我没太看懂。总之这块明白的和有需要的人可以自己琢磨一下。
例如,如果我们把图调成全黑的

…呃,我们这里先把材质换回来吧

全白则是:

室内区别其实不太明显,室外白得发亮:

原图:


不过再多的我也不清楚了,手上也没有适合编辑这个的软件。根据老外的说法,对于黎界,红色通道是环境光蒙版,绿色通道是镜面反射蒙版,蓝色通道是卡通边缘强度蒙版,不知道空re是不是差不多的,总之写在这里供人参考。另外slot 9的toon_chr01也会影响一些影子视觉效果,只能说有需要的话可以尝试一下,我也不了解这些具体的东西。
基本上就是这样。
————
关于工具更新
目前放在“其他未整合更新”中。打开后请勾选“空re(不复制shader data)”。您也可以通过在网址最后加?is1st(即改成index.html?is1st)的方式来默认开启该选项。
此模式下替换shader不会将旧的数值复制到新shader。另外,点击“Shader”可以展开和收起其中的值的列表,但我也不知道改这些会发生什么所以请自己尝试。
另外,贴图slot现在会自动清掉值中的后缀名,请命名喜欢加点的朋友注意一下。
对于上面说过不能改的值,界面也会一并显示,以便参考。下面是例子:
————
不勾空re模式:金属效果

勾选之后:半透明化

metalness_g改为1:我也不知道影响什么,总之变黑了

metalness_g留空:回到复制过来时的默认值(透明)
