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

#include <PBDCollisionSpringConstraints.h>

+ Inheritance diagram for Chaos::Softs::FPBDCollisionSpringConstraints:

Public Member Functions

 FPBDCollisionSpringConstraints (const int32 InOffset, const int32 InNumParticles, const FTriangleMesh &InTriangleMesh, const TArray< FSolverVec3 > *InRestPositions, const TMap< FString, TConstArrayView< FRealSingle > > &WeightMaps, const TMap< FString, TConstArrayView< int32 > > &FaceIntMaps, const FCollectionPropertyConstFacade &PropertyCollection)
 
 FPBDCollisionSpringConstraints (const int32 InOffset, const int32 InNumParticles, const FTriangleMesh &InTriangleMesh, const TArray< FSolverVec3 > *InRestPositions, TSet< TVec2< int32 > > &&InDisabledCollisionElements, const FCollectionPropertyConstFacade &PropertyCollection)
 
 FPBDCollisionSpringConstraints (const int32 InOffset, const int32 InNumParticles, const FTriangleMesh &InTriangleMesh, const TArray< FSolverVec3 > *InRestPositions, TSet< TVec2< int32 > > &&InDisabledCollisionElements, const FSolverReal InThickness=Base::BackCompatThickness, const FSolverReal InStiffness=Base::BackCompatStiffness, const FSolverReal InFrictionCoefficient=Base::BackCompatFrictionCoefficient)
 
virtual ~FPBDCollisionSpringConstraints () override
 
void SetProperties (const FCollectionPropertyConstFacade &PropertyCollection, const TMap< FString, TConstArrayView< FRealSingle > > &WeightMaps, const TMap< FString, TConstArrayView< int32 > > &FaceIntMaps)
 
void SetProperties (const FCollectionPropertyConstFacade &PropertyCollection)
 
 UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME (UseSelfCollisions, bool)
 
 UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME (SelfCollisionThickness, float)
 
 UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME (SelfCollisionStiffness, float)
 
 UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME (SelfCollisionFriction, float)
 
 UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME (SelfCollisionLayers, float)
 
template<typename SpatialAccelerator , typename SolverParticlesOrRange >
CHAOS_API void Init (const SolverParticlesOrRange &Particles, const SpatialAccelerator &Spatial, const TConstArrayView< FPBDTriangleMeshCollisions::FGIAColor > &VertexGIAColors, const TArray< FPBDTriangleMeshCollisions::FGIAColor > &TriangleGIAColors)
 
template<typename SpatialAccelerator , typename SolverParticlesOrRange >
CHAOS_API void Init (const SolverParticlesOrRange &Particles, const FSolverReal Dt, const FPBDTriangleMeshCollisions::FTriangleSubMesh &CollidableSubMesh, const SpatialAccelerator &DynamicSpatial, const SpatialAccelerator &KinematicColliderSpatial, const TConstArrayView< FPBDTriangleMeshCollisions::FGIAColor > &VertexGIAColors, const TArray< FPBDTriangleMeshCollisions::FGIAColor > &TriangleGIAColors)
 
template<typename SpatialAccelerator , typename SolverParticlesOrRange >
void Init (const SolverParticlesOrRange &Particles, const SpatialAccelerator &Spatial, const TConstArrayView< FPBDTriangleMeshCollisions::FGIAColor > &VertexGIAColors, const TArray< FPBDTriangleMeshCollisions::FGIAColor > &TriangleGIAColors)
 
template<typename SpatialAccelerator , typename SolverParticlesOrRange >
void Init (const SolverParticlesOrRange &Particles, const FSolverReal Dt, const FPBDTriangleMeshCollisions::FTriangleSubMesh &CollidableSubMesh, const SpatialAccelerator &DynamicSpatial, const SpatialAccelerator &KinematicColliderSpatial, const TConstArrayView< FPBDTriangleMeshCollisions::FGIAColor > &VertexGIAColors, const TArray< FPBDTriangleMeshCollisions::FGIAColor > &TriangleGIAColors)
 
- Public Member Functions inherited from Chaos::Softs::FPBDCollisionSpringConstraintsBase
CHAOS_API FPBDCollisionSpringConstraintsBase (const int32 InOffset, const int32 InNumParticles, const FTriangleMesh &InTriangleMesh, const TArray< FSolverVec3 > *InReferencePositions, TSet< TVec2< int32 > > &&InDisabledCollisionElements, const TConstArrayView< FRealSingle > &InThicknessMultipliers, const TConstArrayView< FRealSingle > &InKinematicColliderFrictionMultipliers, const TConstArrayView< int32 > &InSelfCollisionLayers, const FSolverVec2 InThickness=FSolverVec2(BackCompatThickness), const FSolverReal InStiffness=BackCompatStiffness, const FSolverReal InFrictionCoefficient=BackCompatFrictionCoefficient, const bool bInOnlyCollideKinematics=false, const FSolverReal InKinematicColliderThickness=DefaultKinematicColliderThickness, const FSolverReal InKinematicColliderStiffness=DefaultKinematicColliderStiffness, const FSolverVec2 InKinematicColliderFrictionCoefficient=FSolverVec2(DefaultKinematicColliderFrictionCoefficient), const FSolverReal InProximityStiffness=DefaultProximityStiffness)
 
virtual ~FPBDCollisionSpringConstraintsBase ()
 
void ResetKinematicCollider ()
 
template<typename SpatialAccelerator , typename SolverParticlesOrRange >
CHAOS_API void Init (const SolverParticlesOrRange &Particles, const SpatialAccelerator &Spatial, const TConstArrayView< FPBDTriangleMeshCollisions::FGIAColor > &VertexGIAColors, const TArray< FPBDTriangleMeshCollisions::FGIAColor > &TriangleGIAColors)
 
template<typename SpatialAccelerator , typename SolverParticlesOrRange >
CHAOS_API void Init (const SolverParticlesOrRange &Particles, const FSolverReal Dt, const FPBDTriangleMeshCollisions::FTriangleSubMesh &CollidableSubMesh, const SpatialAccelerator &DynamicSpatial, const SpatialAccelerator &KinematicColliderSpatial, const TConstArrayView< FPBDTriangleMeshCollisions::FGIAColor > &VertexGIAColors, const TArray< FPBDTriangleMeshCollisions::FGIAColor > &TriangleGIAColors)
 
template<typename SolverParticlesOrRange >
CHAOS_API FSolverVec3 GetDelta (const SolverParticlesOrRange &InParticles, const int32 i) const
 
const TArray< TVec4< int32 > > & GetConstraints () const
 
const TArray< FSolverVec3 > & GetBarys () const
 
FSolverReal GetThickness () const
 
FSolverReal GetMaxThickness () const
 
FSolverReal GetParticleThickness (int32 ParticleIndex) const
 
const FPBDFlatWeightMapGetThicknessWeighted () const
 
bool GetGlobalIntersectionAnalysis () const
 
const TArray< bool > & GetFlipNormals () const
 
const TArray< int32 > & GetKinematicCollidingParticles () const
 
const TArray< TMap< int32, FSolverReal > > & GetKinematicColliderTimers () const
 
const FTriangleMeshGetKinematicColliderTriangleMesh () const
 
const FTriangleMeshGetTriangleMesh () const
 
void SetThicknessWeighted (const FSolverVec2 InThickness)
 
void SetFrictionCoefficient (FSolverReal InFrictionCoefficient)
 
template<typename SolverParticlesOrRange >
void Apply (SolverParticlesOrRange &Particles, const FSolverReal Dt, const int32 ConstraintIndex) const
 
template<typename SolverParticlesOrRange >
CHAOS_API void Apply (SolverParticlesOrRange &InParticles, const FSolverReal Dt) const
 
void Apply (FSolverParticles &InParticles, const FSolverReal Dt, const TArray< int32 > &InConstraintIndices) const
 
CHAOS_API void UpdateLinearSystem (const FSolverParticlesRange &Particles, const FSolverReal Dt, FEvolutionLinearSystem &LinearSystem) const
 
TConstArrayView< int32GetFaceCollisionLayers () const
 
const TArray< TVector< int32, 2 > > & GetVertexCollisionLayers () const
 
FSolverReal GetConstraintThickness (const int32 ConstraintIndex) const
 
FSolverReal GetConstraintFrictionCoefficient (const int32 ConstraintIndex) const
 
template<typename SpatialAccelerator , typename SolverParticlesOrRange >
void Init (const SolverParticlesOrRange &Particles, const SpatialAccelerator &Spatial, const TConstArrayView< FPBDTriangleMeshCollisions::FGIAColor > &VertexGIAColors, const TArray< FPBDTriangleMeshCollisions::FGIAColor > &TriangleGIAColors)
 
template<typename SpatialAccelerator , typename SolverParticlesOrRange >
void Init (const SolverParticlesOrRange &Particles, const FSolverReal Dt, const FPBDTriangleMeshCollisions::FTriangleSubMesh &CollidableSubMesh, const SpatialAccelerator &DynamicSpatial, const SpatialAccelerator &KinematicColliderSpatial, const TConstArrayView< FPBDTriangleMeshCollisions::FGIAColor > &VertexGIAColors, const TArray< FPBDTriangleMeshCollisions::FGIAColor > &TriangleGIAColors)
 
template<typename SolverParticlesOrRange >
FSolverVec3 GetDelta (const SolverParticlesOrRange &Particles, const int32 ConstraintIndex) const
 
template<typename SolverParticlesOrRange >
void Apply (SolverParticlesOrRange &InParticles, const FSolverReal Dt) const
 

Static Public Member Functions

static bool IsEnabled (const FCollectionPropertyConstFacade &PropertyCollection)
 

Static Public Attributes

static constexpr FSolverReal MinFrictionCoefficient = (FSolverReal)0.
 
static constexpr FSolverReal MaxFrictionCoefficient = (FSolverReal)1.
 
static constexpr int32 DefaultSelfCollisionDisableNeighborDistance = 5
 
- Static Public Attributes inherited from Chaos::Softs::FPBDCollisionSpringConstraintsBase
static constexpr FSolverReal BackCompatThickness = (FSolverReal)1.f
 
static constexpr FSolverReal BackCompatStiffness = (FSolverReal)0.5f
 
static constexpr FSolverReal BackCompatFrictionCoefficient = (FSolverReal)0.f
 
static constexpr FSolverReal DefaultKinematicColliderThickness = (FSolverReal)0.f
 
static constexpr FSolverReal DefaultKinematicColliderStiffness = (FSolverReal)1.f
 
static constexpr FSolverReal DefaultKinematicColliderFrictionCoefficient = (FSolverReal)0.f
 
static constexpr FSolverReal DefaultProximityStiffness = (FSolverReal)1.
 

Additional Inherited Members

- Protected Member Functions inherited from Chaos::Softs::FPBDCollisionSpringConstraintsBase
CHAOS_API void UpdateCollisionLayers (const TConstArrayView< int32 > &InFaceCollisionLayers)
 
int32 GetNumParticles () const
 
- Protected Attributes inherited from Chaos::Softs::FPBDCollisionSpringConstraintsBase
FPBDFlatWeightMap ThicknessWeighted
 
FSolverReal Stiffness
 
FSolverReal FrictionCoefficient
 
bool bOnlyCollideKinematics
 
FPBDFlatWeightMap KinematicColliderFrictionCoefficient
 
FPBDKinematicTriangleMeshCollisions KinematicCollisions
 
FSolverReal KinematicColliderThickness
 
FSolverReal KinematicColliderStiffness
 
FSolverReal ProximityStiffness
 

Constructor & Destructor Documentation

◆ FPBDCollisionSpringConstraints() [1/3]

Chaos::Softs::FPBDCollisionSpringConstraints::FPBDCollisionSpringConstraints ( const int32  InOffset,
const int32  InNumParticles,
const FTriangleMesh InTriangleMesh,
const TArray< FSolverVec3 > *  InRestPositions,
const TMap< FString, TConstArrayView< FRealSingle > > &  WeightMaps,
const TMap< FString, TConstArrayView< int32 > > &  FaceIntMaps,
const FCollectionPropertyConstFacade PropertyCollection 
)
inline

◆ FPBDCollisionSpringConstraints() [2/3]

Chaos::Softs::FPBDCollisionSpringConstraints::FPBDCollisionSpringConstraints ( const int32  InOffset,
const int32  InNumParticles,
const FTriangleMesh InTriangleMesh,
const TArray< FSolverVec3 > *  InRestPositions,
TSet< TVec2< int32 > > &&  InDisabledCollisionElements,
const FCollectionPropertyConstFacade PropertyCollection 
)
inline

◆ FPBDCollisionSpringConstraints() [3/3]

Chaos::Softs::FPBDCollisionSpringConstraints::FPBDCollisionSpringConstraints ( const int32  InOffset,
const int32  InNumParticles,
const FTriangleMesh InTriangleMesh,
const TArray< FSolverVec3 > *  InRestPositions,
TSet< TVec2< int32 > > &&  InDisabledCollisionElements,
const FSolverReal  InThickness = Base::BackCompatThickness,
const FSolverReal  InStiffness = Base::BackCompatStiffness,
const FSolverReal  InFrictionCoefficient = Base::BackCompatFrictionCoefficient 
)
inline

◆ ~FPBDCollisionSpringConstraints()

virtual Chaos::Softs::FPBDCollisionSpringConstraints::~FPBDCollisionSpringConstraints ( )
inlineoverridevirtual

Member Function Documentation

◆ Init() [1/4]

CHAOS_API void Chaos::Softs::FPBDCollisionSpringConstraintsBase::Init ( const SolverParticlesOrRange Particles,
const FSolverReal  Dt,
const FPBDTriangleMeshCollisions::FTriangleSubMesh CollidableSubMesh,
const SpatialAccelerator DynamicSpatial,
const SpatialAccelerator KinematicColliderSpatial,
const TConstArrayView< FPBDTriangleMeshCollisions::FGIAColor > &  VertexGIAColors,
const TArray< FPBDTriangleMeshCollisions::FGIAColor > &  TriangleGIAColors 
)

◆ Init() [2/4]

void Chaos::Softs::FPBDCollisionSpringConstraintsBase::Init ( const SolverParticlesOrRange Particles,
const FSolverReal  Dt,
const FPBDTriangleMeshCollisions::FTriangleSubMesh CollidableSubMesh,
const SpatialAccelerator DynamicSpatial,
const SpatialAccelerator KinematicColliderSpatial,
const TConstArrayView< FPBDTriangleMeshCollisions::FGIAColor > &  VertexGIAColors,
const TArray< FPBDTriangleMeshCollisions::FGIAColor > &  TriangleGIAColors 
)

◆ Init() [3/4]

CHAOS_API void Chaos::Softs::FPBDCollisionSpringConstraintsBase::Init ( const SolverParticlesOrRange Particles,
const SpatialAccelerator Spatial,
const TConstArrayView< FPBDTriangleMeshCollisions::FGIAColor > &  VertexGIAColors,
const TArray< FPBDTriangleMeshCollisions::FGIAColor > &  TriangleGIAColors 
)

◆ Init() [4/4]

void Chaos::Softs::FPBDCollisionSpringConstraintsBase::Init ( const SolverParticlesOrRange Particles,
const SpatialAccelerator Spatial,
const TConstArrayView< FPBDTriangleMeshCollisions::FGIAColor > &  VertexGIAColors,
const TArray< FPBDTriangleMeshCollisions::FGIAColor > &  TriangleGIAColors 
)

◆ IsEnabled()

static bool Chaos::Softs::FPBDCollisionSpringConstraints::IsEnabled ( const FCollectionPropertyConstFacade PropertyCollection)
inlinestatic

◆ SetProperties() [1/2]

void Chaos::Softs::FPBDCollisionSpringConstraints::SetProperties ( const FCollectionPropertyConstFacade PropertyCollection)
inline

◆ SetProperties() [2/2]

void Chaos::Softs::FPBDCollisionSpringConstraints::SetProperties ( const FCollectionPropertyConstFacade PropertyCollection,
const TMap< FString, TConstArrayView< FRealSingle > > &  WeightMaps,
const TMap< FString, TConstArrayView< int32 > > &  FaceIntMaps 
)
inline

◆ UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME() [1/5]

Chaos::Softs::FPBDCollisionSpringConstraints::UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME ( SelfCollisionFriction  ,
float   
)

◆ UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME() [2/5]

Chaos::Softs::FPBDCollisionSpringConstraints::UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME ( SelfCollisionLayers  ,
float   
)

◆ UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME() [3/5]

Chaos::Softs::FPBDCollisionSpringConstraints::UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME ( SelfCollisionStiffness  ,
float   
)

◆ UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME() [4/5]

Chaos::Softs::FPBDCollisionSpringConstraints::UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME ( SelfCollisionThickness  ,
float   
)

◆ UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME() [5/5]

Chaos::Softs::FPBDCollisionSpringConstraints::UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME ( UseSelfCollisions  ,
bool   
)

Member Data Documentation

◆ DefaultSelfCollisionDisableNeighborDistance

constexpr int32 Chaos::Softs::FPBDCollisionSpringConstraints::DefaultSelfCollisionDisableNeighborDistance = 5
staticconstexpr

◆ MaxFrictionCoefficient

constexpr FSolverReal Chaos::Softs::FPBDCollisionSpringConstraints::MaxFrictionCoefficient = (FSolverReal)1.
staticconstexpr

◆ MinFrictionCoefficient

constexpr FSolverReal Chaos::Softs::FPBDCollisionSpringConstraints::MinFrictionCoefficient = (FSolverReal)0.
staticconstexpr

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