UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FSimpleSuspensionHelpers Struct Reference

#include <SimpleSuspension.h>

Static Public Member Functions

static ENGINE_API bool ComputeSprungMasses (const TArray< FVector > &MassSpringPositions, const float TotalMass, TArray< float > &OutSprungMasses, FString *ErrMsg=nullptr)
 
static ENGINE_API bool ComputeSprungMasses (const TArray< FVector > &LocalSpringPositions, const FVector &LocalCenterOfMass, const float TotalMass, TArray< float > &OutSprungMasses, FString *ErrMsg=nullptr)
 
static bool ComputeSingleAxisLambda (const FVector::FReal AxisDot, const FVector::FReal SumAxis, const uint32 Count, TArray< FVector::FReal, TFixedAllocator< 2 > > &Lambdas, FString *ErrMsg=nullptr)
 
static void ComputeSpringNaturalFrequencyAndDampingRatio (const float SprungMass, const float SpringStiffness, const float SpringDamping, float &OutNaturalFrequency, float &OutDampingRatio)
 
static float ComputeSpringStiffness (const float SprungMass, const float NaturalFrequency)
 
static float ComputeSpringDamping (const float SprungMass, const float NaturalFrequency, const float DampingRatio)
 
static float ComputeSpringCriticalDamping (const float SprungMass, const float NaturalFrequency)
 
static float ComputeSpringRestLength (const float SpringStiffness, const float SprungMass, const float SuspendedLength, const float Gravity)
 
static void ComputeSpringParams (const TArray< FVector > &LocalSuspensionOrigins, const FVector &LocalCenterOfMass, const float TotalMass, const FVector &LocalSuspensionNormal, const float LocalGroundDistance, const float NaturalFrequency, const float DampingRatio, const float Gravity, TArray< FSimpleSuspensionSpringParams > &OutSpringParams)
 
static void ComputeSpringParams (const FSimpleSuspensionParams &SuspensionParams, const float TotalMass, const float Gravity, TArray< FSimpleSuspensionSpringParams > &OutSpringParams)
 
static void ComputeWorldSuspensionCoordinates (const FVector &LocalCenterOfMass, const FVector &LocalSuspensionNormal, const TArray< FVector > &LocalSuspensionOrigins, const FTransform &LocalToWorld, FVector &OutWorldCenterOfMass, FVector &OutWorldSuspensionNormal, TArray< FVector > &OutWorldSuspensionOrigins)
 
static void ComputeWorldSuspensionCoordinates (const FSimpleSuspensionParams &SuspensionParams, const FTransform &LocalToWorld, FSimpleSuspensionState &OutSuspensionState)
 
static void ComputeSuspensionDisplacements (const TArray< FVector > WorldSuspensionOrigins, const TArray< FSimpleSuspensionSpringParams > &SpringParams, const FVector &WorldSuspensionNormal, const FSimpleSuspensionRaycast &RaycastFunction, TArray< float > &OutSpringDisplacements)
 
static void ComputeSuspensionDisplacements (const FSimpleSuspensionParams &SuspensionParams, const FSimpleSuspensionRaycast &RaycastFunction, FSimpleSuspensionState InOutSuspensionState)
 
static float ComputeSpringForce (const float SpringStiffness, const float SpringDamping, const float SpringDisplacement, const float SpringVelocity)
 
static void ComputeSuspensionForces (const FVector &LinearVelocity, const FVector &AngularVelocityRad, const FVector &WorldCenterOfMass, const FVector &WorldSuspensionNormal, const TArray< FVector > WorldSuspensionOrigins, const TArray< FSimpleSuspensionSpringParams > &SpringParams, const TArray< float > &SpringDisplacements, FVector &OutTotalForce, FVector &OutTotalTorque, TArray< float > &OutSpringForces)
 
static void ComputeSuspensionForces (const FVector &LinearVelocity, const FVector &AngularVelocityRad, const FSimpleSuspensionState &SuspensionState, const TArray< FSimpleSuspensionSpringParams > &SpringParams, FSimpleSuspensionState &OutSuspensionState)
 
static void IntegrateSpring (const float DeltaTime, const float SpringDisplacement, const float SpringVelocity, const FSimpleSuspensionSpringParams &SpringParams, const float SprungMass, float &OutNewSpringDisplacement, float &OutNewSpringVelocity)
 
static void IntegrateSprings (const float DeltaTime, const TArray< float > &SpringDisplacements, const TArray< float > &SpringVelocities, const TArray< FSimpleSuspensionSpringParams > &SuspensionParams, const TArray< float > &SprungMasses, TArray< float > &OutNewSpringDisplacements, TArray< float > &OutNewSpringVelocities)
 

Member Function Documentation

◆ ComputeSingleAxisLambda()

bool FSimpleSuspensionHelpers::ComputeSingleAxisLambda ( const FVector::FReal  AxisDot,
const FVector::FReal  SumAxis,
const uint32  Count,
TArray< FVector::FReal, TFixedAllocator< 2 > > &  Lambdas,
FString *  ErrMsg = nullptr 
)
static

Calculates the Lambdas in the single axis case

◆ ComputeSpringCriticalDamping()

float FSimpleSuspensionHelpers::ComputeSpringCriticalDamping ( const float  SprungMass,
const float  NaturalFrequency 
)
static

Given a sprung mass and a natural frequency, return the damping coefficient which will critically damp the spring.

◆ ComputeSpringDamping()

float FSimpleSuspensionHelpers::ComputeSpringDamping ( const float  SprungMass,
const float  NaturalFrequency,
const float  DampingRatio 
)
static

Given a sprung mass (not just a sprung mass percent!), a desired natural frequency, and a damping ratio, compute the damping coefficient of the spring.

◆ ComputeSpringForce()

float FSimpleSuspensionHelpers::ComputeSpringForce ( const float  SpringStiffness,
const float  SpringDamping,
const float  SpringDisplacement,
const float  SpringVelocity 
)
static

Compute the total force that a spring ought to apply

◆ ComputeSpringNaturalFrequencyAndDampingRatio()

void FSimpleSuspensionHelpers::ComputeSpringNaturalFrequencyAndDampingRatio ( const float  SprungMass,
const float  SpringStiffness,
const float  SpringDamping,
float OutNaturalFrequency,
float OutDampingRatio 
)
static

Given a sprung mass and a spring stiffness, compute the natural frequency of the spring

◆ ComputeSpringParams() [1/2]

void FSimpleSuspensionHelpers::ComputeSpringParams ( const FSimpleSuspensionParams SuspensionParams,
const float  TotalMass,
const float  Gravity,
TArray< FSimpleSuspensionSpringParams > &  OutSpringParams 
)
static

Compute an array of FSimpleSupportParams objects, based on data from a SuspensionParams object

◆ ComputeSpringParams() [2/2]

void FSimpleSuspensionHelpers::ComputeSpringParams ( const TArray< FVector > &  LocalSuspensionOrigins,
const FVector LocalCenterOfMass,
const float  TotalMass,
const FVector LocalSuspensionNormal,
const float  LocalGroundDistance,
const float  NaturalFrequency,
const float  DampingRatio,
const float  Gravity,
TArray< FSimpleSuspensionSpringParams > &  OutSpringParams 
)
static

Compute an array of FSimpleSupportParams objects

◆ ComputeSpringRestLength()

float FSimpleSuspensionHelpers::ComputeSpringRestLength ( const float  SpringStiffness,
const float  SprungMass,
const float  SuspendedLength,
const float  Gravity 
)
static

Based on spring stiffness, gravity, and the desired length of the spring at rest under load, compute its uncompressed rest-length

◆ ComputeSpringStiffness()

float FSimpleSuspensionHelpers::ComputeSpringStiffness ( const float  SprungMass,
const float  NaturalFrequency 
)
static

Given a sprung mass (not just a sprung mass percent!), a desired natural frequency, compute the stiffness of the spring.

◆ ComputeSprungMasses() [1/2]

bool FSimpleSuspensionHelpers::ComputeSprungMasses ( const TArray< FVector > &  LocalSpringPositions,
const FVector LocalCenterOfMass,
const float  TotalMass,
TArray< float > &  OutSprungMasses,
FString *  ErrMsg = nullptr 
)
static

Same as above, but allows the caller to specify spring locations in a local space which is not necessarily originated at the center of mass.

◆ ComputeSprungMasses() [2/2]

bool FSimpleSuspensionHelpers::ComputeSprungMasses ( const TArray< FVector > &  MassSpringPositions,
const float  TotalMass,
TArray< float > &  OutSprungMasses,
FString *  ErrMsg = nullptr 
)
static

Compute the distribution of the mass of a body among springs. This method assumes that spring positions are given relative to the center of mass of the body, and that gravity occurs in the local -Z direction.

Returns true if it was able to find a valid mass configuration. If only one or two springs are included, then a valid configuration may not result in a stable suspension system - a bicycle or pogostick, for example, which is not perfectly centered may have a valid sprung mass configuration without being stable.

◆ ComputeSuspensionDisplacements() [1/2]

void FSimpleSuspensionHelpers::ComputeSuspensionDisplacements ( const FSimpleSuspensionParams SuspensionParams,
const FSimpleSuspensionRaycast RaycastFunction,
FSimpleSuspensionState  InOutSuspensionState 
)
static

◆ ComputeSuspensionDisplacements() [2/2]

void FSimpleSuspensionHelpers::ComputeSuspensionDisplacements ( const TArray< FVector WorldSuspensionOrigins,
const TArray< FSimpleSuspensionSpringParams > &  SpringParams,
const FVector WorldSuspensionNormal,
const FSimpleSuspensionRaycast RaycastFunction,
TArray< float > &  OutSpringDisplacements 
)
static

Perform raycasts to compute spring displacements. This helper doesn't know about "world", so it takes a lambda. Consumers of this class may just want to do this themselves to avoid this

◆ ComputeSuspensionForces() [1/2]

void FSimpleSuspensionHelpers::ComputeSuspensionForces ( const FVector LinearVelocity,
const FVector AngularVelocityRad,
const FSimpleSuspensionState SuspensionState,
const TArray< FSimpleSuspensionSpringParams > &  SpringParams,
FSimpleSuspensionState OutSuspensionState 
)
static

◆ ComputeSuspensionForces() [2/2]

void FSimpleSuspensionHelpers::ComputeSuspensionForces ( const FVector LinearVelocity,
const FVector AngularVelocityRad,
const FVector WorldCenterOfMass,
const FVector WorldSuspensionNormal,
const TArray< FVector WorldSuspensionOrigins,
const TArray< FSimpleSuspensionSpringParams > &  SpringParams,
const TArray< float > &  SpringDisplacements,
FVector OutTotalForce,
FVector OutTotalTorque,
TArray< float > &  OutSpringForces 
)
static

Based on the current state of the system, compute the total force and torque that the suspension system wants to apply to the suspended body, as well as the spring force magnitudes of each support.

◆ ComputeWorldSuspensionCoordinates() [1/2]

void FSimpleSuspensionHelpers::ComputeWorldSuspensionCoordinates ( const FSimpleSuspensionParams SuspensionParams,
const FTransform LocalToWorld,
FSimpleSuspensionState OutSuspensionState 
)
static

◆ ComputeWorldSuspensionCoordinates() [2/2]

void FSimpleSuspensionHelpers::ComputeWorldSuspensionCoordinates ( const FVector LocalCenterOfMass,
const FVector LocalSuspensionNormal,
const TArray< FVector > &  LocalSuspensionOrigins,
const FTransform LocalToWorld,
FVector OutWorldCenterOfMass,
FVector OutWorldSuspensionNormal,
TArray< FVector > &  OutWorldSuspensionOrigins 
)
static

◆ IntegrateSpring()

void FSimpleSuspensionHelpers::IntegrateSpring ( const float  DeltaTime,
const float  SpringDisplacement,
const float  SpringVelocity,
const FSimpleSuspensionSpringParams SpringParams,
const float  SprungMass,
float OutNewSpringDisplacement,
float OutNewSpringVelocity 
)
static

Integrate a single spring.

◆ IntegrateSprings()

void FSimpleSuspensionHelpers::IntegrateSprings ( const float  DeltaTime,
const TArray< float > &  SpringDisplacements,
const TArray< float > &  SpringVelocities,
const TArray< FSimpleSuspensionSpringParams > &  SuspensionParams,
const TArray< float > &  SprungMasses,
TArray< float > &  OutNewSpringDisplacements,
TArray< float > &  OutNewSpringVelocities 
)
static

Performs a fully implicit damped spring integration to compute next positions and velocities.


The documentation for this struct was generated from the following files: