BlueRoseNote/03-UnrealEngine/Animation/UE5动画重定向笔记.md

1.2 KiB
Raw Blame History

title, date, excerpt, tags, rating
title date excerpt tags rating
UE5动画重定向笔记 2023-08-18 18:08:12

ConvertAnimation()

主要逻辑位于UAnimationEditorUtilityLibrary::ConvertAnimation()或者FIKRetargetBatchOperation::ConvertAnimation()。核心重定向逻辑为UIKRetargetProcessor::RunRetargeter()

RunRootRetarget()

FRootRetargeter::EncodePose(): 取得输入的根骨骼Transform数据并给FRootSource Source赋值。

FRootRetargeter::DecodePose():

// InitialTransform 为重定向Pose计算出的数值通过比值计算出Target的Current数值
const FTransform InitialTransform = SourceSkeleton.RetargetGlobalPose[Source.BoneIndex];
float InitialHeight = InitialTransform.GetTranslation().Z;
Source.InitialHeightInverse = 1.0f / InitialHeight;
Source.CurrentPositionNormalized = Source.CurrentPosition * Source.InitialHeightInverse;

// generate basic retarget root position by scaling the normalized position by root height  
const FVector RetargetedPosition = Source.CurrentPositionNormalized * Target.InitialHeight;

RunFKRetarget()

FChainEncoderFK::EncodePose(): 从骨骼链拷贝全局输入到CurrentGlobalTransforms

FChainDecoderFK::DecodePose():

RunIKRetarget()

RunPoleVectorMatching()

UIKRetargetProcessor