Skip to content

Transform Spring

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; 01 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; 01 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.14.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.110.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; 01 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.110.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; 01 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.110.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; 01 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°; 0180° 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°; 0360° 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.

Response Rule parameters and input conditions

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; 00.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 00.5.

Limitations · performance · validation

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.

Performance characteristics

  • 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 01.
  • With root-to-tip profile, Root/Tip Influence must be 01, and Influence Exponent at least 0.1.
  • With output limits, position/scale limits must be finite and nonnegative, rotation limit 0180°, and chain rotation budget 0360°.