--- title: UE5动画重定向笔记 date: 2023-08-18 18:08:12 excerpt: tags: rating: ⭐ --- # ConvertAnimation() 主要逻辑位于`UAnimationEditorUtilityLibrary::ConvertAnimation()`或者`FIKRetargetBatchOperation::ConvertAnimation()`。核心重定向逻辑为`UIKRetargetProcessor::RunRetargeter()`。 ## RunRootRetarget() FRootRetargeter::EncodePose(): 取得输入的根骨骼Transform数据并给`FRootSource Source`赋值。 FRootRetargeter::DecodePose(): ```c++ // 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 # FBX https://help.autodesk.com/view/FBX/2020/ENU/?guid=FBX_Developer_Help_welcome_to_the_fbx_sdk_html