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

#include <PBDCollisionSolver.h>

Public Member Functions

 FPBDCollisionSolver ()
 
void Reset (FPBDCollisionSolverManifoldPoint *InManifoldPoints, const int32 InMaxManifoldPoints)
 
void ResetManifold ()
 
FSolverReal GetStaticFriction () const
 
FSolverReal GetDynamicFriction () const
 
FSolverReal GetVelocityFriction () const
 
void SetFriction (const FSolverReal InStaticFriction, const FSolverReal InDynamicFriction, const FSolverReal InVelocityFriction, const FSolverReal InMinMaxFrictionPushOut)
 
void SetStiffness (const FSolverReal InStiffness)
 
void SetHardContact ()
 
void SetSoftContact (const FSolverReal SoftPhi)
 
void SetSolverBodies (FSolverBody &SolverBody0, FSolverBody &SolverBody1)
 
int32 NumManifoldPoints () const
 
int32 MaxManifoldPoints () const
 
int32 AddManifoldPoint ()
 
const FPBDCollisionSolverManifoldPointGetManifoldPoint (const int32 ManifoldPointIndex) const
 
void InitManifoldPoint (const int32 PointIndex, const FSolverReal Dt, const FSolverVec3 &InRelativeContactPosition0, const FSolverVec3 &InRelativeContactPosition1, const FSolverVec3 &InWorldContactNormal, const FSolverVec3 &InWorldContactTangentU, const FSolverVec3 &InWorldContactTangentV, const FSolverReal InWorldContactDeltaNormal, const FSolverReal InWorldContactDeltaTangentU, const FSolverReal InWorldContactDeltaTangentV, const FSolverReal InWorldContactVelocityTargetNormal)
 
void FinalizeManifold ()
 
FConstraintSolverBodySolverBody0 ()
 Get the first solver body NOTE: This will not include any shock propagation mass scaling.
 
const FConstraintSolverBodySolverBody0 () const
 
FConstraintSolverBodySolverBody1 ()
 Get the second solver body NOTE: This will not include any shock propagation mass scaling.
 
const FConstraintSolverBodySolverBody1 () const
 
void SolvePositionNoFriction (const FSolverReal Dt, const FSolverReal MaxPushOut)
 Calculate and apply the position correction for this iteration.
 
void SolvePositionWithFriction (const FSolverReal Dt, const FSolverReal MaxPushOut)
 
void SolveVelocity (const FSolverReal Dt, const bool bApplyDynamicFriction)
 Calculate and apply the velocity correction for this iteration.
 
void UpdateMass ()
 
void UpdateMassNormal ()
 

Static Public Member Functions

static FPBDCollisionSolver MakeInitialized ()
 
static FPBDCollisionSolver MakeUninitialized ()
 

Static Public Attributes

static const int32 MaxConstrainedBodies = 2
 

Detailed Description

Constructor & Destructor Documentation

◆ FPBDCollisionSolver()

Chaos::Private::FPBDCollisionSolver::FPBDCollisionSolver ( )
inline

Member Function Documentation

◆ AddManifoldPoint()

int32 Chaos::Private::FPBDCollisionSolver::AddManifoldPoint ( )
inline

◆ FinalizeManifold()

FORCEINLINE_DEBUGGABLE void Chaos::Private::FPBDCollisionSolver::FinalizeManifold ( )

Call once all manifold points have been initialized. Calculate mass properties etc.

◆ GetDynamicFriction()

FSolverReal Chaos::Private::FPBDCollisionSolver::GetDynamicFriction ( ) const
inline

◆ GetManifoldPoint()

const FPBDCollisionSolverManifoldPoint & Chaos::Private::FPBDCollisionSolver::GetManifoldPoint ( const int32  ManifoldPointIndex) const
inline

◆ GetStaticFriction()

FSolverReal Chaos::Private::FPBDCollisionSolver::GetStaticFriction ( ) const
inline

◆ GetVelocityFriction()

FSolverReal Chaos::Private::FPBDCollisionSolver::GetVelocityFriction ( ) const
inline

◆ InitManifoldPoint()

FORCEINLINE_DEBUGGABLE void Chaos::Private::FPBDCollisionSolver::InitManifoldPoint ( const int32  PointIndex,
const FSolverReal  Dt,
const FSolverVec3 InRelativeContactPosition0,
const FSolverVec3 InRelativeContactPosition1,
const FSolverVec3 InWorldContactNormal,
const FSolverVec3 InWorldContactTangentU,
const FSolverVec3 InWorldContactTangentV,
const FSolverReal  InWorldContactDeltaNormal,
const FSolverReal  InWorldContactDeltaTangentU,
const FSolverReal  InWorldContactDeltaTangentV,
const FSolverReal  InWorldContactVelocityTargetNormal 
)

Set up a manifold point (except mass properties.

See also
UpdateMass())

◆ MakeInitialized()

static FPBDCollisionSolver Chaos::Private::FPBDCollisionSolver::MakeInitialized ( )
inlinestatic

◆ MakeUninitialized()

static FPBDCollisionSolver Chaos::Private::FPBDCollisionSolver::MakeUninitialized ( )
inlinestatic

◆ MaxManifoldPoints()

int32 Chaos::Private::FPBDCollisionSolver::MaxManifoldPoints ( ) const
inline

◆ NumManifoldPoints()

int32 Chaos::Private::FPBDCollisionSolver::NumManifoldPoints ( ) const
inline

◆ Reset()

void Chaos::Private::FPBDCollisionSolver::Reset ( FPBDCollisionSolverManifoldPoint InManifoldPoints,
const int32  InMaxManifoldPoints 
)
inline

Reset the state of the collision solver

◆ ResetManifold()

void Chaos::Private::FPBDCollisionSolver::ResetManifold ( )
inline

◆ SetFriction()

void Chaos::Private::FPBDCollisionSolver::SetFriction ( const FSolverReal  InStaticFriction,
const FSolverReal  InDynamicFriction,
const FSolverReal  InVelocityFriction,
const FSolverReal  InMinMaxFrictionPushOut 
)
inline

◆ SetHardContact()

void Chaos::Private::FPBDCollisionSolver::SetHardContact ( )
inline

◆ SetSoftContact()

void Chaos::Private::FPBDCollisionSolver::SetSoftContact ( const FSolverReal  SoftPhi)
inline

◆ SetSolverBodies()

void Chaos::Private::FPBDCollisionSolver::SetSolverBodies ( FSolverBody SolverBody0,
FSolverBody SolverBody1 
)
inline

◆ SetStiffness()

void Chaos::Private::FPBDCollisionSolver::SetStiffness ( const FSolverReal  InStiffness)
inline

◆ SolvePositionNoFriction()

FORCEINLINE_DEBUGGABLE void Chaos::Private::FPBDCollisionSolver::SolvePositionNoFriction ( const FSolverReal  Dt,
const FSolverReal  MaxPushOut 
)

Calculate and apply the position correction for this iteration.

Returns
true if we need to run more iterations, false if we did not apply any correction

◆ SolvePositionWithFriction()

FORCEINLINE_DEBUGGABLE void Chaos::Private::FPBDCollisionSolver::SolvePositionWithFriction ( const FSolverReal  Dt,
const FSolverReal  MaxPushOut 
)

◆ SolverBody0() [1/2]

FConstraintSolverBody & Chaos::Private::FPBDCollisionSolver::SolverBody0 ( )
inline

Get the first solver body NOTE: This will not include any shock propagation mass scaling.

◆ SolverBody0() [2/2]

const FConstraintSolverBody & Chaos::Private::FPBDCollisionSolver::SolverBody0 ( ) const
inline

◆ SolverBody1() [1/2]

FConstraintSolverBody & Chaos::Private::FPBDCollisionSolver::SolverBody1 ( )
inline

Get the second solver body NOTE: This will not include any shock propagation mass scaling.

◆ SolverBody1() [2/2]

const FConstraintSolverBody & Chaos::Private::FPBDCollisionSolver::SolverBody1 ( ) const
inline

◆ SolveVelocity()

FORCEINLINE_DEBUGGABLE void Chaos::Private::FPBDCollisionSolver::SolveVelocity ( const FSolverReal  Dt,
const bool  bApplyDynamicFriction 
)

Calculate and apply the velocity correction for this iteration.

Returns
true if we need to run more iterations, false if we did not apply any correction

◆ UpdateMass()

FORCEINLINE_DEBUGGABLE void Chaos::Private::FPBDCollisionSolver::UpdateMass ( )

◆ UpdateMassNormal()

FORCEINLINE_DEBUGGABLE void Chaos::Private::FPBDCollisionSolver::UpdateMassNormal ( )

Member Data Documentation

◆ MaxConstrainedBodies

const int32 Chaos::Private::FPBDCollisionSolver::MaxConstrainedBodies = 2
static

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