伊苏10mod个人学习笔记2—骨骼移植篇
galaxy17
编辑于 2024年11月28日 20:54
收录于文集
共22篇

事先声明:博主搞这个完全是外行,这里只是把自己目前学会的东西做一个分享,肯定还有很多需要学习的地方,请不要把本文当成规范正确的操作。其他请见笔记1。

本文内含伊苏9结局boss剧透,如果不想被剧透,请酌情阅读。如果近期内计划打9,建议先通关再来看比较能理解博主为什么这么惦记这个。

这次根据老外教学(https://github.com/eArmada8/kuro_mdl_tool)尝试转移伊苏9结局boss的大翅膀给亚特鲁,因为是加部件,感觉应该是比较特殊的一个操作,所以做一个记录。 原教学中“向模型添加物理”这一节由于找不到9中有可以使用的数据,只能暂时放弃,只做前面的部分,因此不要过度期待效果。

本文是我自己学习之后的记录,内容和老外教学不是完全相同,如果出现一些脑子瓦特才会有的操作,请不要误会是老外脑子瓦特了,肯定是我瓦特了。

涉及的模型分别是b010和上次的c0102,和上次一样,先各自解包出glb和完整mesh。

准备mod基本数据

到mods\asset\common\model,删除之前的c0000和之前的mdl,把c0102复制到model目录并重命名为c0000

然后删除c0000中除了image_list.json和material_info.json的所有文件。

图片的话,因为这次做好想分享,所以要一起打包,所以需要放进mods\asset\dx11\image

准备接收模型

blender新建项目,先导入c0102.glb。

身上这些球我也不知道是怎么来的,很丑,所以我选择右上角窗口选中这个之后保持鼠标在这个窗口中,按del删除。

展开的这个gamepoint我也不知道是什么,可以用删除层级删除

然后我觉得空物体干扰,但又不知道能不能删除。所以按选择-按类型全选-空物体,然后按H隐藏。

为了方便称呼,这里也重命名一下,这样目标模型的准备就暂时算完成了,可以保存一下,这样下次想改这个模型就不需要重复上面的操作了。

准备供体模型

接下来导入b010.glb。一样的,删除棱角球,然后全选空物体,隐藏。

刚才那个我们怕影响导出所以只是隐藏,对这个模型,可以把隐藏(灰掉)的项目选中全部删除,排除干扰。 (不在选中之后直接删除是因为虽然好像其实不会,但我还是怕会选到目标模型里的空物体,所以保险一点,先隐藏再删除。)

这样提供者的基本模型也暂时准备好了。可以另存一下。

接下来,因为我们只想要翅膀,所以把除此以外的东西也都删除。不要动到“姿态”和这里是“Armature.001”,不过估计想删其实也删不了。

然后选中,打开数据,右边箭头,清理空顶点组

剩下这些就是我们等一下要添加的东西,这里改了个名b010。

如何检查同名组

因为我们这个完全是新的部件,还是从其他游戏导进来的,所以检查同名组也白搭,不过还是讲一下怎么操作。方法很简单,就是上次我们不知道干什么用的blender_lock_groups_with_vgmap.py插件。

因为我们想检查所有的组,所以全选c0102的vgmap,按确定,vgmap中存在的组就会被锁定(这里我改了名字展示效果,实际上是没有同名组的)

截图这里没有锁定的组备用。因为接下来要一个个去选中…

分离骨骼

点击Armature.001,左边选编辑模式。

可以看到这家伙多了一个绿色的边框,这样就是对了

然后对照刚才的顶点组全部找出来,按ctrl一个个选中,不要漏。

令人忧伤的工作

然后选骨架-分离骨骼。

可以看到多出一个这么个东西。我也不知道漏了怎么办,以防万一不要漏吧。

左上回到物体模式。

合并骨骼

选中b010.001,然后选c0102,c0102相关的东西应该会显示成橙色,b010是红色。然后Ctrl+J合并,如果一切顺利,应该会看到b010.001不见了。

实际上是跑进了Armature里,这也是为什么需要先导入目标模型,否则这里会被改成001,还要改名,十分难受。

然后选中Mesh_wing,按住shift拖动到c0102里。b010剩下的东西可以右键b010“删除层级”删除,保存一下进度。

其实这个Mesh_wing最终其实还是得合并给其他部件,所以这一步没什么用,可以直接选部件合并,我这里是因为觉得把能做的都先做了之后保存一个的话就算之后需要调整,也能减少操作。(至少按我目前体验是这样)

接下来需要把骨骼焊到原有的骨骼上(我也不知道其中父级选择有没有什么讲究,只能凭感觉乱讲)。一样,选中Armature,进入编辑模式。

可以看到各自有一个spine1,展开各有一个Spine2,展开是RightShoulder这种东西,我觉得应该是差不多的,所以我们就准备把这几个接到共同的祖先也就是Spine2上,父级的两个直接放弃。

正骨方法是:点击选中Bone_Lshoulder,按shift点Bone_Rwing1_1把四个父级全部选中,按Ctrl点击Spine2,然后按骨架-父级-生成-保持偏移量,或直接按Ctrl+P,就直接到最后一步选保持偏移量。

可以看到它们被移进来了,正确的焊点是不是这里姑且不提,总之这样就算装上了。

导出、拆分模型

就像刚才提到的,好像Mesh_wing即使放在里面也不会识别,所以还是要把它附加到其他部位上。我这里选的是body11,方法就是之前说的合并。

先选Mesh_wing,再选body11,Ctrl+J。

完成之后,把文件导出为glb。注意网格-切向这里要选中,好像每次重启blender之后都要重新勾选,自己留意一下。

再将glb文件复制到kuro_gltf_to_meshes.py所在目录。

用文本编辑工具打开kuro_gltf_to_meshes.py,确定第25行是:

complete_vgmaps_default = True

然后这里需要注意如果你习惯每次用一样的名字,就需要删除上一次导出的文件夹,以免多余的部件在编辑时造成干扰。如果你在kuro_gltf_to_meshes.py所在目录同时有多个glb,会一次全部被导出,所以综合,建议导出成功就把它们都移出去或者删除。

然后双击,将会得到导出的mesh文件夹。把里面的文件全部移动到\mods\asset\common\model\c0000。

补材质

不补足材质是无法导入mdl的,所以这里需要补上缺失的材质定义,有两种方法:

第一种,直接双击kuro_mdl_import_meshes.py,它会提示

ValueError: Attempted to add material cgfx_wing it does not exist in material_info.json!

Press Enter to abort.

其中cgfx_wing就是缺少的材质。另一种方法是直接点击刚才合并的body11,左下切换到材质窗口,也可以看到材质名字。(我目前不太知道在这里指派给其他材质会不会有什么后果,保险起见,还是不要动它了。)

更新:写了一个辅助工具解决json编辑难阅读难的问题,请移步笔记3。可以利用工具适当跳过下面这一部分,但考虑到可能有人希望学习不依靠工具的做法,因此本段仍然保留。


打开material_info.json。复制一个原有的节点,把其中material_name的值改成缺少的这些名字。

一个完整的节点,包括两边的大括号

重复添加节点,直到不再报错。

编辑json有以下几个外行容易踩的坑,自己注意一下:

错误:两个节点之间没有用半角逗号(,)隔开,或者不小心用了中文输入法

错误

修复正确

错误:值没有用半角双引号"开始或结束,或者没有以半角逗号(,)和下一对值隔开:

错误

错误

修复正确

最后一对值或者是整个节点之后不要有多余的半角逗号(,),需要自行删除

错误

修复正确

还有一个很基础的错误是粘出数组(图中举例就是直接拉到最后一行粘到]后面了)了,可以理解成一对括号中间的是一个口袋,口袋会套口袋,往口袋里塞东西不要塞到口袋外面,可能有点抽象,自己适应一下。


至于image_list.json,貌似并不用改。

弄好之后先不急着改其他的,直接导入mdl试一试。如果按上述步骤操作无误的话应该是可以顺利打包的,ys启动!!

顺利的话会看到这样的画面:

如果没有的话,需要自己检查一下以上贴图文件、材质json、骨骼节点、合并部件是否都做了。

这里贴图还是错的,改的话就是刚才的material_info.json,在texture_image_name这里改成对应的,注意不用带后缀名.dds。

如果你想隐藏部分部件方便查看哪个贴图被改了,可以这样做:

blender新建项目,导入刚才的vbib; 点击你想保留的部件,可以在右边看到被高亮选中:

然后到\mods\asset\common\model\c0000即准备导入mdl的文件夹,删除其他的vbib; 然后重建mdl和打包p3a,就会看到其他部件已经没有了

如果觉得每次都要看不方便,可以把这个vb的名字写到shader_switches_hash_referenceonly中,方便以后修改,像这样:

这个值目前不影响重新导入,所以可以把参考写在这里,但我建议补在后面就好了,否则万一需要的时候又会很麻烦了。

另外,修改贴图根据情况可能会需要翻uv。先把放进游戏文件夹的用到的贴图用绘图编辑软件上下翻转一下,然后打开未翻转的原始贴图文件夹。以下操作需要用到的都是未翻转的原文件。

选中所需部位,上面按着色

点击新建

把图拖动进来,然后点左边“颜色”旁边的黄点,拖动到右边的“基础色”

然后按uv编辑

右上选这个(根据情况可能需要调整分格大小才能看见)就能预览到效果。

像图上看起来就是镜像了,可以翻图,或者,我不知道正规改法是怎样,说说我的: 先左边全选,然后展开右上工具栏,点击X,复制其中的数值。

复制好以后右键,X向镜像,可以看到现在其实还有点偏移,不要紧,点击X,输入0-(粘贴)。

可以看到贴图正常了。 像上面说的那样,这个引擎不知道为什么图是翻转着读取的,所以如果不想翻贴图,就需要这里再做一步: 全选,记录Y的数值,Y向镜像,输入0-(粘贴)+1。

因为这个是导入进来的缓冲区(vbib),因此这次可以直接单独导出各个缓冲区,打包就可以看到这个部位的贴图明显变正常了。

如果出现这种飘到外面的,一种方法是展开“视图”勾选重复图像

一种方法就是选中之后给X做加减法,输+1回车向右,-1向左。选择翻转的话,注意每次都先调整好,最后再转Y轴。

全部改好之后,分别导出

(可能因为太长了,总被镜头剪辑,只好先展示背影了

另外真的要发布的话记得把这里只留下mdl再打包,否则会被一起打进去,越来越大…

那么今天就到这里,希望能给想做mod的朋友们一些帮助和启发:D