Navigation
API > API/Runtime > API/Runtime/Engine > API/Runtime/Engine/Animation
Inheritance Hierarchy
- FAnimNode_Base
- IBoneReferenceSkeletonProvider
- FAnimNode_DeadBlending
References
Module | Engine |
Header | /Engine/Source/Runtime/Engine/Classes/Animation/AnimNode_DeadBlending.h |
Include | #include "Animation/AnimNode_DeadBlending.h" |
Syntax
USTRUCT (BlueprintInternalUseOnly)
struct FAnimNode_DeadBlending :
public FAnimNode_Base ,
public IBoneReferenceSkeletonProvider
Remarks
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.
Variables
Type | Name | Description | |
---|---|---|---|
![]() ![]() ![]() |
FPoseLink | Source | Input Pose. |
Constructors
Type | Name | Description | |
---|---|---|---|
![]() |
Functions
Type | Name | Description | |
---|---|---|---|
![]() |
USkeleton * | GetSkeleton
(
bool& bInvalidSkeletonIsError, |
|
![]() ![]() |
void | RequestInertialization
(
const FInertializationRequest& Request |
Request to activate inertialization. |
Overridden from FAnimNode_Base
Type | Name | Description | |
---|---|---|---|
![]() ![]() |
void | CacheBones_AnyThread
(
const FAnimationCacheBonesContext& Context |
Called to cache any bones that this node needs to track (e.g. in a FBoneReference). |
![]() ![]() |
void | Evaluate_AnyThread
(
FPoseContext& Output |
Called to evaluate local-space bones transforms according to the weights set up in Update(). |
![]() ![]() |
void | Initialize_AnyThread
(
const FAnimationInitializeContext& Context |
Called when the node first runs. |
![]() ![]() ![]() |
bool | For nodes that implement some kind of simulation, return true here so ResetDynamics() gets called when things like teleports, time skips etc. | |
![]() ![]() |
void | Update_AnyThread
(
const FAnimationUpdateContext& Context |
Called to update the state of the graph relative to this node. |