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 Targetscreate 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
Sustainedresponse 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 Penetrationaffects shape only when contact data exists. Maximum Width ScaleandMaximum Length Scaleare final safety limits;PrimaryScaleAtMaxis first calculated from response magnitude and polarity.