Skip to content

Bone Scaler

UOverAnimBoneScalerModule is an advanced Dynamics Phase module that changes skeletal transform scale using bone velocity. It can propagate the effect to descendants of the target bone and to socket and attachment positions. Its settings are declared in OverAnimation/Asset/OverAnimModule.h; this page covers OverAnim 0.1.0 Beta / UE 5.8.

Purpose

Converts the selected bones' velocity into bone-local scale delta and applies the result to target bone transforms. This module changes skeletal proportions rather than surface displacement. When Overwrite Bone Transform is enabled, the changed parent transform propagates to descendant control points.

Details layout

Simple shows SimpleStrength, SimpleRange, and the asset-wide Master Effect Intensity. The remaining tables below follow the actual category order in Details. Simple knobs do not change Detailed 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. The Module Stack manages execution order within the same Phase.
Master Effect Intensity UOverAnimMeshDeformer::MasterEffectIntensity 1.0; minimum 0, UI maximum 3 Asset-wide intensity multiplied into velocity-to-scale gain. Both Simple and Details, OverAnim|Intensity row Not multiplied directly into response request weight; it is multiplied into ScalePerVelocity every tick.

Simple

UI name C++ property Default / unit / range Effect Visibility Interaction
Strength SimpleStrength 1.0; 0–5 Applies a ratio to authored Scale Per Velocity. 2.0 doubles velocity gain; 0 removes growth. Shown in Simple, always applied at runtime Does not change Axis Mask.
Range SimpleRange 1.0; 0–5 Applies a ratio to authored Max Scale. Shown in Simple, always applied at runtime The knob position at which the cap becomes 1.0 or lower depends on authored Max Scale.

Detailed defaults resolved at runtime

Simple knob Target Processing
SimpleStrength ScalePerVelocity Multiplies the authored value by the knob ratio and limits it to a minimum of 0.
SimpleRange MaxScale Multiplies the authored cap by the knob ratio and limits it to a minimum of 0. The point where final scale growth stops depends on the authored cap.

OverAnim | Activation

UI name C++ property Default / unit / range Effect Visibility Interaction
Driver Mode DriverMode Automatic + Signal Boost Automatic Motion uses only velocity-derived scale. In Signal Gated Motion, the output multiplier is 0 without response weight. Automatic + Signal Boost adds response weight to a base multiplier of 1. Always Automatic Motion rejects Response Rule requests. The other modes support Pulse and Sustained.

OverAnim

UI name C++ property Default / unit / range Effect Visibility Interaction
Target Bones BoneMask Empty array Source-bone list to which skeletal scale is applied. Details layout With no valid bone, neither tick nor render proxy produces output. An Automatic Six-Stage Motion response requires at least one bone other than None.
Overwrite Bone Transform bOverwriteBoneTransform true Recalculates descendant control points of scaled target bones from the new parent transform. Always When enabled, child bones and socket/attachment positions move together. When disabled, only bones directly specified in the mask change.

OverAnim | Velocity

UI name C++ property Default / unit / range Effect Visibility Interaction
Velocity Space VelocitySpace Component Space Measurement frame for source-bone velocity driving scale. Component Space uses control-point linear velocity; World Space recalculates velocity from current and previous component world transforms. Always Selecting World Space makes Use Component Scale editable.
Use Component Scale bUseComponentScale true Whether component scale is respected when converting world velocity back to component space. Velocity Space = World Space; read-only otherwise Uses InverseTransformVector when true, InverseTransformVectorNoScale when false.
Apply Bone Scale to Velocity bUseBoneScale false Whether current bone scale is respected when converting component-space velocity to bone space. Always Uses InverseTransformVector when true, InverseTransformVectorNoScale when false. Absolute velocity then becomes the scale-delta input.

OverAnim | Scale

UI name C++ property Default / unit / range Effect Visibility Interaction
Axis Mask AxisMask (1, 1, 1); each component minimum 0 Per-local-X/Y/Z-axis weights for velocity-derived scale. Always Runtime sanitizes negative components to 0. Even with Uniform Scale enabled, axes with mask 0 do not change.
Scale Per Velocity ScalePerVelocity 0.01; minimum 0 Gain converting bone-space absolute velocity to skeletal scale delta. Always Actual delta is abs(VelocityBS) × AxisMask × ScalePerVelocity × SimpleStrength × Master Effect Intensity × MotionScaleMultiplier.
Uniform Scale bUnifyAxis false Makes scale deltas on enabled mask axes equal to the largest of those deltas. Always Axis Mask first creates per-axis values, then this option unifies them. No delta is added to axes whose mask is 0.
Max Scale MaxScale 3.0; minimum 0 Upper cap for each component of final current bone scale. Always Runtime limits each axis to min(current scale + delta, Max Scale × SimpleRange). The final cap has a minimum of 0.

Execution · Response compatibility

Item Behavior
Module Phase Dynamics
Signal support Supported only when Driver Mode is not Automatic Motion.
Response Mode Supports Pulse and Sustained.
Automatic Six-Stage Motion Uses a Sustained response. The default profile disables Anticipation, Recoil, and Settle, uses Overshoot strength 0.25, and retains the default Action value 1.0. Timing role is Shape.
Response parameter type FOverAnimBoneScalerResponseParameters

Automatic Motion uses velocity-derived scale without a response. Signal Gated Motion uses active response weight as the velocity-derived scale multiplier, while Automatic + Signal Boost adds that multiplier to the existing 1.

Public Enums

EOverAnimProceduralMotionDriverMode

The BlueprintType enum used by DriverMode. It determines how velocity-derived scale and Signal Response weight are combined.

C++ value Editor UI Meaning
MotionOnly Automatic Motion Uses only velocity-derived scale. SupportsSignals() is false, so Response requests are not accepted.
SignalGatedMotion Signal Gated Motion Multiplies velocity-derived scale by active response weight. Without a response, the output multiplier is 0.
MotionWithSignalBoost Automatic + Signal Boost Retains velocity-derived scale and adds active response weight to the base multiplier 1.

EOverAnimTransformBufferSpace

A reused BlueprintType enum used by VelocitySpace. Although its name is also used for transform buffers, Bone Scaler uses it to select the source-bone velocity measurement frame.

C++ value Editor UI Meaning
Local Component Space Uses the current control point's component-space linear velocity.
World World Space Calculates world velocity from current and previous component world transforms, then converts it back to component space. bUseComponentScale determines whether that conversion respects scale.

Response Rule parameters and input conditions

Module Response at 100% in a Response Rule uses FOverAnimBoneScalerResponseParameters.

UI name C++ property Default / unit / range Effect Application condition Interaction
Motion Scale Strength at Full Response MotionScaleStrengthAtMax 1.0; 01 Weight applied to velocity-derived skeletal scaling at maximum response. Driver Mode is not Automatic Motion Resolved magnitude × this value is clamped to 01 and stored as response weight. It does not replace Axis Mask or Scale Per Velocity.

A Response request must satisfy all of the following.

  • Driver Mode is not Automatic Motion, and the Rule contains FOverAnimBoneScalerResponseParameters.
  • Motion Scale Strength at Full Response and ResolvedMagnitude are finite, and the parameter is within 01.
  • Response-envelope Attack, Hold, and Release times are all finite and at least 0. Response weight state manages Pulse or Sustained weight.
  • Direction, contact point, contact normal, and mesh component are not request-acceptance conditions.

Creating an Automatic Six-Stage Motion response requires the Module to be enabled and named, Driver Mode to permit Signals, and Target Bones to contain at least one bone other than None.

Limitations · performance · validation

Safety limits

  • Because this module directly changes skeletal transforms, enabling Overwrite Bone Transform changes socket and attachment positions as well as descendant transforms.
  • Max Scale is an upper cap. If the product of the authored value and SimpleRange is 1.0 or lower, it can prevent growth or create a cap below current scale. Runtime only limits the final cap to a minimum of 0.
  • Axis Mask and Scale Per Velocity do not produce negative scale delta. Runtime uses absolute velocity and sanitizes Axis Mask and gain to a minimum of 0.

Performance characteristics

  • Each fixed tick finds masked bones and converts velocity to scale delta. When Overwrite Bone Transform is enabled, it then reconstructs descendant control-point transforms.
  • Tick exits immediately when Target Bones is empty or fixed delta is 0 or lower.
  • Runtime state stores BoneMask and the previous component world transform. It does not use a transform-history buffer.

Validation and inactive conditions

  • Empty Target Bones, a mask containing only None, or a mask with no bone resolved in the current build context produces no output proxy.
  • Automatic Six-Stage Motion response creation is rejected when there are no valid target bones.
  • Runtime sanitizes negative ScalePerVelocity, AxisMask, and MaxScale values to 0, but there is no separate Bone Scaler validation error that automatically corrects semantic errors in Details input.
  • When response weight reaches 0 in Signal Gated Motion, the calculated velocity-derived scale is not applied.