Skip to content

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 01. 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 01. 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°; 0180° 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°; 0180° 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°; 1720° 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°; 1179° 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.13.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°; 1180° 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°; 0180° 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; 01 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.

EOverAnimTransformBufferSpace

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.

Response Rule parameters and input conditions

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; 01 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 01. 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 01.
  • 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.

Limitations · performance · validation

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 1720°.
  • 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.

Performance characteristics

  • 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.13.0, segment angle 1180°.
  • With direction-change guard, start angle must be 0180°, full-reversal retention 01, and both times at least 0.