Unreal Engine MMD Skeleton Retargeting Guide

2k 词

可以呈现的效果:

有时为了将一些好看的模型用到自己的项目中,我们不得不从模之屋中获取,并使用插件VRM4U将 .pmx 文件导入到UE的项目中。

但是导入的模型往往在手臂存在多种问题,本文将介绍如何有效处理这类骨骼的重定向。

简要动画

如果你的目标仅仅是希望某个角色的动画能粗略地看一下没问题,不涉及较为精确的动画系统,那么你可以采取以下步骤:

导入模型

在项目中装好VRM4U插件,并启用后,将.pmx文件拖入指定文件夹。

保留其默认设置导入;一般而言,这种情况下并不需要使用IK Bone,如果有需要可以在设置中调整。

导入设置

导入完成后,会有诸多文件,如材质、贴图、骨骼、IK Rig等。

我们可以将其归类整理,并可以删除Anim Sequence和动画蓝图。

设置Retarget

找到导入时生成的IK Rig,我们可以重点关注后缀为 Mannequin 的IK Rig,该文件已经参考UE标准骨骼完成了相关基础设置,事实上,你可以使用该文件快速重定向获取一些并不太精确的动画。

IKRig

创建IK Retargeter.

RTG

并将源骨骼设置为UE标准骨骼,即动画素材所使用的骨骼;将目标骨骼设置为你想要的角色。

并进去姿态编辑状态,这里可以选择源骨骼,并自动对齐所有骨骼。

随后根据需求,对齐出现明显偏差的骨骼。例如角色离地、脚的角度等。

初步重定向

随后点击一个asset预览其动作:

从结果上看,整体姿态没有问题,但是手臂出现了两个关节。

这是因为MMD骨骼导入时,层级关系是错误的。

我们点击Skeleton,回到骨骼界面,分析手臂骨骼:

Skeleton

我们发现,该骨骼的肩部有三根骨骼,而标准的UE骨骼只有一根;该骨骼的手臂有五根,在大臂、小臂处额外出现了两根,而标准的UE骨骼是三段式的。

这也就解释了为什么在重定向时,手臂会出现三节小臂,因为在定位时,用到了五根。

最简单的解决方法

为了避免多余产生的两个骨骼发挥作用,我们回到IK Rig,为多余两根骨骼增添IK设置,将XYZ的旋转全部Locked.

IKChangeF

随后进入RTG,将手臂部分Chain的Rotation Alpha设置为0.

RTGF

当然,你还需要根据自己的需要调整Pose,调整映射关系等,最后的结果为:

ResultF

手臂已经表现非常正常,但是在手腕处还有些问题。

总结

这类处理方法,能够在不更改骨骼的情况下,产生能看的结果,但是如果你需要使用一些IK节点或者有其他更精细的需求,这类方法是不足以发挥作用的。

NotSoBad

我们可以发现,在手臂朝向上,原动画与重定向后的动画有较大的区别,一旦涉及到手部IK的情况,将非常痛苦。

痛苦到,我琢磨这种情况的手部IK,琢磨一周毫无进展,手就是不在枪上。。。

精细动画

既然骨骼有问题,我们理应修改骨骼的层级关系。

骨骼修改

骨骼修改有许多方式,在这里我们使用UE的一个插件,当然,你完全可以使用Blender等更专业的软件。

但对于简单的操作,插件完全可以胜任。

  • 将左右肩移动至左右肩P的父级下,即左右肩与左右肩P同级。
  • 删除左右肩P.
  • 将左右腕移动至左右肩下,即左右腕与左右肩C同级。
  • 删除左右肩C.

最终得到一个单独的肩骨骼。

手臂

  • 将左右ひじ移动至左右腕下。
  • 将左右手首移动至左右ひじ。

腿部

如果有需要,你也可以针对腿部进行层级关系修改。

结果

修改后的手臂骨骼如下:
Arm

骨骼修改为三段式,而带有 捩 的骨骼,是负责手臂扭曲效果的,有权重,需保留。

IK Rig

既然修改了骨骼,那么需要自己重新设置IK Rig,我的设置如下:

Retarget设置

在重定向前,如果原始素材启用了Forced Root Lock,需要把它关闭,否则IK可能失效。

  • 将Root Chain设置Globally Scaled,确保根骨运动。
  • 调整Pose:
    • 保留目标腿部骨骼不变(IK Bone方便),针对源骨骼自动对齐,并自行调整。
    • 目标手部骨骼更改,将其改为T-Pose,并同步修改源骨骼。
    • 调整其他部位

即可进行重定向。

IK Bone

如果你有IK需求,那么自然你需要IK Bone也发生移动,此处是方法:

  • 点击Post Settings,使用Pin Bone.
  • 填入你需要复制的信息。


此时你可以完成IK Bone的运动,便于后续使用。

Weapon Bone

既然涉及到高精度的动画,有时角色手里可能需要拿一些东西,如果单纯在手掌部分增加Socket来绑定持有物品的Mesh,很难在动画上取得比较好的效果。

例如武器本身的朝向可能会随着动画而改变,但很多时候我们重定向的动画始终有偏差。

  • 如果我们调整Socket,使得在某一动画有较好的效果,但往往在另一段动画表现很差,你不可能不停地增加Socket解决;
  • 如果我们调整手臂来适应武器的旋转,一方面对于像我这种对动画一窍不通的人而言,这个工作量相当大,另一方面,这也与原动画效果不符。

所以我们需要在手中部分增加一个不影响Mesh的骨骼,此处我增加了weapon_r.

将枪械的Socket添加到武器骨下,这样在修改枪械朝向时,我们不用修改Socket,而是为动画序列增加武器骨的关键帧。

留言