void FAnimNode_ConvertComponentToLocalSpace::Evaluate(FPoseContext & Output) { // Evaluate the child and convert FComponentSpacePoseContext InputCSPose(Output.AnimInstance); ComponentPose.EvaluateComponentSpace(InputCSPose); checkSlow( InputCSPose.Pose.IsValid() ); InputCSPose.Pose.ConvertToLocalPoses(Output.Pose); }
void FAnimNode_BlendFaceFXAnimation::Evaluate(FPoseContext& Output) { //convert on the fly to component space and back - This should not happen as the node uses CS. //Yet it happened on invalid VIMs. When this happens the blend node needs to be relinked and the VIM needs to be recompiled and saved FComponentSpacePoseContext InputCSPose(Output.AnimInstance); EvaluateComponentSpace(InputCSPose); InputCSPose.Pose.ConvertToLocalPoses(Output.Pose); #if !UE_BUILD_SHIPPING if(!bIsDebugLocalSpaceBlendShown) { //show warning only once per node to prevent excessive log spam UE_LOG(LogFaceFX, Warning, TEXT("FAnimNode_BlendFacialAnimation::Evaluate. The blend node is using local space input. Please check, relink the blend node and resave VIM. %s. Also contact a FaceFX programmer."), *GetNameSafe(Output.AnimInstance)); bIsDebugLocalSpaceBlendShown = true; } #endif }