UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Chaos::FPBDJointCachedSolver Class Reference

#include <PBDJointCachedSolverGaussSeidel.h>

Public Member Functions

FConstraintSolverBodyBody (int32 BodyIndex)
 
const FConstraintSolverBodyBody (int32 BodyIndex) const
 
FConstraintSolverBodyBody0 ()
 
const FConstraintSolverBodyBody0 () const
 
FConstraintSolverBodyBody1 ()
 
const FConstraintSolverBodyBody1 () const
 
const FVec3 X (int BodyIndex) const
 
const FRotation3 R (int BodyIndex) const
 
const FVec3 P (int BodyIndex) const
 
const FRotation3 Q (int BodyIndex) const
 
const FVec3 V (int BodyIndex) const
 
const FVec3 W (int BodyIndex) const
 
FReal InvM (int32 BodyIndex) const
 
FMatrix33 InvI (int32 BodyIndex) const
 
bool IsDynamic (int32 BodyIndex) const
 
FVec3 GetNetLinearImpulse () const
 
FVec3 GetNetAngularImpulse () const
 
FReal GetLinearViolationSq () const
 
FReal GetAngularViolation () const
 
int32 GetNumActiveConstraints () const
 
bool GetIsActive () const
 
 FPBDJointCachedSolver ()
 
void SetSolverBodies (FSolverBody *SolverBody0, FSolverBody *SolverBody1)
 
void Init (const FReal Dt, const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings, const FRigidTransform3 &XL0, const FRigidTransform3 &XL1)
 
void InitProjection (const FReal Dt, const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
 
void Deinit ()
 
void Update (const FReal Dt, const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
 
void ApplyConstraints (const FReal Dt, const FReal InSolverStiffness, const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
 
void ApplyVelocityConstraints (const FReal Dt, const FReal InSolverStiffness, const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
 
void ApplyProjections (const FReal Dt, const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings, const bool bLastIteration)
 
void ApplyPositionProjection (const FReal Dt, const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
 
void ApplyAxisPositionProjection (const FReal LinearProjection, const int32 ConstraintIndex)
 
void ApplyPositionProjectionSimd (const FReal LinearProjection)
 
void ApplyRotationProjection (const FReal Dt, const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
 
void ApplyAxisRotationProjection (const FReal AngularProjection, const bool bLinearLocked, const int32 ConstraintIndex)
 
void ApplyRotationProjectionSimd (const FRealSingle AngularProjection, const bool bLinearLocked)
 
void ApplyTeleports (const FReal Dt, const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
 
void ApplyPositionTeleport (const FReal Dt, const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
 
void ApplyAxisPositionTeleport (const FReal TeleportDistance, const int32 ConstraintIndex)
 
void ApplyPositionTeleportSimd (const FRealSingle TeleportDistance)
 
void ApplyRotationTeleport (const FReal Dt, const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
 
void SetShockPropagationScales (const FReal InvMScale0, const FReal InvMScale1, const FReal Dt)
 
void SetIsBroken (const bool bInIsBroken)
 
bool IsBroken () const
 
void SetIsViolating (const bool bInIsViolating)
 
bool IsViolating () const
 
bool RequiresSolve () const
 

Static Public Attributes

static const int32 MaxConstrainedBodies = 2
 

Detailed Description

Calculate new positions and rotations for a pair of bodies connected by a joint.

This solver treats of the 6 possible constraints (up to 3 linear and 3 angular) individually and resolves them in sequence.

See also
FJointSolverCholesky

Constructor & Destructor Documentation

◆ FPBDJointCachedSolver()

Chaos::FPBDJointCachedSolver::FPBDJointCachedSolver ( )
inline

Member Function Documentation

◆ ApplyAxisPositionProjection()

void Chaos::FPBDJointCachedSolver::ApplyAxisPositionProjection ( const FReal  LinearProjection,
const int32  ConstraintIndex 
)

◆ ApplyAxisPositionTeleport()

void Chaos::FPBDJointCachedSolver::ApplyAxisPositionTeleport ( const FReal  TeleportDistance,
const int32  ConstraintIndex 
)

◆ ApplyAxisRotationProjection()

void Chaos::FPBDJointCachedSolver::ApplyAxisRotationProjection ( const FReal  AngularProjection,
const bool  bLinearLocked,
const int32  ConstraintIndex 
)

◆ ApplyConstraints()

void Chaos::FPBDJointCachedSolver::ApplyConstraints ( const FReal  Dt,
const FReal  InSolverStiffness,
const FPBDJointSolverSettings SolverSettings,
const FPBDJointSettings JointSettings 
)

Main Apply function to solve all the constraint

◆ ApplyPositionProjection()

void Chaos::FPBDJointCachedSolver::ApplyPositionProjection ( const FReal  Dt,
const FPBDJointSolverSettings SolverSettings,
const FPBDJointSettings JointSettings 
)

◆ ApplyPositionProjectionSimd()

void Chaos::FPBDJointCachedSolver::ApplyPositionProjectionSimd ( const FReal  LinearProjection)

◆ ApplyPositionTeleport()

void Chaos::FPBDJointCachedSolver::ApplyPositionTeleport ( const FReal  Dt,
const FPBDJointSolverSettings SolverSettings,
const FPBDJointSettings JointSettings 
)

◆ ApplyPositionTeleportSimd()

void Chaos::FPBDJointCachedSolver::ApplyPositionTeleportSimd ( const FRealSingle  TeleportDistance)

◆ ApplyProjections()

void Chaos::FPBDJointCachedSolver::ApplyProjections ( const FReal  Dt,
const FPBDJointSolverSettings SolverSettings,
const FPBDJointSettings JointSettings,
const bool  bLastIteration 
)

APPLY POSITION PROJECTIONS

◆ ApplyRotationProjection()

void Chaos::FPBDJointCachedSolver::ApplyRotationProjection ( const FReal  Dt,
const FPBDJointSolverSettings SolverSettings,
const FPBDJointSettings JointSettings 
)

◆ ApplyRotationProjectionSimd()

void Chaos::FPBDJointCachedSolver::ApplyRotationProjectionSimd ( const FRealSingle  AngularProjection,
const bool  bLinearLocked 
)

◆ ApplyRotationTeleport()

void Chaos::FPBDJointCachedSolver::ApplyRotationTeleport ( const FReal  Dt,
const FPBDJointSolverSettings SolverSettings,
const FPBDJointSettings JointSettings 
)

◆ ApplyTeleports()

void Chaos::FPBDJointCachedSolver::ApplyTeleports ( const FReal  Dt,
const FPBDJointSolverSettings SolverSettings,
const FPBDJointSettings JointSettings 
)

◆ ApplyVelocityConstraints()

void Chaos::FPBDJointCachedSolver::ApplyVelocityConstraints ( const FReal  Dt,
const FReal  InSolverStiffness,
const FPBDJointSolverSettings SolverSettings,
const FPBDJointSettings JointSettings 
)

◆ Body() [1/2]

FConstraintSolverBody & Chaos::FPBDJointCachedSolver::Body ( int32  BodyIndex)
inline

◆ Body() [2/2]

const FConstraintSolverBody & Chaos::FPBDJointCachedSolver::Body ( int32  BodyIndex) const
inline

◆ Body0() [1/2]

FConstraintSolverBody & Chaos::FPBDJointCachedSolver::Body0 ( )
inline

◆ Body0() [2/2]

const FConstraintSolverBody & Chaos::FPBDJointCachedSolver::Body0 ( ) const
inline

◆ Body1() [1/2]

FConstraintSolverBody & Chaos::FPBDJointCachedSolver::Body1 ( )
inline

◆ Body1() [2/2]

const FConstraintSolverBody & Chaos::FPBDJointCachedSolver::Body1 ( ) const
inline

◆ Deinit()

void Chaos::FPBDJointCachedSolver::Deinit ( )

◆ GetAngularViolation()

FReal Chaos::FPBDJointCachedSolver::GetAngularViolation ( ) const
inline

◆ GetIsActive()

bool Chaos::FPBDJointCachedSolver::GetIsActive ( ) const
inline

◆ GetLinearViolationSq()

FReal Chaos::FPBDJointCachedSolver::GetLinearViolationSq ( ) const
inline

◆ GetNetAngularImpulse()

FVec3 Chaos::FPBDJointCachedSolver::GetNetAngularImpulse ( ) const
inline

◆ GetNetLinearImpulse()

FVec3 Chaos::FPBDJointCachedSolver::GetNetLinearImpulse ( ) const
inline

◆ GetNumActiveConstraints()

int32 Chaos::FPBDJointCachedSolver::GetNumActiveConstraints ( ) const
inline

◆ Init()

void Chaos::FPBDJointCachedSolver::Init ( const FReal  Dt,
const FPBDJointSolverSettings SolverSettings,
const FPBDJointSettings JointSettings,
const FRigidTransform3 XL0,
const FRigidTransform3 XL1 
)

Main init function to cache datas that could be reused in the apply

◆ InitProjection()

void Chaos::FPBDJointCachedSolver::InitProjection ( const FReal  Dt,
const FPBDJointSolverSettings SolverSettings,
const FPBDJointSettings JointSettings 
)

◆ InvI()

FMatrix33 Chaos::FPBDJointCachedSolver::InvI ( int32  BodyIndex) const
inline

◆ InvM()

FReal Chaos::FPBDJointCachedSolver::InvM ( int32  BodyIndex) const
inline

◆ IsBroken()

bool Chaos::FPBDJointCachedSolver::IsBroken ( ) const
inline

◆ IsDynamic()

bool Chaos::FPBDJointCachedSolver::IsDynamic ( int32  BodyIndex) const
inline

◆ IsViolating()

bool Chaos::FPBDJointCachedSolver::IsViolating ( ) const
inline

◆ P()

const FVec3 Chaos::FPBDJointCachedSolver::P ( int  BodyIndex) const
inline

◆ Q()

const FRotation3 Chaos::FPBDJointCachedSolver::Q ( int  BodyIndex) const
inline

◆ R()

const FRotation3 Chaos::FPBDJointCachedSolver::R ( int  BodyIndex) const
inline

◆ RequiresSolve()

bool Chaos::FPBDJointCachedSolver::RequiresSolve ( ) const
inline

◆ SetIsBroken()

void Chaos::FPBDJointCachedSolver::SetIsBroken ( const bool  bInIsBroken)
inline

◆ SetIsViolating()

void Chaos::FPBDJointCachedSolver::SetIsViolating ( const bool  bInIsViolating)
inline

◆ SetShockPropagationScales()

void Chaos::FPBDJointCachedSolver::SetShockPropagationScales ( const FReal  InvMScale0,
const FReal  InvMScale1,
const FReal  Dt 
)

◆ SetSolverBodies()

void Chaos::FPBDJointCachedSolver::SetSolverBodies ( FSolverBody SolverBody0,
FSolverBody SolverBody1 
)
inline

◆ Update()

void Chaos::FPBDJointCachedSolver::Update ( const FReal  Dt,
const FPBDJointSolverSettings SolverSettings,
const FPBDJointSettings JointSettings 
)

◆ V()

const FVec3 Chaos::FPBDJointCachedSolver::V ( int  BodyIndex) const
inline

◆ W()

const FVec3 Chaos::FPBDJointCachedSolver::W ( int  BodyIndex) const
inline

◆ X()

const FVec3 Chaos::FPBDJointCachedSolver::X ( int  BodyIndex) const
inline

Member Data Documentation

◆ MaxConstrainedBodies

const int32 Chaos::FPBDJointCachedSolver::MaxConstrainedBodies = 2
static

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