mrl3篇:
通过上篇,我们知道模型都有材质,而材质的各个可视属性又可以被划分为一张张的贴图。而对贴图的改动就会造成材质的变动。那么问题来了,在游戏中存在成千上万的模型,每个模型又有自己的材质,而这些材质又有自己的对应贴图,如何让这些贴图准确无误地去对应材质?如果对应错误又有什么后果?
我们不妨再举一个栗子:
你去参加一个千人银趴,结束之后发现一片狼藉,你发现自己的衣物已经和众人的衣物混在一起了。如果你找不到自己衣服却想离开,那么只有两种情景:
1.穿着别人的衣服离开了(可能是品如的衣服),在游戏中表现为贴图错配。
就比如下面的武器,猛爆碎大剑的颜色和法线等贴图直接错配到了它上面:
2.找不到衣服索性光着屁股蛋蛋离开了。
如下图中的武器,模型的材质与mrl3中的材质不一致,导致模型材质找不到对应的材质,于是在游戏中表现为材质丢失(棋盘格纹路),如下图所示:
或者是材质找不到对应的贴图,模型自定义属性的材质名与mrl3中的材质名相匹配,但是mrl3指定的贴图路径中找不到对应的贴图(现在看不懂没关系,看了教程后讲的内容你就能明白这段话的意思了),在游戏中表现为非棋盘格纹路但是有极其奇怪的光影,表现为贴图丢失,如下图所示:
——————————————我是分割线——————————————
如何让贴图准确地给到对应的材质,这便是Mrl3的作用,而对Mrl3文件的编辑就需要用到mrl3编辑工具CrAs-T.Material.Editor(N网有下),Material的中文翻译即为“材质、材料”。
Mrl3编辑器没有导入mrl3文件时长这样:
直接讲这个工具可能过于抽象,那么我们以大师位的富婆贝塔身体部件为案例进行讲解,将该部件解包后的位置在:pl\f_equip\pl049_0011\body\mod\f_body049_0011
其中mod3为模型文件,需要对应的mod3导入导出插件才能打开;
tex为贴图文件,可用JODO大佬制作的工具查看以及转成可编辑的dds格式;
mrl3为材质编辑文件;
ctc文件和evbd文件与本篇内容无关,不作讲解。
我们用mod3导入插件打开模型文件,选中模型文件再打开其自定义属性可以看到它的材质名称:
任何一个模型创建完成后必定拥有一个材质,且这个材质是有具体名称的,当然材质是可以被改名的。就像一个美国人一出生就有性别,但是他可以讲自己的性别定义为男,也可以定义为女,甚至可以定义为武装直升机!
从图中可以看到:
富婆套上的皮肤材质名为Ch_Skin_Mt__5
装备的材质名为Ch_Pl_Standard_Mt__13
这时我们将mrl3文件扔到Mrl3编辑器中可以看到下图
材质栏中的两个材质项就是我们刚刚打开模型文件查看到的材质名,这两者是一一对应的。
材质栏的左边一栏仔细查看不难发现就是该模型材质的贴图文件及其所在的路径
其中Asset开头的都是怪猎自带的默认贴图(如无必要,不要编辑),用于表现雪和湿身效果等。
common_tex指公用贴图,一般常用于皮肤材质,因为怪猎所有的男角色都是同一个身形,同一个材质。女角色也一样。因此用公用贴图可以有效节省资源空间。一般常见的油腻皮肤材质其实就是将公用的游戏原版皮肤贴图改成了玩家自己做的皮肤贴图,美颜皮肤也是同理。
而右边一栏就是给材质的颜色、法线等贴图与左侧栏中的贴图文件路径进行指定。
如上图所示:当我们选择了Ch_Pl_Standard_Mt__13这个材质,然后点击右侧的texture:tAlbedoMap(意为颜色贴图)。右侧框中的数字便是让颜色贴图连接到对应的贴图,简单点的理解就是tAlbedoMap使用的是左侧第一张贴图。
其他的贴图也是同理,一般来说,自己做mod的时候只会用到颜色、法线、RMT、CMM、EM这五种贴图,其他贴图保持默认即可。
进阶知识:
众所周知,富婆套是没有发光效果的,但是我愣是想让它有发光效果该怎么办?
首先,你得学会uv的相关知识,并且会绘制发光贴图(这里不作过多赘述)
获得发光贴图后,我得让mrl3获取我这张贴图的路径,方法就是在左侧栏中鼠标右击,再点击new便可以创建一个新的贴图路径,然后再手动输入贴图的路径即可。
创建完成后,再去右侧栏中选择texture:tEmissiveMap,把方框中的数字改成左侧发光贴图的路径所在的行数。
到这里还有没结束,有些材质发光效果默认是关闭的,或者发光效果是开启的但是发光量为0。这时我们要求这里改参数:
这里数值0表示发光效果关闭,1表示开启
这里表示发光量,三个栏的数值表示RGB三通道的发光量。全为0表示不发光,因此需要对数值进行修改,比如全改成10,就意味着发光且发光量为10,发光的颜色就是EM贴图中的颜色。而如果改成10,5,5,就意味着发光贴图中的R通的效果是B、G两个效果的两倍,最后整体的光偏红。其他的同理
有小可爱可能会问了,我不是在贴图篇中提到发光呈现的颜色不是由发光贴图中的颜色控制的吗?为什么编辑器也能对它的颜色进行调整?
其实这有很多的原因,我拿下面的两张图举个栗子:
这两张图中,图层、视角和光照方向我都没改过,仅仅是换了张背景贴图,但是视觉上造成的差距却不是一点点。甚至我用同样的背景贴图在不同渲染器下渲染出来的效果也有不同。
而在软件中把游戏贴图绘制完成后,发现效果可以,但是放游戏里却发现效果与软件中的是两回事。而再返回软件重制贴图无疑会极大的增加工作量,因此在Mrl3中通过调整参数无疑是最便捷的方法。
同样的,颜色、粗糙度、金属度都可以用跟发光贴图一样的方法去调整,篇幅有限,不作赘述。
补充知识1——表面显示及应用:
中间这一栏中,Material Name可以改变材质的名称,当然,你还得保证mod3中的模型材质名称要与此相同。不然必定造成贴图丢失的错误。
而旁边的Shader ID意味着色器ID,默认即可,如无必要,不必修改
Surface Direction意为表面显示,1100表示单面显示,-1f00则是双面显示。
这两个的区别在于当单面显示的时候,你如果正对着模型表面的法线方向,你可以看到模型,而如果是背对着它的法线方向,模型就不可见。
而双面显示则在任何角度都可见。
如图,对面片进行旋转,如果是单面显示,即便模型仍然是可见状态,但是当我转到模型的背面后却发现模型消失了。而双面显示则不会有这个问题。
如果你还是不理解可以看下面两张游戏截图。
游戏中双面显示效果:
单面显示效果:
可以看到,旗袍后摆模型的法线是背对着屏幕,因此当单面显示时它会不可见。
通俗讲就是正面可见,背面不可见。而灵活应用单双面显示,便是二次元mod描边的基本原理。
表面显示的应用——描边原理:
假设存在着一个双面显示的红色小球模型,这时候不管我们从哪个角度看它都是可见的。
然后在红色小球外套上一个黑色小球模型,这个黑色小球能包裹住红色小球(体积略大于红色小球),但是这个黑色小球是单面显示,并且其表面法线是朝内的,也就是说,小球内层才是正面,外层是反面。
当我们在黑色小球外层看它时,黑色小球的右侧因为法线背对着玩家视角而不可见,但小球左侧内层的法线正对着玩家视角而可见。
但别忘了,黑色小球内部还有个红色小球,红色小球又是双面显示,会挡住大部分黑色小球的左侧内层的画面
于是在玩家视角中看到了一个有着黑色边缘的红色小球
补充知识2——呼吸灯发光效果
呼吸灯指发光有明暗交替循环,而它的效果主要由这三个效果控制——发光量、最低发光量、呼吸速度
发光量上文有提过,不再赘述
AnimEmitMin代表着最低发光量,1代表最低发光量是你设置的发光量数值的100%,这种情况下就无法产生呼吸灯效果,这也是mrl3中的默认参数。而0代表最低发光量就是发光量的0%,即不发光,能产生呼吸灯效果。当然,你也可以根据自己的需求设置为其他的值
AnimEmitSpeed代表着呼吸速度,默认为1,数值越大,速度越快,表现为呼吸灯的明暗交替变化越快
剩下Unkown其实都是未知参数,有兴趣去试验出来的可以整一下,如果你像我一样懒,就别去动它。
最后,mrl3文件前的编号一定要与mod3文件相同,mrl3只对相同文件名的mod3文件生效。
举栗:two001.mod3和two002.mod3中的模型材质名都是Ch_Wp_Mt__2。但是two001.mrl3只会对同名的two001.mod3文件生效,这就防止了模型贴图出现张冠李戴的效果。
上篇在这里:【教程】材质、贴图和mrl3(上)