UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FAnimNode_DeadBlending Struct Reference

#include <AnimNode_DeadBlending.h>

+ Inheritance diagram for FAnimNode_DeadBlending:

Public Member Functions

FName GetTag ()
 
ENGINE_API FAnimNode_DeadBlending ()
 
virtual ENGINE_API void RequestInertialization (const FInertializationRequest &Request)
 
virtual ENGINE_API void Initialize_AnyThread (const FAnimationInitializeContext &Context) override
 
virtual ENGINE_API void CacheBones_AnyThread (const FAnimationCacheBonesContext &Context) override
 
virtual ENGINE_API void Update_AnyThread (const FAnimationUpdateContext &Context) override
 
virtual ENGINE_API void Evaluate_AnyThread (FPoseContext &Output) override
 
virtual ENGINE_API void GatherDebugData (FNodeDebugData &DebugData) override
 
virtual ENGINE_API bool NeedsDynamicReset () const override
 
ENGINE_API class USkeletonGetSkeleton (bool &bInvalidSkeletonIsError, const IPropertyHandle *PropertyHandle) override
 
- Public Member Functions inherited from FAnimNode_Base
virtual ENGINE_API void EvaluateComponentSpace_AnyThread (FComponentSpacePoseContext &Output)
 
virtual bool CanUpdateInWorkerThread () const
 
virtual bool HasPreUpdate () const
 
virtual void PreUpdate (const UAnimInstance *InAnimInstance)
 
virtual ENGINE_API void ResetDynamics (ETeleportType InTeleportType)
 
virtual void PostCompile (const class USkeleton *InSkeleton)
 
virtual bool NeedsOnInitializeAnimInstance () const
 
virtual ~FAnimNode_Base ()
 
virtual void ResetDynamics ()
 
virtual bool WantsSkippedUpdates () const
 
virtual void OnUpdatesSkipped (TArrayView< const FAnimationUpdateContext * > SkippedUpdateContexts)
 
virtual void OverrideAsset (class UAnimationAsset *NewAsset)
 
ENGINE_API const FExposedValueHandlerGetEvaluateGraphExposedInputs () const
 
void SetExposedValueHandler (const FExposedValueHandler *Handler)
 
int32 GetNodeIndex () const
 
const IAnimClassInterfaceGetAnimClassInterface () const
 

Public Attributes

FPoseLink Source
 

Friends

class UAnimGraphNode_DeadBlending
 

Additional Inherited Members

- Protected Member Functions inherited from FAnimNode_Base
template<typename DataType >
const DataType & GetData (UE::Anim::FNodeDataId InId, const UObject *InObject=nullptr) const
 
template<typename DataType >
DataType * GetInstanceDataPtr (UE::Anim::FNodeDataId InId, UObject *InObject=nullptr)
 
ENGINE_API bool IsLODEnabled (FAnimInstanceProxy *AnimInstanceProxy)
 
virtual int32 GetLODThreshold () const
 
virtual ENGINE_API void OnInitializeAnimInstance (const FAnimInstanceProxy *InProxy, const UAnimInstance *InAnimInstance)
 

Detailed Description

Dead Blending Node

Dead blending is an alternative method of inertialization that extrapolates the animation being transitioned from forward in time and then performs a normal cross-fade blend between this extrapolated animation and the new animation being transitioned to.

For more background see: https://theorangeduck.com/page/dead-blending

This node works by extrapolating forward the animation being transition from using the animation's velocities at the point of transition, with an exponential decay which reduces those velocities over time to avoid the pose becoming invalid.

The rate of this decay is set automatically based on how much the velocities of the animation being transitioned from are moving toward the pose of the animation being transitioned to. If they are moving in the wrong direction or too quickly they will have a larger decay rate, while if they are in the correct direction and moving slowly relative to the difference they will have a smaller decay rate.

These decay rates can be controlled by the ExtrapolationHalfLife, ExtrapolationHalfLifeMin and ExtrapolationHalfLifeMax parameters, which specify the approximate average, min, and max decay periods. More specifically they specify the "half-life" - or how it takes for the velocities to be decayed by half.

Constructor & Destructor Documentation

◆ FAnimNode_DeadBlending()

FAnimNode_DeadBlending::FAnimNode_DeadBlending ( )

Member Function Documentation

◆ CacheBones_AnyThread()

void FAnimNode_DeadBlending::CacheBones_AnyThread ( const FAnimationCacheBonesContext Context)
overridevirtual

Called to cache any bones that this node needs to track (e.g. in a FBoneReference). This is usually called at startup when LOD switches occur. This can be called on any thread.

Parameters
ContextContext structure providing access to relevant data

Reimplemented from FAnimNode_Base.

◆ Evaluate_AnyThread()

void FAnimNode_DeadBlending::Evaluate_AnyThread ( FPoseContext Output)
overridevirtual

Called to evaluate local-space bones transforms according to the weights set up in Update(). You should implement either Evaluate or EvaluateComponentSpace, but not both of these. This can be called on any thread.

Parameters
OutputOutput structure to write pose or curve data to. Also provides access to relevant data as a context.

Reimplemented from FAnimNode_Base.

◆ GatherDebugData()

void FAnimNode_DeadBlending::GatherDebugData ( FNodeDebugData DebugData)
overridevirtual

Called to gather on-screen debug data. This is called on the game thread.

Parameters
DebugDataDebug data structure used to output any relevant data

Reimplemented from FAnimNode_Base.

◆ GetSkeleton()

class USkeleton * FAnimNode_DeadBlending::GetSkeleton ( bool bInvalidSkeletonIsError,
const IPropertyHandle PropertyHandle 
)
override

◆ GetTag()

FName FAnimNode_DeadBlending::GetTag ( )
inline

◆ Initialize_AnyThread()

void FAnimNode_DeadBlending::Initialize_AnyThread ( const FAnimationInitializeContext Context)
overridevirtual

Called when the node first runs. If the node is inside a state machine or cached pose branch then this can be called multiple times. This can be called on any thread.

Parameters
ContextContext structure providing access to relevant data

Reimplemented from FAnimNode_Base.

◆ NeedsDynamicReset()

bool FAnimNode_DeadBlending::NeedsDynamicReset ( ) const
overridevirtual

For nodes that implement some kind of simulation, return true here so ResetDynamics() gets called when things like teleports, time skips etc. occur that might require special handling. Note that this is called at load on the UAnimInstance CDO to avoid needing to call this at runtime. This is called on the game thread.

Reimplemented from FAnimNode_Base.

◆ RequestInertialization()

void FAnimNode_DeadBlending::RequestInertialization ( const FInertializationRequest Request)
virtual

Request to activate inertialization. If multiple requests are made on the same inertialization node, the request with the minimum blend time will be used.

◆ Update_AnyThread()

void FAnimNode_DeadBlending::Update_AnyThread ( const FAnimationUpdateContext Context)
overridevirtual

Called to update the state of the graph relative to this node. Generally this should configure any weights (etc.) that could affect the poses that will need to be evaluated. This function is what usually executes EvaluateGraphExposedInputs. This can be called on any thread.

Parameters
ContextContext structure providing access to relevant data

Reimplemented from FAnimNode_Base.

Friends And Related Symbol Documentation

◆ UAnimGraphNode_DeadBlending

friend class UAnimGraphNode_DeadBlending
friend

Member Data Documentation

◆ Source

FPoseLink FAnimNode_DeadBlending::Source

The documentation for this struct was generated from the following files: