哈喽,好久不见,我又诈尸了!上次见我发帖还是在上次。
要说这半年我都干了什么,那就是今天要发布的这个插件了。
从最初有想法,到开始编写,再到测试发布;接着用了一个月的时间进行更新和优化,以及修复bug;耗时近半年,这个插件到今天终于可以正式发布了!
遥想22年年初,怪物猎人崛起刚上线pc端时,我才刚刚接触mod这个圈子。
那时候还什么都不懂,最开始也只是做一做音效替换这样简单的mod。
一转眼已经过去快4年了,而如今我也能独立完成一个大型插件的编写,这中间的感慨还是蛮多的。
况且我本身也不是计算机专业的,所以能走到这一步我自己也感到不可思议。
当然这中间也少不了很多在这个圈子认识的朋友的支持。
行了,不写小作文了,这半天还没说到底四啥,四不四废话?
那下面直接进入正题,请一定要耐心看完。
Tips:点击左侧的目录可以切换不同的章节。
首先是插件的发布链接:MHW Model Editor
该插件可以让你在Blender中导入、编辑并导出MHW模型(mod3、mrl3、ctc、ccl)文件,且支持 Blender2.93+ 的所有版本。
该插件会大大提高制作mod的效率,且完全对接RE引擎mod的制作流程!
欢迎来到2025年!!!

这时候可能会有人问了,那这不是本来就能做的吗?
在 Blender2.79 版本有 Asterisk 编写的 Mod3-MHW-Importer 插件和 CTC-MHW-Editor 插件。
在 Blender3.0+ 版本有我魔改的 Easier_Mod3_Importer_Exporter 插件以及我编写的 MHW_CTC_CCL_Editor 插件。
那我为何还要再编写这个插件呢?
我会告诉你,大不相同!!!
功能介绍
该插件的功能与界面,与 NSACloud 的 RE-Mesh-Editor 以及 RE-Chain-Editor 插件基本相同。
如果你曾经制作过其他RE引擎游戏的mod,可以快速上手。
反过来如果你还没做过RE引擎游戏的mod,通过熟悉使用该插件,也可以无缝过渡到RE引擎。
以下是该插件的部分功能。
- 包含完整的中文翻译。为了解决Blender控制台的中文乱码问题,请先安装 blender_utf8_console 插件。
- 你可以在侧边栏中找到 MHW Mesh 和 MHW Chain 两个插件面板,两个面板中有各种便于制作mod的功能。

- 你可以直接点击侧边栏面板的按钮以导入和导出文件,不必再去找官方的导入导出按钮,非常快捷。


- 在 Blender4.1+ 版本,你可以将文件拖放到3D视图中以导入它们。
- 导入导出文件的速度非常快(取决于你的io选项)。
- 导入的文件会被放入对应的集合中。

- 你可以导入和导出所有LOD级别的网格,每个LOD级别的网格将被分组并放入对应的集合中。

- 导入的网格摆脱了所谓“负权重”的问题。旧的mod3插件导入的某些混乱权重(比如但丁腰,霜牙腰,霜牙头发,黑龙,以及头模)将被正确解析。这意味着你可以按照8wt的权重总限值直接导出模型,也可以通过权重传递绑定整个面部模型。

- 插件会自动处理一些未知属性(比如blocklabel、shadowflag、weightdynamics等),基本上不必在意它们。
- 导出模型时,插件会自动计算网格的边界球、AABB边界盒和OBB边界盒。
- 导出文件时有非常完整且详细的报错信息,可以帮助你解决各种问题。

- 可以修改mrl3的属性来实时改变材质效果。注意,目前只支持部分参数,还有很多参数需要解析。注意,部分材质节点的显示可能是错误的(比如皮肤材质),在后续的更新中会逐步完善。

- 可以实时编辑物理链和碰撞体,MHW Chain 面板中有很多有用的功能。

- 导入mod3文件时,插件会自动检查非法的网格,并确保只导入完全合法的网格。这意味着你可以导入某些“加密”的mod3文件。

- 导入mrl3文件时,插件会自动检查非法的材质,并确保只导入完全合法的材质。这意味着你可以导入某些“加密”的mrl3文件。
- 链预设和材质预设的名称支持中文。

- 网格的材质名以及mrl3材质的材质名也都支持中文。也就是说材质名不必再局限于类似“Ch_Pl_Standard_Mt__0”的命名格式。你可以按照任意格式命名,比如“body”或“皮肤”,只要确保mod3和mrl3中的材质名互相对应即可。

- 可以快速且批量地转换.tex或.dds贴图文件。且在 Blender4.1+ 版本,你可以将.tex或.dds贴图文件拖放到3D视图中以转换它们。
然而以上功能也只是冰山一角而已。
横向对比
我们来简单对比一下新旧插件。
注,此处旧插件指 Asterisk 编写的 Mod3-MHW-Importer 插件。
实际上旧插件本身是不支持 Blender 2.93+ 版本的,老外直到今天仍然在 Blender 2.79 版本上制作模型mod。
那为什么我们这边可以在 Blender 2.93+ 版本上使用呢?
其实 Asterisk 针对旧插件做了大量的改动,才勉强让其能够适配 Blender 2.93+ 版本。
但他没有明说,而且旧插件在Blender 2.93+ 版本上运行也不稳定,此外部分功能也是阉割过或缺失的,所以整体来说旧插件仍然是不适配较新版本的。
更重要的是,2.79版本那逆天的UI界面!!!
而新插件支持Blender 2.93+ 的所有版本,也包括这个月刚刚发布的 Blender 5.0 版本。
也就是说MHW模型mod的制作可以完全迁移到现代版本的Blender中了。(除了特效、动画这类,当然这部分算是以后的卫星)
在 Blender 3.0 版本上,以导入包含30w个顶点和53w个三角面的黑神话大圣套mod的模型为例。

旧插件的导入时间为:

新插件的导入时间为:

前者约为45s,后者约为5s,换算下来是9倍的速度差距!
模型包含的面数越多,二者的速度差距会越明显。
同样以这个大圣套mod的模型为例。
旧插件的导出时间为:

新插件的导出时间为:

前者约为48s,后者约为16s,换算下来是3倍的速度差距!
当你需要在游戏中测试,并反复修改模型并导出时,新插件更快的导出速度将大大节省你的时间!
熟悉旧插件的朋友可能知道,在导入某些超过4wt权重限制的模型网格时,其权重会变得很混乱。
比如但丁腰,用旧插件导入时,权重会变成下面这样:

或者霜牙头发:

在旧插件的wiki上,这种情况被称为“负权重”,并且附带有单独的说明,见https://github.com/Ezekial711/MonsterHunterWorldModding/wiki/Mod3-Structure-Notes
但实际上,这并不是什么“负权重”的问题,或者说根本没有这种所谓的“负权重”问题。
单纯是旧插件中,解析mod3网格的权重数据的这部分代码计算错误导致的。
而且事实上那部分“负权重”,其数值量级是小于0.001的,完全是由于浮点计算带来的误差,所以是可以忽略不计的。
而新插件解决了这一问题,使用新插件导入的权重则如下所示:


可以看到权重变得正常了。
而MHW的头模权重也都是以8wt为总限值的,所以旧插件导入后也会变得混乱。

同理,新插件导入头模后,权重就会变得正常。

这意味着现在可以通过权重传递来绑定整个面部模型了!
而在导出方面,如果某些网格的权重超过了4wt的总限值,那么在游戏中测试时就可能会看到这部分网格“被拉伸”或“严重变形”的情况。
这一方面是由于旧插件在导出时,blocklabel 和 weightdynamics 两个自定义属性可能不匹配网格的数据结构,导致游戏仍然按照4wt识别网格权重;另一方面也是由于旧插件的权重解析这部分的代码计算错误,导致导出的权重分配错误。
而新插件因为解决了这个问题,所以你可以按照8wt的权重总限值直接导出模型。
另外因为新插件会自动处理如 blocklabel 和 weightdynamics 这样的自定义属性,所以也无需再手动设置网格的自定义属性了,插件会确保这些属性匹配网格的数据结构。
旧插件在导入模型时是没有做分组管理的,导入的网格会统一放在当前的活动集合中。
当导入的模型过多时,大纲视图就会变得很乱。
而新插件在导入文件时会创建对应的集合,并标注了颜色,如下所示:

这会让大纲视图的集合层级看起来更清晰,且可以随时隐藏暂时不需要显示的集合,总的来说更方便管理。
而在导出文件时,也是选择指定的集合导出,且导出的文件名会根据选择的集合名称进行切换。

可能有部分人知道,通过修改mod3文件的某些字段,可以让模型能够正常在游戏中显示,但会使旧插件无法导入该mod3文件,从而达到“加密”的目的。
其原因是旧插件只是按照固定格式读取一个个网格数据块,并没有检测这些数据块中的某些参数值是否匹配结构。
其实 Asterisk 很久之前就注意到了这个问题,但他可能实在是懒得改了(
事实上非法的网格数据块大多是用于混淆目的,这部分网格实际是不会显示在游戏中的,因为一旦显示,游戏自身可能就会报错崩溃。
那么新插件在导入mod3文件时,会检查文件中是否存在某些非法的网格数据块,并且确保插件只导入完全合法的网格。
同时控制台也会显示相应的信息,以供参考。

这只适用于本身仍然符合mod3数据结构的文件,对于某些完全混淆加密的mod3文件,该插件是无法解密的。
不过这就属于是兔子洞了。
还有很多功能在此不方便列出,请各位在使用时自行体验。
下面我会分模块讲解对应的功能,使用方法和注意事项。
首先,请确保已安装 Blender 2.93+ 版本。
然后从github页面顶部的“Download MHW Model Editor”链接下载插件,或者点击右上角的Code > Download Zip。

在Blender中,转到编辑 > 偏好设置 > 插件,然后点击右上角的“安装”按钮。
注意,如果你使用的是 Blender 4.2+ 版本,则可以点击插件菜单右上角的箭头来找到安装按钮。

找到你下载的插件压缩包,然后点击“安装插件”。之后就可以使用了。
要更新此插件,请转到偏好设置 > 插件 > MHW Model Editor,并点击“检查更新”按钮。
在首次安装新插件时,建议首先设置偏好设置项。
高级选项

此选项仅支持 Blender 4.1+ 版本。
如果启用此选项,将文件拖放到3D视图中时,会弹出导入选项窗口。

如果禁用此选项,则会按照默认的导入选项导入文件,不再弹出此窗口。
导入或导出文件时,会打开控制台以便查看进度。
请注意,如果控制台在导入或导出文件之前已经打开,则会被关闭。
这属于Blender的限制,即无法获取控制台窗口的活动状态。
此选项仅支持 Blender 4.2+ 版本,若低于此版本,此选项将不起任何作用。
如果启用此选项,插件将缓存贴图为DDS格式,而不再转换为其他格式。
这将大大提高材质的导入速度,大约快6倍!
如果禁用此选项,对于 Windows 平台,贴图将被转换为TIF格式;对于 非Windows 平台,贴图将被转换为TGA格式。
在侧边栏的 MHW Chain 面板中同步显示ctc和ccl的属性。
如果启用此选项,当激活ctc或ccl对象时,其属性会同步显示在下方的“属性”子面板中。

Mod3导入和导出选项


这部分放到后面的mod3模块再细讲,只需要知道此处是用来设置默认的导入导出选项的。
贴图缓存

这部分用来管理缓存的贴图。
首先设置贴图缓存路径,如果下面提示你当前路径太长,就另选一个文件夹。
我的话是直接在游戏根目录下面新建了一个文件夹,用来存放缓存贴图。
右侧的刷新按钮用来刷新左侧显示的缓存大小。
下面的打开文件夹和清空文件夹按钮就是字面意思了,不做解释。
缓存路径

这部分用来管理导入文件的根目录路径。
实际上也不用在意这部分,而且我也不太好讲,保持自动保存选项启用即可。
只需要知道,仅在导入mod3文件+同时加载网格材质+导入文件的根目录是chunk时,该路径才会被自动添加到缓存路径列表中。
一般将你的MHW解包文件的根目录添加到此处即可。
自动更新

这部分用来检查插件是否有更新新版本。
如果我在github上发布了新版本,你可以点击 Check 按钮来更新插件。
更新完成后,重启Blender即可使新版本生效。
导入选项

在导入mod3文件之前,清理当前场景的所有对象。
此选项即为Blender骨架视图显示的显示类型。
此选项为导入骨骼的显示尺寸,默认为5,骨骼长度为半个小格(以Blender的背景栅格为准)。
添加一个总的父级集合(下图中的白色集合),用于放置其他导入文件的集合。

这会让大纲视图的集合层级看起来更清晰,所以强烈建议启用此选项。
导入mod3文件中的所有LOD层级的网格。
如果不勾选,则只会导入最高LOD层级的网格。
一般来说,我们制作mod只针对最高的LOD层级,所以不勾选即可。
仅导入mod3文件的骨架。
将mrl3材质导入为对象,并放入大纲视图的集合中。
你可以在大纲视图中选择mrl3材质对象来更改材质属性。
在物体数据属性栏(绿色轴)下,有一个名为“Mrl3材质属性”的面板,你可以在那儿修改材质属性。

将mrl3文件作为材质节点导入到mod3网格的材质中。
如果不明白什么意思,简单来说,如果启用此选项,会在Blender的着色模式下,直接渲染出导入的mod3网格的材质效果。

重新转换所有的贴图,而不是读取已经转换的缓存贴图。
如果你修改了贴图并需要重新加载贴图,可以使用此选项。
在材质节点中加载未指定功能的贴图。
禁用此选项将加快导入材质的速度。
仅当你计划编辑材质节点时才启用此选项。
在材质节点中加载未指定功能的材质属性。
禁用此选项将加快导入材质的速度。
仅当你计划编辑材质节点时才启用此选项。
手动设置要导入的mrl3文件的路径。
你可以按住 shift 键并右键单击mrl3文件,然后点击“复制为路径”,并将其粘贴于此。
如果留空,插件会自动寻找对应的mrl3文件,所以大多数时候都无需手动设置。
从ctc与ccl文件中加载物理链和碰撞对象。
网格工具

创建一个新的mod3集合,用于放置骨架和网格。
注意,如果你正在制作防具模型,可以使用此按钮创建新集合。
否则,强烈建议从外部导入mod3文件来继承集合的自定义属性。
这是因为每个mod3文件的标头都有一些未知属性,包括网格组的包围球。
而从外部导入mod3文件时,这些未知属性会写入mod3集合的自定义属性中。
为了确保替换的模型在游戏中不会出问题,最好还是从外部导入这些未知属性。

创建包含mod3,mrl3和ctc集合的嵌套集合组。
嵌套集合组可以让集合的层级结构更为清晰。

将选中的网格重命名为mod3网格的命名格式。
例如,如果网格对象的第一个材质的名称为Body,则该网格将被重命名为Group_0_Sub_0__Body。
快速设置选中网格的网格组ID。
网格组ID即为旧插件的“VisableCondition”属性,那么新插件将其放到了网格名称的开头,也就是“Group_0”。
例如,你选择了某些名称中含有“Group_0”的网格,并输入数字“2”,则这些网格名称中的“Group_0”都会被修改为“Group_2”。

当你需要配合变身插件制作形态切换的mod时,此功能非常方便快捷。
将世界空间的法向烘焙到选中网格的顶点色。
烘焙出来的顶点色会被保存在名为“World Space Normal”的顶点色通道中。
像头发材质(PL_Hair_Mt)会利用网格的顶点色来提供假性光泽,这时候就需要用到此功能来绘制顶点色。

如果选中了过多网格,该操作可能会消耗较长时间。
删除选中网格上不成面的松散顶点和边。
清除所有未分配权重的空顶点组。
将每个顶点的骨骼影响数量限制为8,并对选中网格的所有顶点组的权重进行归一化。
因为新插件解决了8wt权重混乱的问题,所以不再需要限制为4wt了,可以直接以8wt的总限值导出模型。
导出选项

在此处选择要导出的mod3集合。
仅导出指定mod3集合中的选中网格。
仅导出指定mod3集合中的可见网格。
你可以在mod3集合内创建新的集合,用于分组管理模型网格。
你可以隐藏某些集合,并且在导出模型时勾选此选项,那么插件将只导出可见集合内的网格。
这对于制作配件或者不同形态的模型非常方便。

分离相连的UV孤岛,实际上就是以前所谓的“分离缝合边”。
那么批量插件的“分离缝合边”按钮到此就没有用处了,新插件会在导出时自动处理。
该选项只会修改导出的网格,不会修改原始的网格。
顺带解释一下什么是导出的网格,在导出模型时,插件会遍历每个网格,并复制一个完全相同的临时网格对象,该临时网格就是导出的网格。
之后无论是处理重叠UV还是分离锐边都是对该临时网格进行操作,所以不会影响原始网格。
那么最后要注意的是,如果未启用网格的自动光滑,导出后的法向可能会变。
推荐常态勾选。
分离所有锐边,以在导出的网格上保留锐边。
锐边就是在网格的编辑模式下被标记为高亮浅蓝色的那些边。
如果某些网格含有锐边,则在导出时需要勾选此选项,或者也可以常态勾选。
同样,该选项只会修改导出的网格,不会修改原始的网格。
如果不勾选,导出时会从每个网格的名称中获取材质名。

例如,如果网格名称为Group_0_Sub_0__Body,则材质名称为Body。
如果勾选,则材质名称将取自分配给网格的第一个材质。

简单来讲就是选择从网格获取材质名的方式。
因为我们在编辑网格时,要做“重命名网格”这一步,一般来说是从网格名称中获取材质名,所以此选项绝大多数时候都不会考虑勾选。
隐藏衣装Mod 有一个bug,即当穿上转身衣装后,人物身体部位模型的第一个材质的发光效果将被强制关闭。
如果启用此选项,插件将添加一个无用材质作为第一个材质,来避免此问题。
强烈建议启用此选项。
导出报错

导出mod3时,插件会遍历每个网格和骨架中的每个骨骼,并检查其是否有需要被修复的问题。
在这些问题被修复之前,是无法成功导出mod3文件的。
不过无须担心,插件内置了非常完整且详细的报错信息,包括修复这些问题的方法,以及包含该错误的网格对象、骨骼等。
而且我都做了汉化,所以你也不用怕看不明白。
除了上图中的弹窗显示错误信息,控制台也会同步输出这些错误信息。

编辑模型
新插件的骨骼名称统一为“MhBone_xxx”格式,其中“xxx”是骨骼的功能ID。
骨骼的功能ID最大不应超过511。
在导出模型时,插件会检查每个骨骼的名称是否都匹配此格式。
如果有不匹配的骨骼,则会弹出报错信息。
注意,“MhBone_xxx”的骨骼功能ID只能为三位数字。
也就是说像 “MhBone_abc”,“MhBone_00a”,“MhBone_013.001”这样的骨骼名也是不匹配的。
所以请在编辑骨骼时多加注意。
新插件的网格名称统一为“Group_0_Sub_0__Body”的格式。
其中“Group”的后缀数字代表网格组ID,你可以点击 “设置网格组ID”按钮来快速修改网格组ID。
“Sub”的后缀数字代表网格在Blender中的排序ID,它可以是任意值,仅代表其在Blender中的排序顺序。
末尾的两个下划线之后是网格的材质名,在导出模型时,插件会尝试从网格名称中获取材质名。
再次提一嘴,你可以任意命名材质名,比如“body”或“皮肤”,只要确保mod3和mrl3中的材质名互相对应即可。
新插件的网格的自定义属性只有下图中的4个:

一般来说,基本不必在意这4个属性,就算是旧插件也很少会去修改这4个属性。
而在导出模型时,如果某个网格没有这几个自定义属性,插件会自动赋予默认值。
也就是说,无需再做“合并网格以继承自定义属性”这一步操作。
你可以直接把任意模型的网格放入mod3集合中,然后导出它们。
相比旧插件这又是一个非常大的优化。
用爱F♂A电,实属不易。
如果你觉得这个插件能够帮助到你,可以在github上送我一颗免费的星星~
另外未来插件可能还会添加更多的功能,以及扩充更多可支持的文件类型(如vm贴图和lmt动画等)。
之后我会在逐步在B站更新船新的MHW模型mod的制作教程,也希望大家多多地关注,多多地支持,谢谢!
若对mod制作或新插件的使用有任何疑问,可以加俺滴扣扣群640945651,群里面都是做mod的大佬,一个个说话超好听的,超喜欢在里面的。
如果你在使用新插件的过程中遇到了某些未知报错或bug,可以在github上提交issue,最好附带控制台的报错信息截图,以及你的工程文件或mod文件等。
mod定制加我扣扣2239389326。
B站:不太亮的诸葛亮