← ALL ARTICLES
动画系统4 MIN READ

动画重定向

全库目录221
本文目录6

同名骨骼不一定使用同一坐标。源角色的手臂沿局部 X 轴,目标角色沿局部 Y 轴,直接复制旋转就会把抬手变成扭手。重定向先把动作从参考姿态中分离,再用对应基底表达这份变化。比例和接触点随后处理,因为旋转正确并不保证脚落在地面上。

参考姿态与旋转映射

先为两套骨架建立语义对应,例如左上臂对应左上臂,而不是按导出序号相等匹配。缺失扭转骨时可以把转角分配给现有链,缺失整条手臂则需要明确的动画回退。名字只提供候选,父子关系和参考轴用于确认。

以下采用列向量和右乘局部增量。源关节的参考局部旋转为 Rs0R_s^0,当前局部旋转为 RsR_s,二者都把关节局部坐标变到源父坐标。先求:

Ds=(Rs0)−1RsD_s=(R_s^0)^{-1}R_s

DsD_s 表示相对参考姿态的局部变化。设正交矩阵 CC 把源关节的参考局部坐标变成目标关节的参考局部坐标,目标参考旋转为 Rt0R_t^0,则:

Dt=CDsC−1,Rt=Rt0DtD_t=CD_sC^{-1},\qquad R_t=R_t^0D_t

右侧先把目标向量变回源基底,执行源动作,再变回目标基底,因此同一解剖方向上的旋转得以保留。CC 来自两端对齐后的参考轴;它不能仅由骨骼名称推导。若骨架已在共同模型坐标中对齐,源、目标参考关节朝向分别是 BsB_s、BtB_t,可取 C=Bt−1BsC=B_t^{-1}B_s。导入坐标系的整体校正应在求这两个朝向之前完成。

取C为绕Z轴旋转90°的基底变换,源增量绕X轴旋转30°;共轭后的增量就绕目标Y轴旋转30°。直接复制增量仍会绕目标X轴,数值角度正确、解剖方向却错误。这个单轴输入比一段复杂走路动作更容易区分轴映射与动作本身。

当源姿态等于参考姿态时,Ds=ID_s=I,输出必然等于目标参考姿态。这是不依赖动作内容的检查。再给源骨绕自身长轴转动 30°,目标也应绕自己的长轴转动,而不是绕源模型的世界轴旋转。

局部求值

下面是矩阵算法片段,输入均为纯旋转,Transpose 因正交性等于逆矩阵;缩放已由导入器分离。输出仍为目标关节相对父关节的旋转,随后按父先子后的顺序累积模型姿态。

text
sourceDelta = Transpose(sourceReferenceLocal) * sourceCurrentLocal
targetDelta = basisMap * sourceDelta * Transpose(basisMap)
targetCurrentLocal = targetReferenceLocal * targetDelta
targetCurrentTranslation = targetReferenceTranslation

目标局部平移保留参考骨长。若把源平移轨道逐骨复制,较短的目标前臂也会被拉成长前臂,角色比例随动作变化。带伸缩意图的非刚性骨骼需要独立的尺度规则;纯旋转映射不表达这种意图。

根运动与接触目标

旋转确定以后,两套不同长度的腿仍会走出不同步幅。根运动可用腿长比 s=Lt/Lss=L_t/L_s 缩放水平位移,并用角色朝向基底 AA 转换方向:Δpt=sAΔps\Delta p_t=sA\Delta p_s。长度统一为米,ss 无量纲。这里的腿长是参考姿态链长,而不是当前弯腿后的根脚距离,否则蹲下会改变缩放比例。

比例规则适合自由行走,但双手握同一把武器时,接触点由武器定义,不能随腿长缩放。此时先生成目标姿态,再将手部目标转到目标角色坐标,用 IK 修正链。脚的支撑阶段也保存接触点,摆动阶段释放约束。根运动、骨盆高度和 IK 目标各有所有者,避免控制器和动画重复应用同一位移。

扭转分配同样依赖目标结构。源前臂有三根扭转骨、目标只有一根时,可以从源链提取沿长轴的总扭转,再按目标权重分配;权重和为一。直接复制某一根会丢失其他骨的转角。把扭转和摆动混在一起平均又可能改变肘部弯曲,因此导入流程应先定义链轴与摆动分解。

验证与代价

使用参考姿态、单轴旋转、跨步和握持四组输入,分别观察参考误差、旋转轴、根轨迹和末端误差。末端误差用世界长度衡量,不能只比较四元数差。极限姿态下若目标不可达,记录目标距离与链长,选择有限伸长、骨盆补偿或释放接触的规则。

每骨基底映射是固定大小的矩阵或四元数运算,可缓存参考变换;IK 成本随链数与迭代预算增加。骨架版本改变后需重建映射,缓存命中以骨架内容身份为依据。

2026-10-22 执行 CPU参考测试通过,其中两项检查基底共轭的单位不变量与轴映射。它们支持坐标代数,不覆盖人体解剖映射、引擎导入或 IK 接触质量。目标引擎编译、动画运行和性能测量为未执行。

相关主题

参考资料

  • Epic Games,IK Rig Retargeting,Retarget Pose 与链映射:用于参考姿态和接触目标的工程约束;2026-10-22 核对网页,正文矩阵是独立推导,不宣称复现引擎内部算法。
  • Khronos,glTF Skins:关节变换和参考空间;蒙皮矩阵与本页动作映射分别使用。