diff --git a/03-UnrealEngine/Animation/UE5商城动画重定向插件笔记.md b/03-UnrealEngine/Animation/UE5商城动画重定向插件笔记.md new file mode 100644 index 0000000..8ea35ad --- /dev/null +++ b/03-UnrealEngine/Animation/UE5商城动画重定向插件笔记.md @@ -0,0 +1,37 @@ +--- +title: UE5商城动画重定向插件笔记 +date: 2023-09-05 12:02:29 +excerpt: +tags: + - AnimationRetargeting +rating: ⭐ +--- +# MixamoAnimationRetargeting +主要逻辑位于:FMixamoSkeletonRetargeter +- UE4MannequinToMixamo_BoneNamesMapping +- UE4MannequinToMixamo_ChainNamesMapping +- UE5MannequinToMixamo_BoneNamesMapping +- UE5MannequinToMixamo_ChainNamesMapping + +重定向逻辑位于:FMixamoSkeletonRetargeter::Retarget() + +## 判断骨骼格式 +```c++ +bool FSkeletonMatcher::IsMatching(const USkeleton* Skeleton) const +{ + // No Skeleton, No matching... + if (Skeleton == nullptr) + { return false; + } + const int32 NumExpectedBones = BoneNames.Num(); + int32 nMatchingBones = 0; + const FReferenceSkeleton & SkeletonRefSkeleton = Skeleton->GetReferenceSkeleton(); + for (int32 i = 0; i < NumExpectedBones; ++i) + { const int32 BoneIndex = SkeletonRefSkeleton.FindBoneIndex(BoneNames[i]); + if (BoneIndex != INDEX_NONE) + { ++nMatchingBones; + } } const float MatchedPercentage = float(nMatchingBones) / float(NumExpectedBones); + + return MatchedPercentage >= MinimumMatchingPerc; +} +```