UOverAnimTransformSpringModule is a Dynamics Phase module that applies delay, overshoot, and settle to Position, Rotation, and Scale of selected guide bones. Settings are declared in OverAnimation/Asset/OverAnimModule.h; this page covers OverAnim 0.1.0 Beta / UE 5.8.
Purpose
Prevents animation target transforms from being followed instantly, creating residual inertia, rebound, and settling on selected bones. Position, Rotation, and Scale channels are enabled independently and each has its own simulation space, follow speed, and bounciness.
Details layout
Simple shows SimpleLag, SimpleBounce, SimpleRange, and asset-wide Master Effect Intensity. The remaining tables follow actual category order in Details. Layout changes only displayed properties; runtime always applies Simple knobs to Detailed authored values.
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 the current composed result. Re-Skinning evaluates from the current control-point transform. |
Details layout |
Shared by all Modules. Execution order is determined by Module Stack order within the same Phase, not this value. |
| Master Effect Intensity |
UOverAnimMeshDeformer::MasterEffectIntensity |
1.0; minimum 0, UI maximum 3 |
Scales authored strength calculated by every Module in the asset. Per-module safety limits apply separately. |
Both Simple and Details, selected Module's OverAnim|Intensity row |
Also multiplied into Spring impulses and Automatic phase target offsets. This is asset-global, not module-specific. |
Simple
| UI name |
C++ property |
Default / unit / range |
Effect |
Visibility |
Interaction |
| Lag |
SimpleLag |
1.0; 0–5 |
Applies an inverse ratio to authored Position/Rotation/Scale Follow Speed. 2.0 halves speed for more delay. 0 resolves to safe ratio 0.01, producing 100× authored speed. |
Shown in Simple, always applied at runtime |
Does not change Detailed values. |
| Bounce |
SimpleBounce |
1.0; 0–5 |
Adds a fixed span to authored Position/Rotation/Scale Bounciness. 1.0 makes no change, 0 gives -1, and 5 gives +1; result is limited to 0–1. |
Shown in Simple, always applied at runtime |
Used only for enabled channels. |
| Range |
SimpleRange |
1.0; 0–5 |
Applies the same ratio to authored output limits. 2.0 doubles allowed travel; 0 closes all limits. |
Shown in Simple, always applied at runtime |
Has no runtime effect when Enable Output Limits is off. |
Detailed defaults resolved at runtime
| Simple knob |
Target |
Processing |
SimpleLag |
PositionFollowSpeed, RotationFollowSpeed, ScaleFollowSpeed |
Multiplies authored speed by KnobInverseRatio. Higher Lag means lower speed. |
SimpleBounce |
PositionBounciness, RotationBounciness, ScaleBounciness |
Adds KnobSpan to authored bounciness and limits it to 0–1. |
SimpleRange |
MaxPositionOffset, MaxRotationOffsetDegrees, MaxChainRotationDegrees, MaxScaleDeviation |
Multiplies authored limits by the knob ratio and limits each to its safety maximum. |
OverAnim
| UI name |
C++ property |
Default / unit / range |
Effect |
Visibility |
Interaction |
| Target Bones |
ControlBones |
Empty array |
Guide bones for which spring state is created. |
Details layout |
With none, the module emits an inactive warning. Each bone must exist in the Target Skeleton and preview mesh and lie inside its Bone Group. |
OverAnim | Chain
| UI name |
C++ property |
Default / unit / range |
Effect |
Visibility |
Interaction |
| Propagate To Descendants |
bPropagateToDescendants |
true |
Propagates transforms to non-control-bone descendants as attached to their simulated parent. |
Always |
If another Module owns descendant transforms, propagation can affect the same control points. |
| Use Root To Tip Influence |
bUseChainInfluenceProfile |
false |
Uses a root-to-tip influence profile based on Control Bone chain distance. |
Always |
Shows the three profile properties below when enabled. |
| Root Influence |
RootSpringInfluence |
0.25; 0–1 |
Spring-output ratio at the chain root. |
Use Root To Tip Influence enabled |
Combines with Tip Influence and Influence Exponent to create per-control-bone influence. |
| Tip Influence |
TipSpringInfluence |
1.0; 0–1 |
Spring-output ratio at the chain tip. |
Use Root To Tip Influence enabled |
End value of interpolation between root and tip values. |
| Influence Exponent |
ChainInfluenceExponent |
1.0; minimum 0.1, UI 0.1–4.0 |
Exponent of the root-to-tip interpolation curve. |
Use Root To Tip Influence enabled |
Validator treats values below 0.1 as errors. |
OverAnim | Position
| UI name |
C++ property |
Default / unit / range |
Effect |
Visibility |
Interaction |
| Spring Position |
bSpringPosition |
true |
Enables position spring. |
Always |
When off, Position properties are disabled and Signals are unsupported. |
| Simulation Space |
PositionSimulationSpace |
Parent |
Calculates position spring in Parent, Component, or World space. |
Spring Position enabled; read-only otherwise |
Position channel only. |
| Follow Speed |
PositionFollowSpeed |
2.0; UI range 0.1–10.0, at least 0 |
Speed of following the position target; lower is more delayed. |
Spring Position enabled; read-only otherwise |
Runtime requires finite value greater than 0. SimpleLag inverse ratio is always applied. |
| Bounciness |
PositionBounciness |
0.3; 0–1 |
Position overshoot/wobble amount. |
Spring Position enabled; read-only otherwise |
SimpleBounce additive span is always applied. |
OverAnim | Rotation
| UI name |
C++ property |
Default / unit / range |
Effect |
Visibility |
Interaction |
| Spring Rotation |
bSpringRotation |
true |
Enables rotation spring. |
Always |
Module is inactive when all three channels are off. |
| Simulation Space |
RotationSimulationSpace |
Parent |
Selects Parent, Component, or World frame for rotation spring. |
Spring Rotation enabled; read-only otherwise |
Rotation channel only. |
| Follow Speed |
RotationFollowSpeed |
2.0; UI range 0.1–10.0, at least 0 |
Speed of following rotation target. |
Spring Rotation enabled; read-only otherwise |
Validator requires finite value greater than 0. Lag changes it inversely. |
| Bounciness |
RotationBounciness |
0.3; 0–1 |
Rotation overshoot/wobble amount. |
Spring Rotation enabled; read-only otherwise |
Bounce changes it additively. |
OverAnim | Scale
| UI name |
C++ property |
Default / unit / range |
Effect |
Visibility |
Interaction |
| Spring Scale |
bSpringScale |
true |
Enables scale spring. |
Always |
Module is inactive when all three channels are off. |
| Simulation Space |
ScaleSimulationSpace |
Parent |
Selects Parent, Component, or World frame for scale spring. |
Spring Scale enabled; read-only otherwise |
Scale channel only. |
| Follow Speed |
ScaleFollowSpeed |
2.0; UI range 0.1–10.0, at least 0 |
Speed of following scale target. |
Spring Scale enabled; read-only otherwise |
Validator requires finite value greater than 0. Lag changes it inversely. |
| Bounciness |
ScaleBounciness |
0.3; 0–1 |
Scale overshoot/wobble amount. |
Spring Scale enabled; read-only otherwise |
Bounce changes it additively. |
OverAnim | Safety
| UI name |
C++ property |
Default / unit / range |
Effect |
Visibility |
Interaction |
| Preserve Bone Length |
bPreserveBoneLength |
false |
Constrains position output so each simulated child retains current animation segment length. |
Spring Position enabled |
Limits joint stretching from Signal impulses or low follow speed. |
| Enable Output Limits |
bEnableOutputLimits |
false |
Enables final per-bone/chain-wide guards. |
Always |
Limits apply after root-to-tip influence. Must be enabled for limits and SimpleRange to matter. |
| Max Position Offset |
MaxPositionOffset |
20 cm; minimum 0, UI maximum 100 cm |
Maximum position offset from parent-propagated animation target. |
Output Limits and Position enabled |
0 disables this limit. Range changes it by ratio. |
| Max Rotation Offset |
MaxRotationOffsetDegrees |
60°; 0–180° |
Maximum rotation lag for one control bone. |
Output Limits and Rotation enabled |
0 disables per-bone rotation limit. Works with Max Chain Rotation Budget. |
| Max Chain Rotation Budget |
MaxChainRotationDegrees |
120°; 0–360° |
Maximum accumulated rotation lag across all control bones. |
Output Limits and Rotation enabled |
0 disables chain-wide limit. Range changes it with Max Rotation Offset. |
| Max Scale Deviation |
MaxScaleDeviation |
0.5; minimum 0, UI maximum 2.0 |
Allowed absolute change on each animation target scale axis. |
Output Limits and Scale enabled |
0 disables scale limit. Range changes it by ratio. |
Execution · Response compatibility
| Item |
Behavior |
| Module Phase |
Dynamics |
| Signal support |
Only when Spring Position is enabled. A Rotation- or Scale-only setup cannot be targeted by a Response Rule. |
| Response Mode |
Supports Pulse, Sustained. |
| Automatic Six-Stage Motion |
Supports only Sustained + AutomaticMotionPhase. Default coverage: Anticipation disabled, Action 0.65, Overshoot 1.0, Recoil 0.35, Settle 0.1; timing role Dynamics. |
| Response parameter type |
FOverAnimSpringResponseParameters |
Pulse is a one-shot directional linear impulse. Automatic Six-Stage Motion Sustained submits continuous target offsets to terminal ControlBones. Ordinary Sustained responses are not allowed.
Public Enum
EOverAnimSpringSimulationSpace
BlueprintType enum independently used by PositionSimulationSpace, RotationSimulationSpace, and ScaleSimulationSpace. Channels need not share values; each selection changes the frame used to integrate spring state and convert results back to component transforms.
| C++ value |
Editor UI |
Meaning |
Parent |
Parent |
Calculates spring relative to the current control point's parent transform. Uses component-space transform unchanged if no parent control point exists. |
Component |
Component |
Calculates in Skeletal Mesh Component coordinates without separately composing parent-relative conversion or component world transform. |
World |
World |
Calculates in world coordinates after composing component-space transform with current component world transform, then converts output back to component coordinates. |
Module Response at 100% uses FOverAnimSpringResponseParameters.
| UI name |
C++ property |
Default / unit / range |
Effect |
Application condition |
Interaction |
| Linear Impulse Scale |
LinearImpulseScale |
100 cm/s; minimum 0 |
Size of velocity impulse accumulated by directional Pulse. |
One-shot Pulse |
Multiplied by Master Effect Intensity and resolved magnitude, then clamped by Max Linear Impulse. |
| Max Linear Impulse |
MaxLinearImpulse |
1000 cm/s; minimum 0 |
Maximum accumulated linear impulse length. |
One-shot Pulse |
Limits PendingSignalLinearImpulseCS created by LinearImpulseScale. |
| Target Offset Ratio |
PhaseTargetOffsetRatio |
0.08; 0–0.5, UI maximum 0.25 |
Region-relative length ratio converting current Automatic phase strength into continuous target offset for terminal control bones. |
Sustained + AutomaticMotionPhase |
direction × resolved magnitude × Master Effect Intensity × this ratio × region offset reference length. Uses 25% of character height if reference length is unavailable. |
A Response request must satisfy all of the following.
Spring Position is enabled and the Rule contains FOverAnimSpringResponseParameters.
ResolvedMagnitude is finite and greater than 0; LinearImpulseScale and MaxLinearImpulse are finite and nonnegative.
- Signal
DirectionWS is not NaN and is nonzero after normalization. Contact point and contact normal are not required.
- A non-
Pulse request must be Automatic Six-Stage Motion Sustained; then PhaseTargetOffsetRatio must be within 0–0.5.
Safety limits
- Output limits are independent per channel. If
Enable Output Limits is off or a limit is 0, that limit does not apply.
Preserve Bone Length applies only to Position. Rotation/Scale output needs the respective rotation/scale limits.
Max Chain Rotation Budget consumes the remaining budget across all control bones, so per-bone Max Rotation Offset alone does not limit accumulated rotation.
- Spring state and output transforms are calculated for
ControlBones and propagated control points. Control-bone count and Propagate To Descendants increase affected control points.
- Disabled Position, Rotation, or Scale channels are excluded from that channel's Spring calculation and Simple-knob interpretation.
Validation and inactive conditions
- Empty
Target Bones is an inactive warning, not an error. All Position/Rotation/Scale channels disabled is also an inactive warning.
- Each target bone must exist in Target Skeleton and preview skeletal mesh and lie inside the module's resolved Bone Group; violations produce errors or missing-mesh warnings.
- Enabled-channel follow speed must be finite and greater than
0; bounciness finite and within 0–1.
- With root-to-tip profile, Root/Tip Influence must be
0–1, and Influence Exponent at least 0.1.
- With output limits, position/scale limits must be finite and nonnegative, rotation limit
0–180°, and chain rotation budget 0–360°.