Description

If a user setups up a custom transition graph that caches one of the input poses by setting the Evaluator Mode property to Freeze then the node fails to deal with the situation where the LOD or mesh then changes during the transition. If this does change, the bones are then invalid and the skeleton appears to explode.
The logic in FAnimNode_TransitionPoseEvaluator should account for the fact that the compact pose can change between frames when caching in the same way that we do in the Copy Pose node.

Steps to Reproduce
  1. Create a new LOD on the mannequin that contains less bones (eg. remove the hand bones)
  2. Create an anim bp containing two states and a transition between triggered by a bool
  3. Set the Blend Logic to Custom and edit the blend graph
  4. Setup the custom blend as shown in the screenshot (inc. evaluator mode set to freeze on one input)
  5. In the anim bp editor, set the LOD to the new LOD you added
  6. Now, still in the bp editor, trigger the transition
  7. During the transition switch the LOD back to LOD 0
    1. The following ensure in AnimNodeBase.cpp will be hit and the skeleton will explode
      				ensureMsgf(!Bone.ContainsNaN(), TEXT("Bone (%s) contains NaN from AnimInstance:[%s] Node:[%s] Value:[%s]"),
      					*RefSkel.GetBoneName(MeshBoneIndex.GetInt()).ToString(),
      					*Output.AnimInstanceProxy->GetAnimInstanceName(), LinkedNode ? *LinkedNode->StaticStruct()->GetName() : TEXT("NULL"), 
      					*Bone.ToString());

Have Comments or More Details?

There's no existing public thread on this issue, so head over to AnswerHub just mention UE-126578 in the post.

0
Login to Vote

Fixed
ComponentUE - Anim - Runtime
Affects Versions4.26.2
Target Fix5.0
Fix Commit17874582
CreatedSep 14, 2021
ResolvedOct 20, 2021
UpdatedNov 26, 2021