Follow Through
UOverAnimFollowThroughModule is a Dynamics Phase module that applies pose-history delay to a parent-to-child bone chain from Anchor to Falloff. Settings are declared in OverAnimation/Asset/OverAnimModule.h; this page covers OverAnim 0.1.0 Beta / UE 5.8.
Purpose
Uses the difference between current chain pose and previously stored poses to create delayed transforms from Anchor toward Falloff. It combines an explicit bone chain, pose-history buffer, and bend, pose-cut, and direction-change safety layers.
Details layout
Simple shows SimpleLag, SimpleLooseness, SimpleSnap, required Anchor Bone and Falloff Bone, and asset-wide Master Effect Intensity. Anchor and Falloff are shared by both layouts, but Simple knobs do not change Detailed values. Remaining tables follow actual Details category order.
Shared properties and asset intensity
| UI name |
C++ property |
Default / unit / range |
Effect |
Visibility |
Interaction |
| Input Composition |
CompositionMode |
Additive Offset; Additive Offset / Re-Skinning |
Additive Offset adds this module's displacement to current composed result; Re-Skinning evaluates from current control-point transforms. |
Details layout |
Shared by all Modules. Module Stack manages order within the same Phase. |
| Master Effect Intensity |
UOverAnimMeshDeformer::MasterEffectIntensity |
1.0; minimum 0, UI maximum 3 |
Scales all authored effect strength in this asset. |
Both Simple and Details, OverAnim|Intensity row |
Follow Through response weight also multiplies this value, then is limited to 0–1. Asset-global property. |
Simple
| UI name |
C++ property |
Default / unit / range |
Effect |
Visibility |
Interaction |
| Lag |
SimpleLag |
1.0; 0–5 |
Ratio applied to authored Buffer Size. 2.0 doubles history frame count. |
Shown in Simple, always applied at runtime |
Result limited to 2–64 frames; pose spacing is unchanged. |
| Looseness |
SimpleLooseness |
1.0; 0–5 |
Applies ratios to authored chain budget/single-segment swing and additive spans to bend-guard angles. |
Shown in Simple, always applied at runtime |
Actual resolved values depend on Safety and Single Segment mode. |
| Snap |
SimpleSnap |
1.0; 0–5 |
Applies inverse ratios to attenuation/recovery times and additive spans to guard angle/history retention. |
Shown in Simple, always applied at runtime |
No effect when Use Direction Change Guard is off. 0 points toward disabling the guard. |
Detailed defaults resolved at runtime
| Simple knob |
Target |
Processing |
SimpleLag |
NumFrames (Buffer Size) |
Multiplies authored frame count by knob ratio, rounds, then limits to 2–64. |
SimpleLooseness |
BendGuardStartAngleDegrees, BendGuardLimitAngleDegrees, MaximumCumulativeChainBendDegrees, MaximumSingleSegmentSwingAngleDegrees |
Multiplies authored budget/swing by ratio, adds up to +30°/+5° spans to guard start/limit respectively, then limits to safe ranges. |
SimpleSnap |
DirectionChangeGuardStartAngleDegrees, FullReversalHistoryRetention, DirectionChangeAttenuationTime, DirectionChangeRecoveryTime |
Subtracts up to 60° from authored start angle and up to 0.2 from retention; applies inverse ratio to both times. |
OverAnim | Activation
| UI name |
C++ property |
Default / unit / range |
Effect |
Visibility |
Interaction |
| Driver Mode |
DriverMode |
Automatic + Signal Boost |
Selects history/Response Rule combination. Automatic Motion retains authored history without response. Signal Gated Motion multiplies history weight by response weight. Automatic + Signal Boost produces min(history × (1 + response), 1). |
Always |
Automatic Motion rejects Signals. Other modes receive Pulse and Sustained. |
OverAnim | Anchor
| UI name |
C++ property |
Default / unit / range |
Effect |
Visibility |
Interaction |
| Anchor Bone |
AnchorBone |
None |
Start bone of Follow Through chain. |
Simple · Details |
Must differ from Falloff Bone and connect through one parent-to-child chain in Target Skeleton. |
| Falloff Bone |
FalloffBone |
None |
End bone of Follow Through chain. |
Simple · Details |
Acts as chain tip; direction-change guard uses its recent movement direction. |
OverAnim | Buffer
| UI name |
C++ property |
Default / unit / range |
Effect |
Visibility |
Interaction |
| Buffer Size |
NumFrames |
2 frames; 2–64 |
Number of stored transform-history frames. |
Always |
SimpleLag always multiplies final frame count. Directly affects transform-buffer memory and history depth. |
| Transform Buffer Space |
TransformBufferSpace |
World Space |
Coordinates for storing/rebasing delayed poses. Component Space replays parent-relative animation; World Space rebases past world motion to current component. |
Always |
Follow Through constructor changes base default to World Space. |
| History Source |
HistorySource |
Source Animation Pose |
Selects source animation pose or simulated guide as history input. |
Always |
Source Animation Pose composes delayed local delta from source pose onto guide pose. |
OverAnim | History
| UI name |
C++ property |
Default / unit / range |
Effect |
Visibility |
Interaction |
| Buffer Weight To History Curve |
BufferWeightToHistoryCurve |
Default keys (0, 0), (1, 1) |
Converts chain alpha to history weight. Runtime limits curve result to 0–1. |
Always |
Determines delayed-pose fraction per control point. Response gates or boosts this authored history weight. |
OverAnim | Safety
| UI name |
C++ property |
Default / unit / range |
Effect |
Visibility |
Interaction |
| Bend Guard Start Angle |
BendGuardStartAngleDegrees |
150°; 0–180° |
Bends below this are not attenuated. Guard starts at nearly reversed joints. |
Always |
Cannot exceed Bend Guard Limit Angle. Looseness changes additively. |
| Bend Guard Limit Angle |
BendGuardLimitAngleDegrees |
175°; 0–180° |
Final safety limit at nearly reversed joints. 180° effectively disables guard. |
Always |
Must be at least Start. Looseness changes additively. |
| Chain Safety Mode |
SafetyMode |
Segment Guard + Chain Budget |
Segment Guard Only uses per-joint guards; Segment Guard + Chain Budget also limits accumulated primary-chain bend. |
Always |
Latter shows Maximum Cumulative Chain Bend. SimpleLooseness always multiplies authored budget. |
| Maximum Cumulative Chain Bend |
MaximumCumulativeChainBendDegrees |
240°; 1–720° |
Upper limit on sum of positional bend or local rotation deviation across primary chain. |
Chain Safety Mode = Segment Guard + Chain Budget |
Limits accumulated exaggeration separately from single-joint limit. |
| Single Segment Mode |
SingleSegmentMode |
Rigid Swing |
Solver when Anchor/Falloff form one segment. Rigid Swing rotates around Anchor while preserving leaf-local transform; Full Transform Delay directly replays delayed leaf transform. |
Always |
Full Transform Delay warns that large rotation can thin linear-skinned geometry. |
| Maximum Single Segment Swing |
MaximumSingleSegmentSwingAngleDegrees |
45°; 1–179° |
Maximum authored rotation of a one-segment branch from current direction. |
Single Segment Mode = Rigid Swing |
SimpleLooseness always multiplies final angle. |
OverAnim | Safety | Pose Cut
| UI name |
C++ property |
Default / unit / range |
Effect |
Visibility |
Interaction |
| Reset History on Pose Cut |
bResetHistoryOnPoseCut |
true |
Resets only this module's history when source chain changes excessively in one sample. |
Always |
Blocks stale history from abrupt montage/animation transitions. |
| Pose Cut Relative Tip Distance |
PoseCutRelativeTipDistanceRatio |
0.75; 0.1–3.0 |
Allowed one-sample tip movement relative to Anchor as ratio of current chain length. |
Pose-cut reset enabled, Advanced |
Exceeding this or segment-angle criterion resets history. |
| Pose Cut Segment Angle |
PoseCutSegmentAngleDegrees |
90°; 1–180° |
Allowed one-sample change in chain-segment direction or local rotation. |
Pose-cut reset enabled, Advanced |
Used with relative tip distance for pose-cut detection. |
OverAnim | Safety | Direction Change
| UI name |
C++ property |
Default / unit / range |
Effect |
Visibility |
Interaction |
| Use Direction Change Guard |
bUseDirectionChangeGuard |
true |
Temporarily attenuates stale history when Falloff tip changes direction sharply. |
Always |
When off, current/previous/target history scales return to 1 and four properties below are unused. |
| Guard Start Angle |
DirectionChangeGuardStartAngleDegrees |
120°; 0–180° |
Direction changes below this keep full history response. |
Guard enabled, Advanced |
Higher Snap lowers angle, starting guard on smaller turns. |
| Full Reversal History Retention |
FullReversalHistoryRetention |
0.2; 0–1 |
Fraction of history retained at exactly 180° reversal. |
Guard enabled, Advanced |
Higher Snap lowers value. |
| History Attenuation Time |
DirectionChangeAttenuationTime |
0.025 s; minimum 0 |
Time to lower to stale-history level. |
Guard enabled, Advanced |
Short nonzero time softens guard's own one-frame pose jump. Higher Snap shortens it. |
| History Recovery Time |
DirectionChangeRecoveryTime |
0.12 s; minimum 0 |
Time to return to full Follow Through after reversal. |
Guard enabled, Advanced |
Higher Snap shortens it. |
Execution · Response compatibility
| Item |
Behavior |
| Module Phase |
Dynamics |
| Signal support |
Only when Driver Mode is not Automatic Motion. |
| Response Mode |
Supports Pulse, Sustained. |
| Automatic Six-Stage Motion |
Uses Sustained. Default coverage: Anticipation off, Action 0.55, Overshoot 1.0, Recoil 0.45, Settle 0.15; timing role Dynamics. |
| Response parameter type |
FOverAnimFollowThroughResponseParameters |
Automatic Motion uses authored history weight without response. Signal Gated Motion exposes history only with response weight. Automatic + Signal Boost retains history and strengthens it by response weight.
Public Enums
EOverAnimProceduralMotionDriverMode
BlueprintType enum used by DriverMode, selecting how pose-history output combines with Response Rule weight.
| C++ value |
Editor UI |
Meaning |
MotionOnly |
Automatic Motion |
Uses authored pose history only. SupportsSignals() is false, rejecting Responses. |
SignalGatedMotion |
Signal Gated Motion |
Multiplies authored history weight by active response weight. Without response, output weight is 0. |
MotionWithSignalBoost |
Automatic + Signal Boost |
Retains authored history and boosts it by response weight. Final weight does not exceed 1. |
BlueprintType enum used by TransformBufferSpace, selecting storage/rebasing coordinates.
| C++ value |
Editor UI |
Meaning |
Local |
Component Space |
Replays parent-relative animation pose with delay. |
World |
World Space |
Rebases past world motion to current component, preserving visible trailing inertia. |
EOverAnimTransformHistorySource
BlueprintType enum used by HistorySource.
| C++ value |
Editor UI |
Meaning |
SourceAnimationPose |
Source Animation Pose |
Uses source animation pose as history input. |
SimulatedGuide |
Simulated Guide |
Uses preceding procedural guide transforms as history input. |
EOverAnimFollowThroughSafetyMode
BlueprintType enum used by SafetyMode.
| C++ value |
Editor UI |
Meaning |
SegmentGuardOnly |
Segment Guard Only |
Per-joint bend guards only; no accumulated chain budget. |
SegmentGuardAndChainBudget |
Segment Guard + Chain Budget |
Per-joint guards plus accumulated primary-chain budget; shows Maximum Cumulative Chain Bend. |
EOverAnimFollowThroughSingleSegmentMode
BlueprintType enum used by SingleSegmentMode, selecting solver when Anchor/Falloff form one segment.
| C++ value |
Editor UI |
Meaning |
RigidSwing |
Rigid Swing |
Rotates short branch around Anchor while preserving current leaf-local transform. Applies Maximum Single Segment Swing. |
FullTransformDelay |
Full Transform Delay |
Directly replays delayed leaf transform. Does not use Maximum Single Segment Swing. |
Module Response at 100% uses FOverAnimFollowThroughResponseParameters.
| UI name |
C++ property |
Default / unit / range |
Effect |
Application condition |
Interaction |
| History Strength at Full Response |
HistoryStrengthAtMax |
1.0; 0–1 |
Fraction of authored pose history exposed at maximum response. |
Driver Mode is not Automatic Motion |
Weight is resolved magnitude × Master Effect Intensity × this value, clamped to 0–1. It does not replace chain, history curve, or safety guard. |
A Response request must satisfy all of the following.
Driver Mode is not Automatic Motion, and Rule contains FOverAnimFollowThroughResponseParameters.
History Strength at Full Response and ResolvedMagnitude are finite; parameter is within 0–1.
- Attack, Hold, and Release times are finite and at least
0. Response weight state manages Pulse or Sustained weight.
- Direction, contact point, and contact normal are not acceptance conditions. The module does not directly use request Mesh Component.
Automatic Six-Stage Motion response creation requires an enabled named Module, Signal-capable Driver Mode, Buffer Size >= 2, and distinct Anchor/Falloff bones.
Safety limits
- Anchor and Falloff must differ and connect in one parent-to-child chain in Target Skeleton. Zero-length reference chain is an error.
- Must maintain
Bend Guard Start Angle <= Bend Guard Limit Angle <= 180°. With chain budget, Maximum Cumulative Chain Bend must be 1–720°.
- Runtime resets history when source chain motion is discontinuous or pose-cut conditions are met.
Full Transform Delay with a one-segment chain produces a validation warning because large wrist rotation can thin linear-skinned geometry.
- Runtime state stores transform buffer and resolved
ChainBoneNames. Larger Buffer Size increases per-control-point history memory.
- Pose-history memory grows with final frame count from authored
Buffer Size × SimpleLag and resolved control-point count. Final count is limited to 2–64.
- Direction-change guard calculates recent Falloff-tip direction and history duration. Related scale calculations are skipped when disabled.
Validation and inactive conditions
Buffer Size < 2 is a history-module validation error.
- Missing Anchor/Falloff, identical bones, or a non-parent-to-child connection is an error.
- With pose-cut guard, relative tip distance must be
0.1–3.0, segment angle 1–180°.
- With direction-change guard, start angle must be
0–180°, full-reversal retention 0–1, and both times at least 0.