上周末进行了一些模型移植到空re的研究,有了一定成果,虽不能保证是完全正确的解决方案,但姑且记下要点供想继续研究的人参考。
本文只针对基本的移植之后的一些细节问题,对于如何解包和完成基本的模型替換,请参考这篇总目录:
本文将涉及以下这些问题:
部分部件尤其是衣服缺少动态效果——可能是缺少物理效果,可以参考这篇:
移植过来的模型脸部变形——无解,临时解决方案是把脸部固定或者换脸
替换成不同性别的角色之后待机动作有违和感——需要替换待机动作,下文将简单介绍一下怎么做
连携画面眼部特写缺失——似乎是查找Left_eye,Right_eye失败造成,将介绍怎么处理
战技镜头偏移——无解,因为镜头位置似乎是根据角色身高写死的,也因此临时解决方案是缩放模型把身高调整到差不多就行了。
给角色戴眼镜无法显示、武器变成空气——定位点缺失,下文将介绍如何添加
这个问题应该是由于部分动画是基于角色固有的五官比例制作造成的,换句话说就是这些动画中,五官会回到原角色原有的位置,这就是为什么会变形的根本原因,所以对我来说目前应该是没有解决的可能性的,即使是空re自己的模型互换也一样会有这个问题,除非找到办法调整动画文件,否则估计无解。
目前来说,我们可以通过把脸部整个固定住,也就是让这些变形的东西无面可变来牺牲表情变化暂且解决变形的问题,具体来说做法就是将这些骨骼和顶点组改为游戏不认识的名字。
操作很简单,只要将模型转换为glb格式导入blender,展开"Armature"、将"Head"以下的子节点都改成其他名字就可以了。
另外,也可以按照以下操作运行我分享链接中提供的renameBonesNote中的代码来自动重命名。方法是:
点击左下的时间轴窗口左上的图标,切换到python控制台窗口。将其高度调整到一定程度。
在右边大纲中点击"Armature",然后复制我提供的renameBonesNote中的代码,保持鼠标在python控制台窗口内,粘贴代码,然后按两次回车即可。
如果父级节点不叫"Head",请编辑headkey改为正确的名字。
如果Armature不叫"Armature",请编辑bpy.data.armatures['Armature']改为正确的名字。
请注意在粘贴之前点击一下"Armature",否则可能会报错。
另外,Head是用来选择子代元素的,其本身不用改名,所以将其添加到arr_ignore跳过改名。如果因情况需要将其改名的话可以将arr_ignore里面的东西删掉,变成arr_ignore=[]。
另一种解决方法是保留原角色的脸,只替换头发身体这些部分。要注意的是即使是这种方法做出来的模型也是无法随意替换给其他人的,因为不同角色脸部还是不一样,依然会有变形的问题。只推荐在正好有角色脸部接近的情况下用。具体做法可以参考这篇:
基本上来说是播放名字类似角色id_m_wait的mdl文件(动画)。因此,可以通过将此文件替换为其他fdk动画文件(直接复制改名就可以)或者尝试导入新动画的方法来解决。
如果您对导入自己的动画感兴趣,可以参考这篇,但不保证一定适用:
目前尝试下来可能是会查找Left_eye,Right_eye中的一个或两个来作为定位,因此需要注意的是有没有通过改名让眼睛位置的骨骼名称确实名字是Left_eye,Right_eye(区分大小写)。
我们之前提到了,改名的目的是让程序找不到对应的顶点组,但是改名、删除又会导致这个定位失效,因此我们需要做的是弄一个没有对应顶点组的骨骼,让改了名字的骨骼对应改了名的顶点组,原名的就只是定位用的骨骼,没有对应顶点组。(也可能叫权重组?不太清楚这一块)
如果是用我提供的renameBonesNote代码来操作,则只需要编辑arr_copy部分,将需要保留一份的节点名字写进去,它就可以自己完成复制。
您也可以自己找办法来复制骨骼节点,不过我没有研究过具体的操作,因此就不介绍了。
这里有个很想吐槽的地方是好像这游戏是这样的就是你给没有眼镜定位点“Megane_Point”的角色模型戴眼镜会导致武器也消失,
但如果不戴眼镜武器就能显示,不知道是发生了什么会这样的。总之,现阶段来说,解决了眼镜的问题武器消失的问题就自动解决了。
虽然老外说做这个需要用什么metadata之类的,但实测感觉自己导入glb之后添加空物体做定位点就可以。
首先,如果不是准备用复制合并删除网格的方法移植模型,请注意不要删除导入glb时产生的“空物体”,将其隐藏就好。
如果删了要重新加上去相当麻烦,不如重新导入。
如果没戴眼镜时也不显示武器,就很可能是删除了空物体导致缺少手部定位造成的。当然,也可能是因为角色模型本身就缺少手部定位。
如果是原glb确实没有的空物体,就要参考空re原生模型导出的glb,找到可能需要的对应的“空物体”,复制原有的空物体或者插入空物体,
将其名称、父级、旋转调整为合适的样子,缩放固定为1,然后手动微调其位置。似乎不需要应用变换。
您也可以用我提供的AddEmptyObjNote代码来自动插入空物体。
如果要添加新的空物体,请编辑arr_addPoint,按名字,父级,父级类型,父级骨骼名称的格式填写。父级不是骨骼的不会用到第四个参数,随便写点什么就行。
运行之后会输出一些信息,如果没有提示Error就表示运行成功。但请注意只能完成名字、父级、旋转的设置,您依然需要手动调整这些定位点的坐标位置以适应实际情况。
闪退或者卡死是模型有问题。否则很可能是放错文件夹或者id错误。请自行检查。有些mod可能替换的是dlc造型(名字后面有"_"),注意阅读发布者的说明。
建议参考老外的光剑模组对应的mdl名字。
请参考我分享链接中提供的"空轨1st costume内容整理"。
请参考如何查找dlc模型处理对应素材。
需要改shader才行,可以参考这篇文章:
能改,但据说很麻烦,我也不会。请参考老外的mod。
可以,但得自己改table,要等kurotools更新schema才能稍微好改一点。
请先检查节点是否改名了。如果还是不行建议采用直接把新网格合并到旧网格的做法而不是整体导入导出,因为可能会有一些骨骼结构导致的问题(这个我也不是很清楚)
角色埋进地里了:请检查是不是导入glb的时候删多了world之类的东西。
所以我也不清楚。感兴趣的可以自己研究。
不清楚。理论上顶点组名字位置正确就行吧。感兴趣的可以自己研究。
据说好像都在mi文件里,我也没改过,不太清楚。感兴趣的可以自己研究。