写在前面:最近自己学着开始做外观MOD,没看到有比较整合的教程,过程中遇到了不少困难踩了不少坑,于是有了写一份比较完整的流程指南的想法。本文并不是一份专门的教程,更多的是自己制作过程的总结,整理出来方便其他想要入坑制作外观MOD的朋友。本篇指南可能会存在一定的错误和讲解不清楚的地方,希望各位大佬可以不吝指出,有问题的朋友也可以提出意见方便后续完善与修改。
做MOD是一个漫长的试错的过程,不要害怕犯错,做好备份以后放心改就好了,出问题就回上一个文件重来。鉴于这一点,在学习的过程中建议做每一步都单独进行验证并独立保存一份工程,以免犯错后找不到怎么修前功尽弃。
感谢@诸葛不太亮老师的指导,以及MHW-MOD制作教程这篇MHW教程的引导,建议有条件的朋友完整地看一遍这份教程,有很多地方详细讲解了运作的原理。后续有空的话会补上一份视频版,不过我不太擅长讲解可能效果也不太好就是了XD
现已更新视频合集:【MOD笔记】
PS.因为平时不怎么上站看,站内私信基本上都不能及时回,给发私信问问题的朋友们道个歉(>人<;)
需要的工具:
REtool,pathList,RisePakPatch:打包封包三件套
Noesis:用于读取&转换崛起的文件
fmt_RE_MESH.py:Noesis插件,用于支持mesh与tex的读取与转换
MHR_Tex_Chopper:tex与dds格式互转工具
Intel DDS Plugin for Photoshop:PS插件,用于读取与保存dds文件
MDF-Manager:材质管理编辑器,图形化编辑mdf.23文件
010 Editor:16进制编辑器,搭配模板可以来修改很多崛起的文件
010 Template:主要使用chain模板,用于编辑物理效果
Blender:一款免费的3D软件,本文使用的Blender版本号为2.93.9
可选工具:
cats blender plugin:一款用于向Blender中导入MMD模型的插件
material combiner addon:一款用于合并贴图的Blender插件
Blender RE Mesh Noesis Wrapper:用于调用Noesis向Blender中导入mesh的插件
MHR Editor:用于编辑.user文件
MHR Unpack:可以预览并单独导出的解包工具
以上工具在【MHR Sunbreak】Mod解包与制作工具资源汇总帖中有汇总,故不再单独发一遍了
修改历史
20221104:更新视频版P5,MDF与贴图部分的后半
20221028:更新视频版P4,MDF与贴图部分的前半
20221025:更新视频版P3,修改身形骨骼部分
20221024:更新视频版P0-P2,准备、导入与基本的调整
20220906:添加了无中生有给装备增加部件隐藏&物理效果的指南(基础部分的视频会在后面做新MOD的时候一并录,这段正好做了就录上了)
20220831:添加了NRMR/NRRT保存格式描述
请一定注意!在使用/修改/发布非原创模型前一定要获得原作者的许可!!!
- MMD模型:大多数配布的MMD模型都是比较容易用于MOD制作的,简略给出两个国内比较方便的来源,更多需要可以自行搜索
- 模之屋:需要注册,是国内比较大的一个MMD站点,需要注意模型的授权
- B站:搜索“模型配布”等相关关键字,能找到很多配布的模型
- 游戏拆出来的模型:这一类属于比较微妙的范畴,就不多说了
- 修改已有的MOD:请一定要注意,在修改其他作者的MOD前要向作者获得修改的许可,请务必尊重他人的劳动成果。
- 自己建模/找人建模:能做到这种事的大概也不会看到这一条XD
再次重申,在使用/修改/发布非原创模型前一定要获得原作者的许可!!!
游戏文件拆包
拆包的教程在站内已经有非常多了,在此就不赘述了。
文件类型解读
这一部分主要针对人物外观的部分,可能会有一部分疏漏或错误,欢迎大佬指出。
在制作MOD过程中主要涉及到的文件主要在natives\STM\player\mod\f路径下(如果是男性则是m),其中的文件类型如下
- mesh:模型文件,主要使用Blender等3D软件进行修改/直接替换,在曙光中额外后缀名为.2109148288
- tex:贴图文件,使用MHR_Tex_Chopper工具转换为dds文件,用PS修改后转回tex文件进行修改,在曙光中额外后缀名为.28
- mdf:材质管理文件,可以直接用MDF-Manager进行修改,在曙光中后缀名为.23
- chain:物理效果文件,用010editor搭配模板进行修改,在曙光中后缀名为.48
- user:玩家数据文件,用MHR Editor或010editor搭配模板进行修改,但是大部分时候只需要它的隐藏猎人头部的功能,可以直接复制一份现有的,在曙光中后缀名为.2
- pfb:预制文件,我做的没有用到,大约的作用是定义一个物件会调用的文件,具体作用等大佬补充XD,在曙光中后缀名为.17
- jcns:额外骨骼控制,没改过,在防具中主要作为腰甲的骨骼,在武器里面是实现变形功能的东西,具体等大佬补充,在曙光中后缀名为.21
模型导入
- fbx,obj等常见文件格式:直接导入就行
- pmx:MMD模型格式,通过Cats_Blender_Plugin插件导入Blender进行修改,在Blender中通过【编辑】-【偏好设置】-【插件】进行安装
安装好后按N键呼出侧面菜单,选择【CATS】-【Model】-【Import Model】,导入需要的模型。导入后在骨架选项中选中需要的骨骼,可以使用同栏中的【Fix Model】功能去除掉MMD模型中额外的骨骼(不去也没什么大问题,原骨骼基本上只用来对齐,大多不会用到最终模型里面)。
- mesh:崛起模型文件,可以通过Noesis转换为fbx文件后导入。安装插件后可以直接通过Blender导入。
如果使用插件,要在插件的设置中添加Noesis的路径,不然会报错
需要注意的是,通过Blender直接导入的时候,会默认清空场景,如需要保留在右侧去掉【Clear scene before import】选项
T-pose调整
在崛起中,人物的默认姿势是T-pose,但是很多模型使用的是A-pose(甚至其他的更怪的姿势),为了方便后续的调整,我们需要把模型首先调整为T-pose,并将目标模型与参考模型对齐。
- 模型自身有骨骼:如果目标模型已经绑好了骨骼,可以直接通过Blender的姿态模式进行调整,选中骨骼后可以在工作区左上角的选项中调整模式,也可以通过快捷键Ctrl+Tab通过轮盘选择模式。
建议以旋转为主,平移为辅进行姿态的调整。
- 模型自身没有骨骼:有能力的话可以手动绑定骨骼,效果会更好。不会的话可以通过mixamo自动绑定偷鸡绑骨,效果还算ok。MMD模型导出时选fbx格式,选择导出网格,如果想要内嵌材质导出的话选择路径模式为复制,点亮右侧的box图标
进入前面给的网站,初次打开可能会很慢,需要Adobe账号,登录后点击【upload character】上传模型文件,成功后会有如下界面,将模型调整至正面,参考右侧图示将圆圈放置在对应位置上:
- chin:下巴
- wrists:手腕
- elbows:手肘
- knees:膝盖
- groin:腿根
之后会自动为模型绑骨,在左侧动作栏里面搜索找到T-pose,点击【download】下载即可,可能部分会绑的不太好,需要后续修一修,然后按照有骨骼部分处理。
模型大小调整与对齐
然后要将模型大小调整到大致与原模型大小一致,差距过大的话会产生一些很搞的效果,非沙雕MOD的话还是尽量保证与原模差不多大小吧。首先是找一份参考:
- 如果只是想在原体型的基础上做,可以在natives\STM\player\mod\f\bone路径下找到f_shadow.mesh.2109148288(如果是做男性装备则是m)导入到Blender中(这一份文件同时也是修改人物体型的重要部分,将在后面进阶篇介绍)。
- 如果想要修改体型,但是又不想自己动手,可以找一个你喜欢体型的MOD,随便找一个有模型的部位导入到Blender中(如果你的这个MOD要发布,这么做之前请取得原作者的许可)。
为方便理解,后文将这一步中导入的模型称为参考模型,之前导入的想要替换上去的模型称为目标模型。
在这之后,保持参考模型不动,同时选中目标模型的网格和骨骼移动(可以右键物体栏里面的【骨骼】-【选择层级】来选中所有),用目标模型的鞋底去对齐参考模型的鞋底,保证两个模型站在同一个平面上,以避免替换后可能产生的浮空bug(如果做单部位替换的话对齐该部位下方就行)。随后用缩放调整目标模型大小使两者大小基本一致(一般而言我选择对齐肩部附近)。
之后就是漫长的把目标模型与参考模型对齐的过程,在这期间可能会出现手短、腿长、脖子长之类的问题,如果只是些微的差距可以通过部分缩放的方式进行调整,如果差距过大并且不想拉伸过大不好看的话可以参考后文的体型调整进行修改。对齐得越精细,最终的效果越好,尤其是手指部分,如果对齐得过于粗略可能会出现邪神的情况。
用姿态模式调整完后,选中网格,在修改器一栏中找到骨骼修改器,选择应用
权重调整
大部分情况下,MMD的顶点组(权重数量)会远大于崛起人物的顶点组数量,所以需要对顶点组进行合并操作(mixamo绑出来的同理)。
首先选中参考模型,切换到权重绘制模式,在顶点组栏里面可以看到这个模型的所有权重分布,可以依次选中浏览一下有哪些权重。大致了解完之后,回到物体模式,选中目标模型,切换权重绘制模式,观察需要调整哪些权重。此处以手臂为例,MMD模型手臂大多分为4段(不含肩膀手腕),而崛起模型只有2段
R_Arm_00是肩膀,R_Arm_03是手腕,R_Arm_01和R_Arm_02就是大臂和小臂,其间有3个带W或T的骨骼是辅助骨骼(不过实际上因为R_Arm_01_T在原模型中的位置更合适,一般用它取代R_Arm_01作为大臂骨骼,不过直接用01也没什么问题),不绑的话对最终效果没有太大影响,如果有精力的话可以观察一下辅助骨骼权重的位置也一起绑上。
观察目标模型,手臂上有4段权重,以大臂为例
需要把Right arm和zArmTwist_R合并为一个,作为大臂权重,即R_Arm_01,为了实现这一点需要使用【顶点权重混合】修改器。打开修改器栏,添加修改器
顶点组A选择被操作的顶点组,这里因为是合并,所以哪个都行,顶点组B选择另外一个,选择【相加】,在预览中确认无误后应用修改器
部分权重的合并可能不完全,可以在顶点设置中选择【全部】。另外这个修改器还能干很多事情,这个就自行探索了。
随后删除掉被合并的顶点组,将合并后的顶点组改名为对应名称即可
在完成权重的绑定之后,为目标模型添加一个骨骼修改器,将它绑定在参考模型的骨骼上,可以在姿态模式下动一动参考模型的骨骼,看看目标模型能不能跟着动,如果都没有问题的话,表示权重绑定成功
模型导出
选中网格以及绑定上的骨骼(应该是参考模型上的骨骼),【文件】-【导出】-【.fbx】,勾选【选定的物体】(可以把【添加叶骨】去掉)。导出后打开Noesis,找到刚才的模型,右键-【export】,选择【Main output type】为【MHRise Sunbreak MESH】,在【Advanced options】中填入【-rewrite】,导出后更改为对应名称即可
另外如果安装了blender插件,可以直接通过【文件】-【导出】-【.mesh】导出,选择【Post Sunbreak】,勾选【仅选中】和【Rewrite】即可,不过可能是我的原因,直接blender导出偶尔会出问题,用前者比较保险
做出一份能用的贴图有很多种方法,在下面几项里面选择一种就行(或者混合起来用)
拆分模型
有些模型带的贴图是分部位的,如果正好又希望把贴图分开来做方便自己找&改,可以使用blender的按材质分离的功能,编辑模式下选项栏中【网格】(或直接右键)-【分离】-【按材质】,就可以把模型按照分好的贴图分开
如果分得太碎可以按照自己的需求进行合并
另外还有一种情况是模型面数太多,崛起的一个部位限制在65535面以下(应该),如果不想做减面的话也可以通过拆分到多个部位上解决。
贴图合并
很多时候合并起来的网格使用了多张贴图,但是在崛起的材质管理中一个子网格只能指定一张贴图,这时候需要把原来的贴图拼接起来。
要想把多张贴图合并起来,首先需要一个插件material-combiner-addon-master,安装后按N打开侧边栏,找到Matcombiner,隐藏掉不需要的部位后点击【Generate Material List】,勾选上需要的材质,【Altas size】选择【二次型】,点击底部的【save Atlas to】,选择保存位置即可得到一份合并好的贴图
可以看到已经自动拼合成了一张贴图,且UV也调整好了,然后把这张贴图导出即可
*这个插件有很多缺陷,比如不能调整大小,浪费像素等,但是对于浅做一下MOD基本上已经够用了。另外这个插件本来是cats的附属插件,有时候会去读cats生成的材质而非blender贴上去的,如果报错可以看一下【MMD texture】里面有没有正确的读出贴图
烘焙贴图
烘焙贴图的好处在于可以通过blender的渲染得到一些额外的效果,本文就不深入讲解了,只在这里提出这种可行的方法,具体的可以自行搜索教程。
贴图修改
崛起的贴图格式是.tex,将它拖到【MHR_Tex_Chopper.exe】上可以转成.dds文件,搭配插件可以在ps中修改。在打开dds文件时,需要勾选上第一项,将Alpha作为单独通道导入,mipmap项不需要勾选
随后只需要把你的贴图拖进去覆盖掉原来的就行,除了NRMR/NRRT以外的贴图都可以按照如下的参数保存,如果【Compression】项选了Liner会导致颜色灰白,但是NRMR/NRRT贴图需要保存为Liner
模型的命名
在刚刚的步骤中,模型被拆分为了多个子网格(也可能没有),为了让材质管理器能正确地给每个子网格贴上对应的贴图,需要对子网格进行规范的命名。观察子网格的名称,基本的结构类似于【LODGroup_X_Group_X_SubMesh_X__*】。同材质命名格式是101,111,121,不同材质命名格式是101,102,103,一般而言后者用得比较多。需要注意的是最后的名称前有两个下划线,漏掉的话会读不出来,建议去直接复制一份原模型的命名,然后改命名即可
贴图类型
首先讲解一下常见贴图的属性以及对应的条目,感谢诸葛老师的总结,我就直接整段搬上来了
纹理贴图(RGB通道)+金属反射度贴图(alpha通道)
Rise的金属反射度贴图反射度为越白金属度越低越黑金属度越高,若要屏蔽该贴图可以将ALBD贴图的alpha通道涂白或者删除。
- NRMR:NRMR_NRRTMap(如果在游戏中发现出现了某些奇怪的镜面效果,可能是导出时选择了sRGB,请使用Liner保存)
法线贴图(RG通道)+阴影贴图(B通道)+镜面反射度贴图(alpha通道)
NRMR中的阴影贴图部分越黑阴影度越高越白阴影度越低,镜面反射贴图同怪猎世界RMT的镜面反射贴图相同越白镜面反射度越低越黑镜面反射度越高。
- NRRT:NRMR_NRRTMap(NRRT和NRMR使用哪一个读取方式由参数决定,后文会讲)(如果在游戏中发现出现了某些奇怪的镜面效果,可能是导出时选择了sRGB,请使用Liner保存)
法线贴图(G通道与alpha通道)+阴影贴图(B通道)+镜面反射度贴图(R通道)
NRRT中阴影贴图部分越白阴影度越高越黑阴影度越低,镜面反射贴图与NRMR一样。
透明贴图,本贴图支持灰度透明根据灰度来决定透明度 越白透明度越低越黑透明度越高。(简称“黑透白不透”)
变色贴图,作用类似世界的CMM贴图,于防具上是表示防具自定义颜色的部分。
毛发功能贴图,推测本贴图的作用效果同怪猎世界的带有毛发材质的FM贴图效果类似,其中RG通道是类似法线贴图的功能而B通道决定了毛发效果的范围其中白色部分代表有毛发效果黑色部分没有毛发效果,需要mdf内相关材质支持
推测为高光贴图,作用同怪猎世界的XM贴图效果类似需要mdf内相关材质支持。(补充:流光效果需要该贴图支持,比如冥渊龙武器的流光)
- EMI(WEMI):EmissiveMap(WE_EmissiveMap)
自发光贴图,作用和组成同怪猎世界的EM贴图效果一样,需要mdf相关材质支持并需要在mdf内调发光相关参数。
呼吸灯发光贴图,与EMI的区别是多了一个Alpha通道表示“呼吸”的效果。Alpha通道是灯效的明暗块,可以简单理解为从左到右以一定速度读取亮度,白色亮起黑色暗掉,一整张称为一个块。同样需要mdf相关材质支持并需要在mdf内调发光相关参数。
- 其他贴图在不清楚其属性的情况下,可以默认给全黑贴图(systems/rendering/NullBlack.tex)
MDF文件编辑
MDF文件用于管理模型的材质,一般用【MDF Manager】打开,可以直接把mdf文件拖拽到窗体中导入进行编辑,也可以点左上的【Add】导入到数据库用于移植某些材质
此处以工会十字的mdf文件(pl279)为例
选中项目之后右侧会显示当前项目中贴图的路径,如果是单纯覆盖的替换方式的话可以不用动它,如果更改了名字/路径,只需要把更改后的新路径去掉STM及以前的即可。这里同时展示一种比较建议的做法,即单独拉一个文件夹出来存放贴图,方便自己进行修改
在添加贴图的时候,会发现某些材质并没有部分贴图的项目,这时候需要从其他地方移植一份支持对应贴图的材质过来,以DEMI贴图为例,找到一个有DEMI项目的装备,如冥渊龙(pl355),点击左上角【Add】,加入到库中,双击展开,将有DEMI的项目拖进右侧的mdf中
材质的名字要修改得和子网格名字顺序一致,右键可以删除掉不需要的材质,并参照上面的贴图类型将贴图路径依次填进去即可。一般来讲,ALBD,NRRT/NRMR这两项是需要手动修改好的,其他的如果不需要都可以参考原mdf填默认贴图(system,MasterMaterial开头的路径基本上都是默认贴图)
随后是下拉框中的选项,这里讲几个常用的,剩下的留到后面再讲
- BaseTwoSideEnable:模型双面贴基础材质,背面不露出来的话可以取消勾选,对于某些单独做了衣服内侧网格的模型可以避免穿贴图
- EmissiveUsed:启用发光,一般都勾上
- AlphaMaskUsed:启用贴图中的Alpha通道,一般都勾上
最后是下面一大堆的参数,简单讲一下,剩下的如果摸清楚了会在后面讲
- S_col_R/S_col_G:CMM中换色区域的默认颜色
- S_col_R_Emissive_intensity/S_col_R_Emissive_intensity:换色区域的强度,0无效,1有效
- UseNRRT:是否使用NRRT,0使用NRMR,1使用NRRT
- DetailEmissive_intensity:DEMI发光强度,越高越强
- DetailEmissive_speed:呼吸灯的速度
- DetailEmissive_Tile:呼吸灯一轮里面包含多少个块
另外可以通过【Emissive_speed】项实现最基础的呼吸灯效果,但是它的亮暗都是线性的,会比较生硬,尽量还是用DEMI吧
至此,一个最最基本的外观就制作完成了。当然,目前的外观肯定还存在着大量的瑕疵,需要进一步的调整,这些会留在后续的进阶篇(我也不知道我什么时候能写出来)。
姑且来说进阶篇会包括:
- 人物骨骼的调整
- 简单的物理制作
- 简单的法线贴图制作
- MDF部分参数的讲解
再次感谢在我制作MOD以及写这篇文章过程中提供了帮助的朋友
常见问题(待补充)
Q.Noesis导出时显示No rigged mesh
A.大概率是子网格命名有误
Q.模型卡在水平面上,不随骨骼运动
A.导出前没有添加骨骼修改器
Q.模型颜色对了,但是有些奇怪的凹凸
A.NRRT/NRMR贴图没改
Q.想隐藏掉某一个部位
A.把它删到只剩一个面/缩小到非常小/给全透明的贴图
总结自诸葛老师的讲解,视频地址:【MOD笔记】骨骼调整
文字版有点难写,有空会找机会写写看