Skip to content

Squash & Stretch

Public type: UOverAnimSquashStretchModule
Header: OverAnimation/Asset/OverAnimModule.h
Execution Phase: Shape

Purpose

Squash & Stretch is a Shape module that deforms a Bone Group's primary-axis length and cross-section in response to Signals. With a Span, it calculates length, silhouette, and attachment propagation between two endpoints. Without a Span, it deforms Region shape around a pivot and axis.

Details properties

Module ID, Module Name, Enabled, and Order Within Module Phase are hidden by Details customization. Input Composition is an inherited property exposed in Details.

Optional Span (OverAnim | Span)

Details customization shows the following authoring tool and status above the properties. Neither is a serialized C++ property.

UI Behavior
Auto Configure Finds a connected primary chain among the selected Bone Group's explicit Affected Bones, fills Span Start and Span End, and adds existing Regions branching from either endpoint to Attachment Targets. It does not create or rename Bone Groups. If a span or attachments already exist, it asks before overwriting them.
Shape Scope Shows Anatomical Span when both endpoints exist, Incomplete Span when only one exists, and Local Region when neither exists.

Auto Configure requires at least two explicit Affected Bones connected in the same parent-child chain in the Target Skeleton. Bones included only through hierarchy expansion are not primary-span candidates.

UI name C++ property Default · unit · range Visibility · effect
Span Start SpanStartBone None First bone of the anatomical length interval. Span propagation is enabled only with Span End. If only one endpoint is present, an Automatic Six-Stage Motion Response cannot be created.
Span End SpanEndBone None Last bone of the interval. It must be an ancestor or descendant of Span Start and lie in the same Region. If runtime cannot find both endpoint control points, no effect is created.
Anchor Policy AnchorPolicy Keep Start Fixed Shown with a Span. Selects the span pivot from Keep Start Fixed, Keep End Fixed, Split From Center, or Keep Contact Fixed. Keep Contact Fixed requires a valid Signal contact point.
Silhouette Profile SpanProfileMode Smooth Silhouette (Recommended) Shown with a Span. Selects the transition profile for span length and cross-section from Uniform Scale (Legacy), Tapered Linear, Smooth Silhouette (Recommended), or Custom Silhouette.
Profile Sharpness SpanProfileExponent 1.0, 0.1–8.0 Shown when Silhouette Profile = Custom Silhouette. Exponent of the custom profile.
Silhouette Balance SilhouetteBalance Balanced Shown with a Span. Places span cross-section emphasis as Balanced, Emphasize Span Start, or Emphasize Span End.
Balance Strength SilhouetteBalanceStrength 0.4, 0–0.8 Shown when Silhouette Balance != Balanced. Amount of Start/End profile bias.
Attachment Targets AttachmentTargets Empty array Shown with a Span. References that propagate endpoint translation to other Regions. This list does not add target Regions to the source module's shape mask.

An Incomplete Span with only one endpoint is a validation error. In Local Region, a warning says stored Attachment Targets are inactive.

Each FOverAnimSquashAttachmentTarget item in Attachment Targets is shown in this order.

UI name C++ property Default · unit · range Visibility · effect
Dependent Region BoneGroupName None Name of the propagation target Bone Group. No attachment edge is created if the name is empty or Overall Weight is nearly zero.
Endpoint Endpoint End Endpoint Selects translation from the source span's Start Endpoint or End Endpoint.
Overall Weight PropagationWeight 1.0, 0–1 Overall endpoint-translation weight applied to the target Region.
Propagation Profile FalloffMode Uniform Uniform moves the target Region like one attached mass; Chain Distance calculates per-bone weights from target Region root to tip.
Root Weight RootWeight 1.0, 0–1 Shown when Propagation Profile = Chain Distance. Propagation weight at target Region chain root.
Tip Weight TipWeight 0.0, 0–1 Shown when Propagation Profile = Chain Distance. Propagation weight at target Region chain tip.
Distance Exponent FalloffExponent 1.0, 0.1–8.0 Shown when Propagation Profile = Chain Distance. Exponent of the root-to-tip falloff profile.

OverAnim | Shape

UI name C++ property Default · unit · range Visibility · effect
Pivot Bone PivotBone None Shown when Pivot Mode = Region Bone or Skeleton Bone. Hidden with Pivot Mode when using a Span. Region Bone finds the pivot in current control points; Skeleton Bone prefers reference control points.
Pivot Mode PivotMode Auto Shown without a Span. Region Bone/Skeleton Bone use Pivot Bone; Signal Origin uses OriginWS; Contact Point uses ContactPointWS. Auto uses the first valid control point.
Prevent Contact Penetration bUseContactPlane true Applies a contact plane only when the Signal contains both valid contact point and normal. Without a Span, anchors shape to the plane; with a Span, also anchors when Anchor Policy = Keep Contact Fixed. Missing contact data does not by itself reject a request.
Axis Mode AxisMode LocalZ Sets primary axis without a Span. LocalX/Y/Z use pivot-transform axes; Signal Direction uses DirectionWS; Contact Normal uses ContactNormalWS. With a Span, the endpoint position difference is the axis and this value is unused for primary-axis calculation.
Mass Preservation VolumePreservation 1.0, 0–1 Controls cross-section expansion corresponding to primary-axis squash. Silhouette Profile is also passed to secondary-scale calculation.

OverAnim | Safety

UI name C++ property Default · unit · range Effect
Maximum Width Scale MaxSecondaryScale 2.0, >= 1 Final upper limit for calculated cross-section scale. Runtime adjusts it to at least 1.0.
Maximum Length Scale MaxPrimaryScale 3.0, >= 1 Final upper limit for Signal Response primary scale. Runtime adjusts it to at least 1.0.

OverAnim (inherited)

UI name C++ property Default · unit · range Effect
Input Composition CompositionMode Additive Offset Additive Offset adds displacement to the previous composed result; Re-Skinning reevaluates from current control-point transforms.

Execution · Signal · Response scope

Item Behavior
Phase Shape
Signal Supported.
Response Mode Supports Pulse and Sustained. Sustained updates target magnitude and polarity while Signals maintaining the slot arrive.
Automatic Six-Stage Motion Compatible. The module must be enabled and named. When using a Span, Span Start and Span End must both exist or both be empty. Without a Span, Pivot Bone is required for Pivot Mode Region Bone or Skeleton Bone. Settings dependent on Contact Point, Contact Normal, or Keep Contact Fixed require contact data and cannot be generated by Automatic Six-Stage Motion.

Public Enums

EOverAnimSquashAxisMode

BlueprintType enum used by AxisMode. It selects primary axis only without a Span; with a Span, the endpoint position difference is the axis.

C++ value Editor UI Meaning
LocalX Local X Uses local X of the selected pivot transform.
LocalY Local Y Uses local Y of the selected pivot transform.
LocalZ Local Z Uses local Z of the selected pivot transform.
SignalDirection Signal Direction Converts finite, nonzero Signal DirectionWS to component space. Rejects requests without a valid direction.
ContactNormal Contact Normal Converts finite, nonzero Signal ContactNormalWS to component space. Rejects requests without a valid normal.

EOverAnimSquashPivotMode

BlueprintType enum used by PivotMode, selecting shape pivot transform or location without a Span.

C++ value Editor UI Meaning
BoneGroupPivot Region Bone Finds PivotBone among current Bone Group control points and uses its transform.
SignalOrigin Signal Origin Uses finite Signal OriginWS as a component-space pivot. Rejects without Mesh Component or Origin.
ContactPoint Contact Point Uses valid Signal ContactPointWS as component-space pivot. Rejects without contact point.
Auto Auto Uses the first valid control-point transform.
SkeletonBone Skeleton Bone Resolves PivotBone preferentially from reference control points for a skeleton-based pivot.

EOverAnimSquashAnchorPolicy

BlueprintType enum used by AnchorPolicy, selecting the fixed point for endpoint motion caused by length change.

C++ value Editor UI Meaning
PreserveStart Keep Start Fixed Fixes Span Start and applies length change toward End.
PreserveEnd Keep End Fixed Fixes Span End and applies length change toward Start.
Centered Split From Center Splits Start/End movement about the span midpoint.
ContactAnchored Keep Contact Fixed Uses a valid Signal contact point as pivot. Rejects without contact point.

EOverAnimSquashAttachmentEndpoint

BlueprintType enum used by FOverAnimSquashAttachmentTarget::Endpoint.

C++ value Editor UI Meaning
Start Start Endpoint Propagates source Span Start translation delta to the dependent Region.
End End Endpoint Propagates source Span End translation delta to the dependent Region.

EOverAnimSquashAttachmentFalloffMode

BlueprintType enum used by FOverAnimSquashAttachmentTarget::FalloffMode.

C++ value Editor UI Meaning
Uniform Uniform Moves the whole dependent Region at the same weight like one attached mass.
ChainDistance Chain Distance Calculates per-bone propagation weights using chain distance from dependent Region root to tip. Enables RootWeight, TipWeight, FalloffExponent.

EOverAnimSquashSpanProfileMode

BlueprintType enum used by SpanProfileMode, selecting axial mapping and secondary silhouette profile between endpoints.

C++ value Editor UI Meaning
Uniform Uniform Scale (Legacy) Uses linear axial interpolation and constant axial derivative between endpoints.
LinearCenter Tapered Linear Uses a profile with linear taper around the center.
SmoothCenter Smooth Silhouette (Recommended) Uses a smooth centered profile entering and leaving endpoints without slope jumps.
PowerCenter Custom Silhouette Adjusts centered profile exponent with SpanProfileExponent.

EOverAnimSquashSilhouetteBalance

BlueprintType enum used by SilhouetteBalance, selecting emphasis direction for the Span cross-section profile.

C++ value Editor UI Meaning
Balanced Balanced Uses a silhouette profile symmetric toward Start and End.
StartHeavy Emphasize Span Start Moves silhouette emphasis toward Span Start.
EndHeavy Emphasize Span End Moves silhouette emphasis toward Span End.

When SpanProfileMode = Uniform, cross-section profile is constant, so the three SilhouetteBalance values produce no visual difference.

Response Rule-only parameters

The Module Response struct for UOverAnimSquashStretchModule is FOverAnimSquashStretchResponseParameters.

UI name C++ property Default · unit · range Visibility · effect
Shape Scale at Full Strength PrimaryScaleAtMax 0.65, >= 0.05 Primary-axis silhouette scale at response magnitude 1. Below 1 squashes; above 1 stretches. Runtime adjusts to at least 0.05.
Authored Anticipation AnticipationAmount 0.0, 0–1 Counter-shape amount inside the authored Pulse envelope. It remains in the response struct when Automatic Six-Stage Motion supplies phases separately, but the module uses automatic-phase stage strength.
Authored Anticipation Timing AnticipationPeakFraction 0.25, 0.05–0.75 Shown when Authored Anticipation > 0. Fraction of Attack Time at which counter-shape peaks.
Authored Recovery Overshoot bEnableRebound false Whether recovery rebound is used inside the authored Pulse envelope.
Authored Overshoot Scale ReboundPrimaryScaleAtMax 1.08, >= 0.05 Shown with Authored Recovery Overshoot. Primary scale during recovery; runtime safety limit is Maximum Length Scale.
Authored Overshoot Timing ReboundPeakFraction 0.35, 0.05–0.95 Shown with Authored Recovery Overshoot. Fraction of Release Time at which rebound peaks.

Signal requests require positive finite resolved magnitude, finite nonzero Response polarity, finite Attack/Hold/Release envelope, and the response struct above. Additional input depends on selected settings.

Setting Required Signal data Rejection condition
No Span + Axis Mode = Signal Direction Finite nonzero DirectionWS Reject without Mesh Component or valid direction.
No Span + Axis Mode = Contact Normal bHasContactNormal = true, finite nonzero ContactNormalWS Reject without valid normal.
No Span + Pivot Mode = Signal Origin Finite OriginWS Reject without Mesh Component or Origin.
No Span + Pivot Mode = Contact Point bHasContactPoint = true, finite ContactPointWS Reject without valid contact point.
Span + Anchor Policy = Keep Contact Fixed bHasContactPoint = true, finite ContactPointWS Reject without valid contact point.

Safety · performance · validation

  • Runtime must resolve both control points and shape-skeleton bone coverage for a span. Otherwise no proxy is created.
  • Attachment Targets create graph edges only for an enabled module with a valid span. No propagation plan is created if source endpoint chain alpha or target Region mask cannot be resolved.
  • A Sustained response is released only when slot name and priority match and request priority is not below current priority. Otherwise release is rejected.
  • Contact-dependent pivot/axis/anchor accepts requests only with valid Signal input. Prevent Contact Penetration affects shape only when contact data exists.
  • Maximum Width Scale and Maximum Length Scale are final safety limits; PrimaryScaleAtMax is first calculated from response magnitude and polarity.