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

#include <PBDJointSolverGaussSeidel.h>

Public Member Functions

FConstraintSolverBodyBody (int32 BodyIndex)
 
const FConstraintSolverBodyBody (int32 BodyIndex) const
 
FConstraintSolverBodyBody0 ()
 
const FConstraintSolverBodyBody0 () const
 
FConstraintSolverBodyBody1 ()
 
const FConstraintSolverBodyBody1 () const
 
const FVec3X (int BodyIndex) const
 
const FRotation3R (int BodyIndex) const
 
const FVec3 P (int BodyIndex) const
 
const FRotation3 Q (int BodyIndex) const
 
FVec3 V (int BodyIndex) const
 
FVec3 W (int BodyIndex) const
 
FReal InvM (int32 BodyIndex) const
 
FMatrix33 InvI (int32 BodyIndex) const
 
bool IsDynamic (int32 BodyIndex) const
 
const FVec3GetNetLinearImpulse () const
 
const FVec3GetNetAngularImpulse () const
 
FReal GetLinearViolationSq () const
 
FReal GetAngularViolation () const
 
 FPBDJointSolver ()
 
void SetSolverBodies (FSolverBody *SolverBody0, FSolverBody *SolverBody1)
 
void Init (const FReal Dt, const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings, const FRigidTransform3 &XL0, const FRigidTransform3 &XL1)
 
void Deinit ()
 
void Update (const FReal Dt, const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
 
void UpdateMasses (const FReal InvMassScale0, const FReal InvMassScale1)
 
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 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

◆ FPBDJointSolver()

Chaos::FPBDJointSolver::FPBDJointSolver ( )
inline

Member Function Documentation

◆ ApplyConstraints()

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

◆ ApplyProjections()

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

◆ ApplyVelocityConstraints()

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

◆ Body() [1/2]

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

◆ Body() [2/2]

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

◆ Body0() [1/2]

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

◆ Body0() [2/2]

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

◆ Body1() [1/2]

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

◆ Body1() [2/2]

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

◆ Deinit()

void Chaos::FPBDJointSolver::Deinit ( )

◆ GetAngularViolation()

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

◆ GetLinearViolationSq()

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

◆ GetNetAngularImpulse()

const FVec3 & Chaos::FPBDJointSolver::GetNetAngularImpulse ( ) const
inline

◆ GetNetLinearImpulse()

const FVec3 & Chaos::FPBDJointSolver::GetNetLinearImpulse ( ) const
inline

◆ Init()

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

◆ InvI()

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

◆ InvM()

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

◆ IsBroken()

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

◆ IsDynamic()

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

◆ IsViolating()

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

◆ P()

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

◆ Q()

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

◆ R()

const FRotation3 & Chaos::FPBDJointSolver::R ( int  BodyIndex) const
inline

◆ RequiresSolve()

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

◆ SetIsBroken()

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

◆ SetIsViolating()

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

◆ SetShockPropagationScales()

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

◆ SetSolverBodies()

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

◆ Update()

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

◆ UpdateMasses()

void Chaos::FPBDJointSolver::UpdateMasses ( const FReal  InvMassScale0,
const FReal  InvMassScale1 
)

◆ V()

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

◆ W()

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

◆ X()

const FVec3 & Chaos::FPBDJointSolver::X ( int  BodyIndex) const
inline

Member Data Documentation

◆ MaxConstrainedBodies

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

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