Hello!
I was hunting down some bugs with regard to extracting attributes onto a Skeleton that’s different from the one that the Anim Data Model was created for. It looks like this was accounted for in UAnimSequence in CL 46151991, but there’s a hidden EvaluateAttributes inside AnimSequencerDataModel that may have the same bug.
for (const FAnimatedBoneAttribute& Attribute : AnimatedBoneAttributes)
{
const FCompactPoseBoneIndex PoseBoneIndex = RequiredBones.GetCompactPoseIndexFromSkeletonPoseIndex(FSkeletonPoseBoneIndex(Attribute.Identifier.GetBoneIndex()));
// Only add attribute if the bone its tied to exists in the currently evaluated set of bones
if(PoseBoneIndex.IsValid())
{
UE::Anim::Attributes::GetAttributeValue(InOutPoseData.GetAttributes(), PoseBoneIndex, Attribute, EvaluationContext.SampleFrameRate.AsSeconds(EvaluationContext.SampleTime));
}
}
This likely needs the same or similar remapping code that’s in UAnimSequence if the Skeleton is different. I haven’t tested this bug myself since we use a different AnimDataModel for loading perf reasons, but I suspect this bug exists. (There’s also an interesting side note which is why these attributes are extracted here and in UAnimSequence, but that’s another topic).
Anyway, I hope this is helpful!
-Nathaniel
[Attachment Removed]