注意:本文默认您已经看完并熟悉了教学(一)(二)所介绍的内容。接下来按照老外教学,讲解如何用游戏本身中另一个角色的身体部分,实质上等于是服装,替换某一个角色的身体部分。注意由于角色之间身高不同,可能需要对模型进行一定的缩放。
由于两个模型都是空re本身的,所以不需要涉及修改顶点组名字之类的操作。如果是外来的模型会较为麻烦一些。本文只讲空re本身的互换。
实际上根据后续的教学,这篇文章的内容其实基本可以跳过不看,但做mod有些东西是比较通用的,我们也不清楚学了会不会什么时候就又有用了,所以依然还是写出来,还请理解。
本文只是转述,老外github上的教学比较详细,还有配图,如果有需要或者疑惑可以参考那一篇的内容。
————
这里我们用把科洛丝的校服移植给艾斯蒂尔做例子。
她们的模型分别是chr5004和chr5000。
将这两个mdl复制到工具目录,并用kuro_mdl_export_http://meshes.py分别解出文件夹。
打开blender,导入chr5004的vb+ib。删除头部和头发。
由于科洛丝有个发圈,这里需要切换到编辑模式选中并删除发圈。

接下来需要比较权重组(顶点组)是否兼容。开始之前请检查一下之前提到的blender_lock_groups_with_vgmap.py和blender_delete_empty_vertex_groups.py插件必须已经安装。
对科洛丝身体的三个网格依次使用Delete empty (unlocked) vertex groups。

移除空的顶点组之后,要检查科洛丝身体有,艾斯蒂尔没有的顶点组。
方法是选择Lock groups using VGMap,blender会开启文件浏览视图,定位到艾斯蒂尔的文件夹,选中所有hair和shadow以外的.vgmap,按确定。依次对每个网格执行此操作。

操作完毕之后会看到一部分顶点组被锁定了,一部分没有,没有的这些是科洛丝身体有艾斯蒂尔身体没有的新顶点组,需要把它们合并掉(一般是给其父级)才不会让角色动起来很奇怪。

为了确定父级是哪个顶点组,先用kuro_mdl_to_basic_gltf.py将科洛丝的mdl转换为gltf。然后在blender中导入该gltf。
导入之后点开骨骼,寻找对应的节点。这里以Scarf为例。可以看到其父级是Spine2。

切换到修改器版面,选择顶点权重混合。

顶点组A填要合并到的父级顶点组,顶点组B填要被合并掉的顶点组,设置选A或B,混合模式选相加。

复制此修改器,直到每个未锁定的组都被添加,然后依次按应用。


合并完成后,就可以删除这些未锁定的组了。
将三个网格都如此处理好之后,开一个新的blender窗口,导入chr5000的vb+ib。隐藏(选中然后按快捷键H)头发和脸以外的部分。可以看到最后剩下3个网格还亮着,我们将把科洛丝的身体分别合并到这三个网格里,原则上是随便的,不过基本上就把材质相近的合并到一起吧。
选中并复制科洛丝处理完毕的网格,粘贴到新窗口中。如果有需要,进行一些缩放,方法是按一下S之后拖动鼠标,然后按菜单的物体-应用-全部变换。
点击艾斯蒂尔的衣服部分,然后左上选择权重绘制模式,选择菜单的权重-全部规格化。

点击科洛丝的衣服部分,左上选择编辑模式,菜单按选择-无。回到物体模式。

点击科洛丝衣服,再按Ctrl点击艾斯蒂尔衣服,注意顺序不能反,一定是把新的合并到旧的里面,然后按Ctrl+J。
进入编辑模式,按del删除艾斯蒂尔的部分。重复以上操作。
对于艾斯蒂尔的发卡部分,我们需要保留发卡而删除身体上的金属部件,因此我们可以在合并前,对艾斯蒂尔的发卡进入编辑模式,取消选中发卡,然后再进行合并。

完成后,用导出vb+ib分别导出这三个网格,覆盖chr5000中的对应网格。
完成修改模型后先不急着改贴图,因为如果权重不对后面几乎没法改,要先在这里导入一次模型确认形状正确。
用kuro_mdl_import_meshes.py chr5000.mdl导入模型。可以看到这玩意有点问题。检查顶点组是因为有SA03和SC03两个组不知道为什么没匹配好。


用修改器合并之后删除,并再按一次标准化,可以看到还有一块不太对劲,应该是我手滑了,合并的时候RightSA02歪掉了,这个好像没什么挽回的办法,所以说做的时候尽量小心。这里就先无视它。



————
接下来这段,老外是教了怎么缝合脖子,但这段操作有点复杂,我也看不太懂,有需要请自己啃老外教学,或者自己找blender教学凑合处理应该也行。
————
模型处理完了,接下来就是修复贴图。找出科洛丝的material_info中,衣服对应的节点,用对应贴图修改艾斯蒂尔的material_info中的对应贴图。
打包,完成

可以看到发卡的部分由于直接换用了科洛丝的贴图导致贴图出了问题,而且目前应该也没办法改。我们会在后面的另一种移植手法里再用另一种方法解决这个问题。