Motion · Simulation Types
Baseline: OverAnim 0.1.0 Beta · Unreal Engine 5.8
Headers: OverAnimation/Runtime/OverAnimSimulationTypes.h, OverAnimation/Runtime/OverAnimMotionSignalProfile.h, OverAnimation/Runtime/OverAnimMotionPhaseAnalyzer.h
This page documents the SimulationSettings and MotionSignalSettings structures of UOverAnimMeshDeformer field by field. See Signal · Impact Types for the output format of analyzer-generated Signals and Response Types for using response stages.
FOverAnimSimulationSettings
| Details UI Name |
C++ Property |
Default · Range |
Runtime Effect |
| Fixed Rate |
FixedRateHz |
60 Hz, 15..240 |
Determines the fixed simulation delta. Invalid values are internally sanitized to 60 Hz. |
| Max Substeps |
MaxSubsteps |
4, 1..16 |
Maximum number of fixed steps performed per frame. |
| Max Accumulated Time |
MaxAccumulatedTime |
1/15 s, 0..0.25 |
Limits accumulated time retained for catch-up. The actual value is clamped to the range supported by fixed delta and max substeps. |
| Maximum Continuous Pose Gap |
MaximumContinuousPoseGap |
0.5 s, 0.1..2 |
Maximum sample interval accepted as a continuous pose source. A larger gap requests source-motion and dynamic-history resets when Reset On Discontinuity is enabled. |
| Reset On Discontinuity |
bResetOnDiscontinuity |
true |
Resets history and dynamic state on teleport, pose cut, or stale source gap. |
| Component Teleport Distance Threshold |
ComponentTeleportDistanceThreshold |
300 cm, 10+ |
Component-transform movement beyond this value is a discontinuity. |
| Component Teleport Rotation Threshold |
ComponentTeleportRotationThreshold |
150 deg, 1..180 |
Component-rotation discontinuity threshold. |
| Pose Distance Threshold Ratio |
PoseDistanceThresholdRatio |
0.75, 0.1..5 |
Multiplied by the mesh sphere radius to calculate pose-discontinuity distance. |
| Minimum Pose Distance Threshold |
MinimumPoseDistanceThreshold |
50 cm, 10+ |
Lower bound for the pose-distance discontinuity threshold. |
| Pose Rotation Threshold |
PoseRotationThreshold |
150 deg, 1..180 |
Pose-rotation discontinuity threshold. |
| Source Motion Prediction Threshold Scale |
SourceMotionPredictionThresholdScale |
0.25, 0.05..1 |
Ratio for the stricter source-motion error threshold used to suppress derived velocity/acceleration. |
| Dynamic History Cut Threshold Scale |
DynamicHistoryCutThresholdScale |
0.5, 0.1..1 |
Ratio for the prediction-error threshold that clears Spring/Follow Through history. |
When bResetOnDiscontinuity is false, gaps and prediction errors do not suppress source motion or reset dynamic history. Pose-source gap resets use MaximumContinuousPoseGap, but consumers still use sanitized MaxAccumulatedTime to decide whether a pose snapshot is stale.
C++ Simulation Helper Contracts
The following FOverAnimSimulationSettings helpers are C++ functions, not Blueprint nodes. They return sanitized calculations without modifying settings.
| C++ Declaration |
Return |
Input · Boundary Contract |
float GetFixedDeltaSeconds() const |
Fixed-step delta in seconds |
Reciprocal of FixedRateHz, clamped to 15..240 Hz when finite, or using 60 Hz when non-finite. |
int32 GetSanitizedMaxSubsteps() const |
1..16 step count |
Clamps MaxSubsteps to that range. |
float GetSanitizedMaxAccumulatedTime() const |
Allowed accumulated time |
Clamps the requested value from one fixed delta through fixed delta × sanitized max substeps. Uses the upper bound when the request is non-finite. |
float GetMaximumContinuousPoseGap() const |
Allowed continuous pose gap |
Clamps a finite request to 0.1..2 s; uses 0.5 s when non-finite. |
double GetEarliestAllowedFixedTime(double CurrentFrameTimeSeconds) const |
Earliest allowed fixed time |
Current time minus sanitized accumulated time when finite; otherwise 0.0. |
float CalculateFrameInterpolationAlpha(double SampleTimeSeconds, double PreviousTimeSeconds, double CurrentTimeSeconds) const |
0..1 frame-interpolation alpha |
Returns 1 if any time is non-finite or frame duration is not positive. Otherwise returns the sample's clamped position within the frame. |
float CalculateRenderInterpolationAlpha(double CurrentFrameTimeSeconds, double LastFixedTimeSeconds) const |
0..1 render-interpolation alpha |
Returns 0 if a time or fixed delta is invalid. Otherwise divides elapsed time since the last fixed step by fixed delta and clamps it. |
bool ShouldResetForPoseSourceGap(double PreviousSampleTimeSeconds, double CurrentSampleTimeSeconds) const |
Whether to reset for a source gap |
true only when bResetOnDiscontinuity is true, both times are finite and increasing, and the gap exceeds GetMaximumContinuousPoseGap(). |
bool IsPoseSampleStale(double ConsumerTimeSeconds, double SampleTimeSeconds) const |
Whether the sample is stale for the consumer |
true only when both times are finite and sample age exceeds sanitized accumulated time. |
Discontinuity Threshold · Decision Helpers
FOverAnimSourceMotionDiscontinuityMetrics is the C++ input structure for the two decision functions below. Its three translation values are in cm and three rotation values are in degrees; all must be calculated from the same pose transition.
| Field |
Meaning |
PositionPredictionError, RotationPredictionErrorDegrees |
Magnitude by which current source motion differs from its prediction |
CurrentTranslationDistance, PreviousTranslationDistance |
Translation distance of the current and previous transitions |
CurrentRotationDistanceDegrees, PreviousRotationDistanceDegrees |
Rotation distance of the current and previous transitions |
| C++ Declaration |
Return |
Calculation Contract |
float GetComponentTeleportDistanceThreshold() const |
Threshold in cm |
Non-finite values use 300; otherwise minimum 10 cm. |
float GetComponentTeleportRotationThreshold() const |
Threshold in degrees |
Non-finite values use 150; otherwise clamped to 1..180. |
float GetPoseDistanceThreshold(float MeshSphereRadius) const |
Threshold in cm |
max(sanitized MinimumPoseDistanceThreshold, MeshSphereRadius × sanitized PoseDistanceThresholdRatio). Default fallback is 50 cm, ratio fallback is 0.75. |
float GetPoseRotationThreshold() const |
Threshold in degrees |
Non-finite values use 150; otherwise clamped to 1..180. |
float GetSourceMotionPositionErrorThreshold(float MeshSphereRadius) const |
Threshold in cm |
Pose-distance threshold multiplied by sanitized SourceMotionPredictionThresholdScale, with a minimum of 2.5 cm. |
float GetSourceMotionRotationErrorThreshold() const |
Threshold in degrees |
Pose-rotation threshold multiplied by sanitized prediction scale, with a minimum of 5 deg. |
float GetDynamicHistoryPositionErrorThreshold(float MeshSphereRadius) const |
Threshold in cm |
Greater of the source-motion threshold and pose-distance threshold multiplied by sanitized DynamicHistoryCutThresholdScale. |
float GetDynamicHistoryRotationErrorThreshold() const |
Threshold in degrees |
Greater of the source-motion threshold and pose-rotation threshold multiplied by sanitized dynamic-history scale. |
bool ShouldSuppressSourceMotion(const FOverAnimSourceMotionDiscontinuityMetrics& Metrics, float MeshSphereRadius) const |
Whether to suppress derived source motion |
true when reset is enabled, prediction error exceeds the source-motion threshold, and current translation or rotation change exceeds its previous change by at least threshold × 0.25. |
bool ShouldResetDynamicHistory(const FOverAnimSourceMotionDiscontinuityMetrics& Metrics, float MeshSphereRadius) const |
Whether to reset Spring/Follow Through history |
Performs the same comparison with the larger dynamic-history threshold. Always false when bResetOnDiscontinuity is false. |
Motion Direction · Detection Enums
| Enum |
Value |
Meaning |
EOverAnimVerticalImpactDirectionMode |
WorldUp, OwnerUp, ComponentUp |
Source of the up axis for vertical-impact normal/direction. |
|
OppositeVelocity |
Uses the opposite of current velocity. Cannot create a direction when velocity is 0. |
EOverAnimMotionDirectionMode |
WorldUp/Down, OwnerUp/Down, ComponentUp/Down |
Direction based on a fixed up/down axis. |
|
Velocity, OppositeVelocity, PreviousVelocity, OppositePreviousVelocity, VelocityChange, OppositeVelocityChange |
Direction based on actor-motion vectors. No usable direction exists if required current/previous samples are unavailable. |
EOverAnimMotionPhaseInputSource |
RootRelativeAnimationPose |
Uses only the Skeleton-root-relative final animation pose for automatic stages. Excludes actor travel/extracted root motion. |
|
FullFinalPoseMotion |
Uses absolute component-space final-pose motion for automatic stages. |
EOverAnimMotionPhaseActivationScope |
Automatic |
Legacy compatibility value that preserves Montage-boundary behavior of older assets. |
|
ContinuousAnimation |
Analyzes automatic stages in every final animation pose. |
|
AuthoredActionWindow |
Analyzes only inside a Montage boundary or explicit action window. |
EOverAnimAutomaticStageTimeBasis |
ActionTempoRelative |
Scales stage guards, response timing, and optional delay by measured action tempo. |
|
FixedSeconds |
Keeps stage guards and timing in authored seconds. |
EOverAnimMotionPhaseSensitivity |
Conservative, Balanced, Sensitive, Custom |
Presets jointly configure EntryEnergy, PreparationEntryEnergy, ActionEnergy, and SettleEnergy. It is Custom when any threshold differs from a preset. |
FOverAnimMotionPhaseDetectionSettings
Basic Stage Contract
| Details UI Name |
C++ Property |
Default · Range |
Effect · Display Condition |
| Motion Input |
InputSource |
RootRelativeAnimationPose |
Motion source for automatic stages. Does not apply to other Region motion Signals. |
| Analyze Automatic Stages |
ActivationScope |
ContinuousAnimation |
Selects whether the automatic analyzer always runs or only within Montage/explicit action windows. Does not suppress Gameplay, Notify, or other motion Signals. |
| Use Montage Action Boundaries |
bUseMontageActionBoundaries |
true |
Opens a new action cycle at Montage start. Interrupted Montages close at blend-out, while normal blend-out is analyzed through Montage completion to preserve Recoil/Settle. |
| Treat Montage Parts as Separate Actions |
bTreatMontageSectionsAsSeparateActions |
false |
Displayed when the previous boolean is true. Treats Section or embedded Animation Sequence transitions as new action cycles. |
| Rebase On Anim State Transitions |
bRebaseOnAnimStateTransitions |
true |
Rebases derivatives during and after Anim Blueprint state crossfades so they are not detected as sudden Region motion. Does not reset other Signals or deformation simulation. |
| Stage Timing |
TimeBasis |
ActionTempoRelative |
Selects detected-tempo or fixed-seconds timing basis. |
| Detection Sensitivity |
Sensitivity |
Balanced |
Built-in threshold preset or Custom state. |
| Start Motion Energy |
EntryEnergy |
0.12, 0..1 |
Normalized energy that leaves Starting Pose. Displayed for expert tuning. |
| Anticipation Entry Energy |
PreparationEntryEnergy |
0.10, 0..1 |
Acceleration evidence that can open Anticipation before visible action. |
| Action Entry Energy |
ActionEnergy |
0.40, 0..1 |
Energy that commits Anticipation to Action. |
| Settle Entry Energy |
SettleEnergy |
0.06, 0..1 |
Energy for entering Settle Pose. Must be less than EntryEnergy. |
| Maximum Anticipation Prediction |
MaximumPredictionLeadTime |
0.10 s, 0..0.25 |
Maximum time by which causal prediction can advance Anticipation. |
| Infer Counter-Motion Anticipation |
bInferOppositeActionAxisFromPreparation |
true |
Treats preparation as counter-motion and predicts the opposite action axis. |
| Maximum Anticipation Duration |
MaximumAnticipationDuration |
0.10 s, 0.01+ |
Maximum Anticipation time without Action; afterward it cancels to Settle. |
| Settle Pose Duration |
SettleDuration |
0.08 s, 0.01+ |
Quiet time required before returning to Starting Pose. |
| Starting Pose Confirmation |
StartingPoseConfirmationTime |
0.15 s, 0..0.5 |
Continuous quiet time required to re-arm the next action cycle. |
| Starting Pose Return Tolerance |
StartingPoseReturnTolerance |
0.35, 0..1 |
Root-relative Region motion must return within this fraction of the cycle's maximum movement from the starting pose to close the cycle. 1 disables the positional-return guard. |
| Show Expert Detection Tuning |
bShowAdvancedTuning |
false |
Display condition for the expert fields below. Does not change visual peak amount. |
Expert Detection Tuning
| Details UI Name |
C++ Property |
Default · Range |
Effect |
| Action Commit Direction |
ActionCommitDirectionDotThreshold |
0, -1..1 |
Minimum dot product between the predicted counter-motion axis and measured motion. Displayed only when bInferOppositeActionAxisFromPreparation is also true. |
| Detect Chained Actions During Recovery |
bDetectChainedActionsDuringRecovery |
false |
Allows a new cycle when recovery rises again before Starting Pose. |
| Build / Recovery Trend Threshold |
TrendThreshold |
0.40, 0+ |
Threshold separating build and recovery in the normalized energy trend. |
| Trend Smoothing |
TrendSmoothingRate |
14, 0+ |
Exponential smoothing rate for the energy trend. 0 uses the raw trend. |
| Adaptive Trend Response |
AdaptiveTrendResponse |
2, 0..4 |
Increases trend-filter responsiveness during decisive motion. |
| Anticipation Confirmation Time |
AnticipationConfirmationTime |
0.025 s, 0..0.05 |
Onset-confirmation time that filters isolated acceleration spikes. |
| Anticipation Cancellation Time |
AnticipationCancellationTime |
0.04 s, 0..0.20 |
Time after which Anticipation without evidence cancels to Settle. |
| Overshoot Peak Drop |
PeakDropEnergy |
0.06, 0..1 |
Enters Overshoot after energy falls this far from the Action peak. |
| Recoil Direction Threshold |
ReversalDotThreshold |
-0.10, -1..1 |
Identifies Recoil when the dot product with the action axis is at or below this value. |
| Minimum Stage Duration |
MinimumPhaseDuration |
0.025 s, 0+ |
Minimum time between consecutive stage transitions. |
| Angular Action Energy Weight |
AngularActionWeight |
0.65, 0..2 |
Contribution of angular speed to Action Energy. |
| Linear Anticipation Energy Weight |
LinearPreparationWeight |
0.75, 0..2 |
Contribution of linear acceleration to Anticipation Energy. |
| Angular Anticipation Energy Weight |
AngularPreparationWeight |
0.65, 0..2 |
Contribution of angular acceleration to Anticipation Energy. |
| Direction Conflict Threshold |
DirectionConflictDotThreshold |
-0.25, -1..1 |
Directional evidence more opposite than this value is excluded from the action-axis average. |
| Default Action Stroke Duration |
DefaultActionTempoSeconds |
0.10 s, 0.01..1 |
Fallback duration from Action commitment to peak when no learned tempo exists. |
| Minimum / Maximum Action Stroke Duration |
MinimumActionTempoSeconds, MaximumActionTempoSeconds |
0.05 / 0.25 s, 0.01..1 |
Clamp range for measured action tempo. Default must lie between the two. |
| Action Stroke Learning Rate |
ActionTempoLearningRate |
0.35, 0..1 |
Blend amount by which an observed Action peak updates expected tempo for the next cycle. |
| Minimum Anticipation Strength |
MinimumAnticipationStrength |
0.15, 0..1 |
Minimum strength output during Anticipation. |
| Recovery Peak Retention |
RecoveryPeakRetention |
0.20, 0..1 |
Minimum fraction of the cycle peak retained during Overshoot/Recoil. |
IsValid() jointly checks SettleEnergy < EntryEnergy < ActionEnergy, PreparationEntryEnergy < ActionEnergy, min/default/max action-tempo order, and all duration, range, and finite-value requirements.
Automatic Stage C++ Helper Contracts
| C++ Declaration |
Return · State Change |
Contract |
void ApplySensitivityPreset() |
Changes the structure's four energy thresholds |
Writes 0.16 / 0.14 / 0.50 / 0.07 for Conservative, 0.12 / 0.10 / 0.40 / 0.06 for Balanced, or 0.08 / 0.06 / 0.28 / 0.04 for Sensitive, in Entry / PreparationEntry / Action / Settle order. Custom does not change values. |
void ClassifySensitivityFromThresholds() |
Changes only Sensitivity |
Selects the corresponding preset when all four thresholds approximately match one of the combinations above; otherwise selects Custom. Does not change thresholds. |
float ResolveActionTimingScale(float ActionTempoSeconds) const |
Timing multiplier |
Returns 1 under FixedSeconds, for non-finite tempo, or for a non-finite/non-positive default tempo. Otherwise clamps input tempo to min/max action tempo and divides it by default tempo. |
float ResolveMaximumActionTimingScale() const |
Maximum possible timing multiplier |
Calls the resolver above with MaximumActionTempoSeconds. |
bool IsValid() const |
Whether settings are valid |
Jointly requires the energy ordering, every clamp range, StartingPoseReturnTolerance in 0..1, valid time values, min/default/max action-tempo order, and finite smoothing, weight, retention, and dot values in range. |
FOverAnimMotionSignalSettings
Signal Enable Flags
| Details UI Name |
C++ Property |
Default |
Effect · Display Condition |
| Enable Motion Signals |
bEnableMotionSignals |
false |
Master switch for actor motion-generated Signals. |
| Enable Jump Fall Landing Signals |
bEnableJumpFallLandingSignals |
true |
Allows jump-start, falling, and vertical-impact generation. |
| Enable Speed Drop Signal |
bEnableSpeedDropSignal |
true |
Allows planar-deceleration episode Signals. |
| Enable Speed Burst Signal |
bEnableSpeedBurstSignal |
false |
Allows positive planar-acceleration Signals. |
| Enable Direction Change Signal |
bEnableDirectionChangeSignal |
true |
Allows planar direction-change Signals. |
| Enable Acceleration Signal |
bEnableAccelerationSignal |
false |
Allows actor-acceleration Signals. |
| Enable Region Motion Signals |
bEnableRegionMotionSignals |
true |
Master switch for Region-level Signals. |
| Enable Region Speed / Acceleration / Direction Change / Angular Speed / Tip Speed / Angular Acceleration Signal |
bEnableRegionSpeedSignal, bEnableRegionAccelerationSignal, bEnableRegionDirectionChangeSignal, bEnableRegionAngularSpeedSignal, bEnableRegionTipSpeedSignal, bEnableRegionAngularAccelerationSignal |
All false |
Displayed only when bEnableRegionMotionSignals; each creates its corresponding feature Signal. |
| Generate Automatic Six-Stage Motion |
bEnableRegionMotionPhaseSignal |
false |
Displayed only when the Region-motion Signal master is enabled. Uses MotionPhaseDetection to create a six-stage Signal. |
Signal Names
| C++ Property |
Default |
Generated For |
JumpStartSignalName, FallingSignalName, VerticalImpactSignalName |
Motion.JumpStart, Motion.Falling, Motion.VerticalImpact |
Jump/fall/landing |
SpeedDropSignalName, SpeedBurstSignalName, DirectionChangeSignalName, AccelerationSignalName |
Motion.SpeedDrop, Motion.SpeedBurst, Motion.DirectionChange, Motion.Acceleration |
Actor motion |
RegionSpeedSignalName, RegionAccelerationSignalName, RegionDirectionChangeSignalName |
Motion.Region.Speed, Motion.Region.Acceleration, Motion.Region.DirectionChange |
Region linear motion |
RegionAngularSpeedSignalName, RegionTipSpeedSignalName, RegionAngularAccelerationSignalName |
Motion.Region.AngularSpeed, Motion.Region.TipSpeed, Motion.Region.AngularAcceleration |
Region angular/tip motion |
RegionMotionPhaseSignalName |
Motion.Region.Phase |
Automatic six-stage Signal when bEnableRegionMotionPhaseSignal |
Direction Fields
| Details UI Name |
C++ Property |
Default |
Scope |
| Vertical Impact Direction |
VerticalImpactDirectionMode |
OwnerUp |
Vertical impact |
| Jump Start Direction |
JumpStartDirectionMode |
OwnerUp |
Jump start |
| Falling Direction |
FallingDirectionMode |
Velocity |
Falling |
| Speed Drop Direction |
SpeedDropDirectionMode |
PreviousVelocity |
Speed drop |
| Speed Burst Direction |
SpeedBurstDirectionMode |
Velocity |
Speed burst |
| Direction Change Direction |
DirectionChangeDirectionMode |
VelocityChange |
Direction change |
| Acceleration Direction |
AccelerationDirectionMode |
VelocityChange |
Acceleration |
Actor and Landing Thresholds
| C++ Property |
Default · Minimum |
Effect |
MinJumpSpeed, MaxJumpSpeed |
150 / 1200, 0+ / 1+ |
Linear-speed range for jump Signal magnitude. |
MinFallingSpeed, MaxFallingSpeed, MinFallingMagnitude |
80 / 1200 / 0.1, 0+ / 1+ / 0..1 |
Falling-Signal entry and magnitude range. |
MinFallTime, GroundProbeDistance, GroundedVelocityThreshold |
0.08 s / 80 / 80, 0+ |
Airborne time, ground probe, and Grounded-detection thresholds. |
MinVerticalImpactSpeed, MaxVerticalImpactSpeed, VerticalImpactVelocityMemory |
350 / 1200 / 0.5 s, 0+ / 1+ / 0+ |
Landing-impact range and recent downward-velocity memory duration. |
MinPlanarSpeedDrop, MaxPlanarSpeedDrop |
300 / 1000, 0+ / 1+ |
Deceleration-episode magnitude range. |
MinPlanarSpeedBurstAcceleration, MaxPlanarSpeedBurstAcceleration |
600 / 6000 cm/s², 0+ / 1+ |
Positive planar-acceleration burst magnitude range. |
SpeedBurstSmoothingRate, SpeedBurstReleaseThresholdRatio |
6 / 0.5, 0+ / 0..1 |
Burst-differentiation smoothing and re-arm release fraction. |
MinActorAcceleration, MaxActorAcceleration |
600 / 6000 cm/s², 0+ / 1+ |
Actor-acceleration Signal magnitude range. |
SpeedDropAccumulationWindow, SpeedDropSettleTime |
0.35 / 0.06 s, 0.01+ / 0+ |
Speed-drop episode accumulation/finalization timing. |
SpeedDropStopSpeed, SpeedDropRecoveryThreshold, SpeedDropRearmSpeedIncrease |
25 / 10 / 50 cm/s, 0+ / 0+ / 1+ |
Stop finalization, recovery finalization, and next-episode re-arm thresholds. |
MinDirectionChangeSpeed, MinDirectionChangeAngleDegrees, MaxDirectionChangeAngleDegrees |
250 cm/s / 35 / 135 deg, 0+ / 0..180 / 1..180 |
Speed and angle range for planar-turn Signals. |
DirectionChangeAccumulationWindow, MinDirectionChangeSpeedRetentionRatio |
0.20 s / 0.65, 0.01+ / 0..1 |
Turn-accumulation time and speed-retention requirement. |
bSuppressLocomotionSignalsAfterCollision, LocomotionCollisionSuppressionWindow |
true / 0.10 s |
Briefly suppresses locomotion Signals after an accepted collision. Contact information requires collision submission. |
Region Thresholds · Filtering
| C++ Property |
Default · Minimum |
Effect |
MinRegionSpeed, MaxRegionSpeed |
100 / 1200, 0+ / 1+ |
Region linear-speed Signal range. |
MinRegionAcceleration, MaxRegionAcceleration |
500 / 8000, 0+ / 1+ |
Region linear-acceleration Signal range. |
MinRegionDirectionChangeAngleDegrees, MaxRegionDirectionChangeAngleDegrees |
30 / 150 deg, 0..180 / 1..180 |
Region direction-change range. |
MinRegionAngularSpeedDegrees, MaxRegionAngularSpeedDegrees |
90 / 1440 deg/s, 0+ / 1+ |
Region angular-speed range. |
MinRegionTipSpeed, MaxRegionTipSpeed |
150 / 1800 cm/s, 0+ / 1+ |
Region tip-speed range. |
MinRegionAngularAccelerationDegrees, MaxRegionAngularAccelerationDegrees |
720 / 20000 deg/s², 0+ / 1+ |
Region angular-acceleration range. |
RegionVelocitySmoothingRate, RegionAccelerationSmoothingRate |
18 / 12, 0+ |
Linear velocity/acceleration smoothing. 0 uses the raw sample. |
RegionAngularVelocitySmoothingRate, RegionTipVelocitySmoothingRate, RegionAngularAccelerationSmoothingRate |
18 / 18 / 12, 0+ |
Angular/tip feature smoothing. |
RegionSignalReleaseThresholdRatio |
0.75, 0..1 |
An active sustained Region Signal ends below this fraction of its entry threshold. |
Timing · Diagnostics
| C++ Property |
Default · Range |
Effect |
JumpStartCooldown, FallingDebugInterval, VerticalImpactCooldown |
0.12 / 0.12 / 0.12 s, 0+ |
Jump/fall/impact dispatch or diagnostic intervals. |
AccelerationCooldown, SpeedDropCooldown, SpeedBurstCooldown, DirectionChangeCooldown |
0.08 / 0.12 / 0.08 / 0.12 s, 0+ |
Actor-motion Signal re-trigger limits. |
RegionDirectionChangeCooldown, RegionSignalDebugInterval |
0.12 / 0.12 s, 0+ |
Region-turn re-trigger and diagnostic interval. |
bLogGeneratedSignals |
false |
Emits generated-Signal logs. |
bDrawGeneratedSignals |
false |
Enables generated-Signal debug drawing. |
DebugDrawDuration, DebugDrawScale |
0.75 / 80, 0+ / 1+ |
Debug-drawing duration and size. |
Automatic stage requires separate permission
Even when bEnableRegionMotionPhaseSignal is true, a Response Rule must use Automatic Six-Stage Motion as its Timing Model for the automatic stage to drive the response. Contract validation rejects the route if the module itself does not support automatic stages.
FOverAnimMotionSignalSettings C++ Helper Contracts
All functions below are C++ helpers, not Blueprint nodes. The ResolveFor… family returns a copy without modifying the original, and calculation helpers do not emit Signals.
| C++ Declaration |
Return · State Change |
Input · Boundary Contract |
FOverAnimMotionSignalSettings ResolveForLinearScale(float LinearScale) const |
Copy of settings with linear scale applied |
Equivalent to ResolveForLinearScales(LinearScale, LinearScale). |
FOverAnimMotionSignalSettings ResolveForLinearScales(float MotionScale, float GroundProbeScale) const |
Copy of settings |
Each finite scale has a minimum of 0.01; otherwise it uses 1. MotionScale multiplies all linear thresholds for jump/fall/impact/speed-drop/speed-burst/actor acceleration/direction-change/Region speed, acceleration, tip speed, and debug-draw scale. GroundProbeScale multiplies only GroundProbeDistance. Angles, time, smoothing, and cooldown are unchanged. |
static float CalculateExponentialSmoothingAlpha(float SmoothingRate, float DeltaTime) |
0..1 alpha |
Returns 0 when delta is non-finite or not positive; 1 when rate is non-finite or not positive; otherwise 1 - exp(-rate × delta). |
static FVector CalculateAngularVelocity(const FQuat& PreviousRotation, const FQuat& CurrentRotation, float DeltaTime) |
World-space angular velocity in rad/s |
Returns the zero vector when delta is non-finite/not positive or the rotation-delta axis is 0. Otherwise multiplies the shortest-arc quaternion delta axis by angle/delta. |
static float CalculatePositivePlanarSpeedAcceleration(const FVector& PreviousVelocityWS, const FVector& CurrentVelocityWS, float DeltaTime) |
Positive planar acceleration |
Uses only the increase in speed magnitude excluding Z. Returns 0 for a non-finite/non-positive delta or deceleration. |
static float CalculateFilteredPositivePlanarAcceleration(float PreviousFilteredPlanarSpeed, float CurrentPlanarSpeed, float DeltaTime, float SmoothingRate, float& OutFilteredPlanarSpeed) |
Positive filtered acceleration; writes next filtered speed to out |
Sets out to 0 when current speed is non-finite. Returns 0 when previous speed or delta is invalid. Otherwise interpolates previous/current speed with exponential alpha and returns only the increase. |
Automatic Motion Analyzer C++ API
This section documents the exported C++ contract in OverAnimMotionPhaseAnalyzer.h. Editor preview state and the runtime Instance Manager are outside the supported surface.
| Type |
Main Fields · Meaning |
FOverAnimPhaseEvidence (OverAnimMotionPhase::FEvidence) |
Linear/tip/angular/preparation directions, Region axis, MotionPointPosition, ChainExtensionDirection, and a presence flag for each. IsValid() checks vectors for NaN and extension values for finiteness. The former FOverAnimMotionPhaseSpatialEvidence is a compatibility alias for this type. |
FOverAnimMotionPhaseAnalyzerInput (OverAnimMotionPhase::FInput) |
Linear/tip/acceleration/angular/chain-extension energy, spatial evidence, sample time, and positive sample delta. IsValid() checks that every energy and time is finite and delta is positive. |
FOverAnimAuthoredMotionPhaseInput (OverAnimMotionPhase::FAuthoredInput) |
Authored Phase, TimingSource, ActionAxisWS, StageProgress, MotionStrength, sample time, and ActionScopeSerial. |
FOverAnimAuthoredMotionPhaseState (OverAnimMotionPhase::FAuthoredState) |
Retains current/previous Stage, Action-entry Stage, duration/strength, cycle, and scope serial for authored timing. Reset() preserves the cycle ID. |
Boundary and Continuity
| Type · Value |
Meaning |
EOverAnimMotionPhaseBoundaryRequest::RebasePoseDerivative |
Preserves Stage state and rebases only the pose-derivative baseline. |
ResetForStateTransition |
Resets analyzer state because of an Anim state transition. |
CancelCurrentAction |
Closes the current action and waits for starting-pose confirmation. |
StartNewAction |
Opens a new explicit action boundary. |
FOverAnimMotionPhaseBoundaryQueue::Queue() |
Queues a lifecycle boundary. If StartNewAction is already pending, a subsequent cancel does not downgrade it. |
FOverAnimMotionPhaseBoundaryQueue::QueueTransitionRebase() |
Queues a transition rebase/reset. Does not overwrite a lifecycle boundary or downgrade ResetForStateTransition to a simple rebase. |
OverAnimMotionPhase::ESampleContinuity |
Classifies source-motion/history continuity as Continuous, RebaseDerivative, or ResetState. |
Routing and Update Functions
| C++ Declaration |
Return · Contract |
bool DecodeAuthoredStageCurveValue(float CurveValue, EStage& OutStage, float& OutStageProgress) |
Interprets the integer portion of the curve as Stage and the fractional portion as 0–1 progress. Returns false when no valid stage range can be decoded. |
FUpdate Update(const FSettings&, const FInput&, FState&) |
Updates analyzer state from automatic evidence and returns a snapshot and whether StateUpdate/StateEnd occurred. Input and settings must be valid. |
FUpdate UpdateFromAuthoredTiming(const FAuthoredInput&, FAuthoredState&) |
Updates authored-stage state from curve/marker input. Preserves snapshot TimingSource and authored progress. |
FRegionDecision EvaluateDominantRegion(TConstArrayView<FRegionCandidate>, const FSettings&, double EvaluationTimeSeconds, const FRegionSelection& CurrentState, FRegionSelection& OutNextState) |
Evaluates Action Group candidates and returns selected index, Action ID, and decision reason. Does not modify input state and writes next state to out. |
int32 SelectDominantRegion(TConstArrayView<FRegionCandidate>, const FSettings&, double EvaluationTimeSeconds, FRegionSelection& State) |
Applies the evaluation above to state and returns the selected index or INDEX_NONE. |
OverAnimMotionPhase::ERoutePolicy::Compete selects one dominant Region for the Automatic route, while BroadcastSharedPhase shares the Stage on a selected-animation route. ResolveRoutePolicy(), IsAnimationRoutedCandidateEligible(), and ShouldSuspendSelectedRouteState() make these routing decisions without changing state.
| float GetRegionVelocitySmoothingAlpha(float DeltaTime) const | Alpha | Passes RegionVelocitySmoothingRate to the exponential helper above. |
| float GetRegionAccelerationSmoothingAlpha(float DeltaTime) const | Alpha | Uses RegionAccelerationSmoothingRate. |
| float GetRegionAngularVelocitySmoothingAlpha(float DeltaTime) const | Alpha | Uses RegionAngularVelocitySmoothingRate. |
| float GetRegionTipVelocitySmoothingAlpha(float DeltaTime) const | Alpha | Uses RegionTipVelocitySmoothingRate. |
| float GetRegionAngularAccelerationSmoothingAlpha(float DeltaTime) const | Alpha | Uses RegionAngularAccelerationSmoothingRate. |
| float GetRegionSignalReleaseThreshold(float EntryThreshold) const | Release threshold for a sustained Region Signal | Sanitizes entry to a minimum of 0 and clamps finite RegionSignalReleaseThresholdRatio to 0..1. Uses 0.75 when the ratio is non-finite. |