Description

I understand that this is not something you're intended to be able to do (Montages aren't used this way), but we should bar the user from inserting a montage into this variable slot.

Crash occurs when you attempt to enter a Montage into Sequence field of a Play Node details panel inside of the AnimGraph.

Error message:

LowLevelFatalError [Link Removed] [Line: 138] Pure virtual not implemented (UAnimSequenceBase::GetAnimationPose)

Source Context:

123       // this is used in editor only when used for transition getter
  124       // this doesn't mean max time. In Sequence, this is SequenceLength,
  125       // but for BlendSpace CurrentTime is normalized [0,1], so this is 1
  126       virtual float GetMaxCurrentTime() override { return SequenceLength; }
  127       //~ End UAnimationAsset Interface
  128       
  129       /**
  130       * Get Bone Transform of the Time given, relative to Parent for all RequiredBones
  131       * This returns different transform based on additive or not. Or what kind of additive.
  132       *
  133       * @paramOutPosePose object to fill
  134       * @paramOutCurveCurves to fill
  135       * @paramExtractionContextExtraction Context (position, looping, root motion, etc.)
  136       */
  137 ***** ENGINE_API virtual void GetAnimationPose(struct FCompactPose& OutPose, FBlendedCurve& OutCurve, const FAnimExtractContext& ExtractionContext) const PURE_VIRTUAL(UAnimSequenceBase::GetAnimationPose, );
  138       
  139       DEPRECATED(4.11, "This function is deprecated, please use HandleAssetPlayerTickedInternal")
  140       virtual void OnAssetPlayerTickedInternal(FAnimAssetTickContext &Context, const float PreviousTime, const float MoveDelta, const FAnimTickRecord &Instance, class UAnimInstance* InAnimInstance) const;
  141       
  142       virtual void HandleAssetPlayerTickedInternal(FAnimAssetTickContext &Context, const float PreviousTime, const float MoveDelta, const FAnimTickRecord &Instance, struct FAnimNotifyQueue& NotifyQueue) const;
  143       
  144       virtual bool HasRootMotion() const { return false; }
  145       
  146       virtual void Serialize(FArchive& Ar) override;
  147       
  148       virtual void AdvanceMarkerPhaseAsLeader(bool bLooping, float MoveDelta, const TArray<FName>& ValidMarkerNames, float& CurrentTime, FMarkerPair& PrevMarker, FMarkerPair& NextMarker, TArray<FPassedMarker>& MarkersPassed) const { check(false); /*Should never call this (either missing override or calling on unsupported asset */ }
  149       virtual void AdvanceMarkerPhaseAsFollower(const FMarkerTickContext& Context, float DeltaRemaining, bool bLooping, float& CurrentTime, FMarkerPair& PreviousMarker, FMarkerPair& NextMarker) const { check(false); /*Should never call this (either missing override or calling on unsupported asset */ }
  150       virtual void GetMarkerIndicesForTime(float CurrentTime, bool bLooping, const TArray<FName>& ValidMarkerNames, FMarkerPair& OutPrevMarker, FMarkerPair& OutNextMarker) const { check(false); /*Should never call this (either missing override or calling on unsupported asset */ }
  151       virtual FMarkerSyncAnimPosition GetMarkerSyncPositionfromMarkerIndicies(int32 PrevMarker, int32 NextMarker, float CurrentTime) const { check(false); return FMarkerSyncAnimPosition(); /*Should never call this (either missing override or calling on unsupported asset */ }
  152       virtual void GetMarkerIndicesForPosition(const FMarkerSyncAnimPosition& SyncPosition, bool bLooping, FMarkerPair& OutPrevMarker, FMarkerPair& OutNextMarker, float& CurrentTime) const { check(false); /*Should never call this (either missing override or calling on unsupported asset */ }

Most recent user affected CL: 2834065 (4.12)

Logs:
[Link Removed]

Steps to Reproduce

1. Create a Third Person Template project
2. Create an AnimMontage based off of the Mannequin Skeleton
3. Drop an AnimSequence into the Montage
4. Save
5. Open ThirdPerson_AnimBP
6. Right Click in the Anim Graph and add Play node for the idle animation
7. Under the details panel for the Play Node, select the dropdown for "Sequence"
8. Select the AnimMontage you created earlier
9. Plug the Play node into the Final Animation Pose
10. Compile

Result: Crash
Expected: Editor doesn't allow me to enter a Montage as the Sequence variable in a Play node

Callstack
UE4Editor_Engine!UAnimSequenceBase::GetAnimationPose() animsequencebase.h:138 
UE4Editor_Engine!FAnimNode_SequencePlayer::Evaluate() animnode_sequenceplayer.cpp:52 
UE4Editor_Engine!FPoseLink::Evaluate() animnodebase.cpp:235 
UE4Editor_Engine!FAnimInstanceProxy::EvaluateAnimation() animinstanceproxy.cpp:645 
UE4Editor_Engine!UAnimInstance::ParallelEvaluateAnimation() animinstance.cpp:518 
UE4Editor_Engine!USkeletalMeshComponent::EvaluateAnimation() skeletalmeshcomponent.cpp:1029 
UE4Editor_Engine!USkeletalMeshComponent::PerformAnimationEvaluation() skeletalmeshcomponent.cpp:1082 
UE4Editor_Engine!USkeletalMeshComponent::RefreshBoneTransforms() skeletalmeshcomponent.cpp:1239 
UE4Editor_Engine!USkeletalMeshComponent::InitAnim() skeletalmeshcomponent.cpp:379 
UE4Editor_UnrealEd!FBlueprintCompileReinstancer::ReplaceInstancesOfClass_Inner() kismetreinstanceutilities.cpp:1411 
UE4Editor_UnrealEd!FBlueprintCompileReinstancer::ReplaceInstancesOfClass() kismetreinstanceutilities.cpp:1190 
UE4Editor_UnrealEd!FBlueprintCompileReinstancer::ReinstanceInner() kismetreinstanceutilities.cpp:553 
UE4Editor_UnrealEd!FBlueprintCompileReinstancer::ReinstanceObjects() kismetreinstanceutilities.cpp:666 
UE4Editor_UnrealEd!FKismetEditorUtilities::CompileBlueprint() kismet2.cpp:796 
UE4Editor_Kismet!FBlueprintEditor::Compile() blueprinteditor.cpp:3209 
UE4Editor_Persona!FPersona::Compile() persona.cpp:1718 
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,TTypeWrapper<void> __cdecl() delegateinstancesimpl_variadics.inl:321 
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,void __cdecl() delegateinstancesimpl_variadics.inl:428 
UE4Editor_Slate!FUICommandList::ExecuteAction() uicommandlist.cpp:87 
UE4Editor_Slate!SToolBarButtonBlock::OnClicked() stoolbarbuttonblock.cpp:300 
UE4Editor_Slate!TMemberFunctionCaller<SToolBarButtonBlock,FReply() delegateinstanceinterface_variadics.h:161 
UE4Editor_Slate!TTupleImpl<TIntegerSequence<unsigned int> >::ApplyAfter_ExplicitReturnType<FReply,TMemberFunctionCaller<SToolBarButtonBlock,FReply() tuple.h:128 
UE4Editor_Slate!TBaseSPMethodDelegateInstance<0,SToolBarButtonBlock,0,FReply __cdecl() delegateinstancesimpl_variadics.inl:321 
UE4Editor_Slate!TBaseDelegate<FReply>::Execute() delegatesignatureimpl_variadics.inl:521 
UE4Editor_Slate!SButton::OnMouseButtonUp() sbutton.cpp:273 
UE4Editor_Slate!<lambda_ec8ed861298bf5f48555d4b39e4a0d00>::operator() slateapplication.cpp:4509 
UE4Editor_Slate!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,<lambda_ec8ed861298bf5f48555d4b39e4a0d00> >() slateapplication.cpp:214 
UE4Editor_Slate!FSlateApplication::RoutePointerUpEvent() slateapplication.cpp:4512 
UE4Editor_Slate!FSlateApplication::ProcessMouseButtonUpEvent() slateapplication.cpp:4916 
UE4Editor_Slate!FSlateApplication::OnMouseUp() slateapplication.cpp:4892 
UE4Editor_Core!FWindowsApplication::ProcessDeferredMessage() windowsapplication.cpp:1430 
UE4Editor_Core!FWindowsApplication::DeferMessage() windowsapplication.cpp:1735 
UE4Editor_Core!FWindowsApplication::ProcessMessage() windowsapplication.cpp:719 
UE4Editor_Core!FWindowsApplication::AppWndProc() windowsapplication.cpp:641 
user32!<Unknown> 
user32!<Unknown> 
UE4Editor_Core!FWindowsPlatformMisc::PumpMessages() windowsplatformmisc.cpp:884 
UE4Editor!FEngineLoop::Tick() launchengineloop.cpp:2617 
UE4Editor!GuardedMain() launch.cpp:142 
UE4Editor!GuardedMainWrapper() launchwindows.cpp:126 
UE4Editor!WinMain() launchwindows.cpp:200 

Have Comments or More Details?

Head over to the existing Questions & Answers thread and let us know what's up.

0
Login to Vote

Fixed
ComponentOLD - Anim
Affects Versions4.9.24.10.24.114.12
Target Fix4.12
Fix Commit2960847
Main Commit3023490
Release Commit2960920
CreatedJan 20, 2016
ResolvedApr 29, 2016
UpdatedMay 18, 2020