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

#include <XPBDBendingConstraints.h>

+ Inheritance diagram for Chaos::Softs::FXPBDBendingConstraints:

Public Member Functions

 FXPBDBendingConstraints (const FSolverParticlesRange &InParticles, TArray< TVec4< int32 > > &&InConstraints, const TMap< FString, TConstArrayView< FRealSingle > > &WeightMaps, const FCollectionPropertyConstFacade &PropertyCollection)
 
 FXPBDBendingConstraints (const FSolverParticlesRange &InParticles, TArray< TVec4< int32 > > &&InConstraints, const TMap< FString, TConstArrayView< FRealSingle > > &WeightMaps, const FCollectionPropertyConstFacade &PropertyCollection, bool bTrimKinematicConstraints)
 
 FXPBDBendingConstraints (const FSolverParticles &InParticles, int32 InParticleOffset, int32 InParticleCount, TArray< TVec4< int32 > > &&InConstraints, const TMap< FString, TConstArrayView< FRealSingle > > &WeightMaps, const FCollectionPropertyConstFacade &PropertyCollection)
 
 FXPBDBendingConstraints (const FSolverParticles &InParticles, int32 InParticleOffset, int32 InParticleCount, TArray< TVec4< int32 > > &&InConstraints, const TMap< FString, TConstArrayView< FRealSingle > > &WeightMaps, const FCollectionPropertyConstFacade &PropertyCollection, bool bTrimKinematicConstraints)
 
 FXPBDBendingConstraints (const FSolverParticles &InParticles, int32 ParticleOffset, int32 ParticleCount, TArray< TVec4< int32 > > &&InConstraints, const TConstArrayView< FRealSingle > &StiffnessMultipliers, const TConstArrayView< FRealSingle > &BucklingRatioMultipliers, const TConstArrayView< FRealSingle > &BucklingStiffnessMultipliers, const TConstArrayView< FRealSingle > &InDampingMultipliers, const TConstArrayView< FRealSingle > &RestAngleMap, const FSolverVec2 &InStiffness, const FSolverVec2 &InBucklingRatio, const FSolverVec2 &InBucklingStiffness, const FSolverVec2 &InDampingRatio, const FSolverVec2 &RestAngleValue, ERestAngleConstructionType RestAngleConstructionType)
 
 FXPBDBendingConstraints (const FSolverParticles &InParticles, int32 ParticleOffset, int32 ParticleCount, TArray< TVec4< int32 > > &&InConstraints, const TConstArrayView< FRealSingle > &StiffnessMultipliers, const TConstArrayView< FRealSingle > &BucklingStiffnessMultipliers, const TConstArrayView< FRealSingle > &InDampingMultipliers, const FSolverVec2 &InStiffness, const FSolverReal InBucklingRatio, const FSolverVec2 &InBucklingStiffness, const FSolverVec2 &InDampingRatio)
 
 FXPBDBendingConstraints (const FSolverParticles &InParticles, int32 ParticleOffset, int32 ParticleCount, TArray< TVec4< int32 > > &&InConstraints, const TConstArrayView< FRealSingle > &StiffnessMultipliers, const TConstArrayView< FRealSingle > &BucklingStiffnessMultipliers, const TConstArrayView< FRealSingle > &InDampingMultipliers, const FSolverVec2 &InStiffness, const FSolverReal InBucklingRatio, const FSolverVec2 &InBucklingStiffness, const FSolverVec2 &InDampingRatio, bool bTrimKinematicConstraints)
 
virtual ~FXPBDBendingConstraints () override
 
template<typename SolverParticlesOrRange >
void CHAOS_API Init (const SolverParticlesOrRange &InParticles)
 
CHAOS_API void SetProperties (const FCollectionPropertyConstFacade &PropertyCollection, const TMap< FString, TConstArrayView< FRealSingle > > &WeightMaps)
 
void SetProperties (const FSolverVec2 &InStiffness, const FSolverVec2 &InBucklingRatio, const FSolverVec2 &InBucklingStiffness, const FSolverVec2 &InDampingRatio)
 
void SetProperties (const FSolverVec2 &InStiffness, const FSolverReal InBucklingRatio, const FSolverVec2 &InBucklingStiffness, const FSolverVec2 &InDampingRatio=FSolverVec2::ZeroVector)
 
void ApplyProperties (const FSolverReal, const int32)
 
template<typename SolverParticlesOrRange >
CHAOS_API void Apply (SolverParticlesOrRange &Particles, const FSolverReal Dt) const
 
const TArray< int32 > & GetConstraintsPerColorStartIndex () const
 
CHAOS_API void AddBendingResidualAndHessian (const FSolverParticles &Particles, const int32 ConstraintIndex, const int32 ConstraintIndexLocal, const FSolverReal Dt, TVec3< FSolverReal > &ParticleResidual, Chaos::PMatrix< FSolverReal, 3, 3 > &ParticleHessian)
 
TArray< TArray< int32 > > GetConstraintsArray () const
 
CHAOS_API void AddInternalForceDifferential (const FSolverParticles &InParticles, const TArray< TVector< FSolverReal, 3 > > &DeltaParticles, TArray< TVector< FSolverReal, 3 > > &ndf)
 
CHAOS_API FSolverReal ComputeTotalEnergy (const FSolverParticles &InParticles, const FSolverReal ExplicitStiffness=-1.f)
 
void ResetRestLengths (const TConstArrayView< FSolverVec3 > &Positions, const FCollectionPropertyConstFacade &PropertyCollection, const TMap< FString, TConstArrayView< FRealSingle > > &WeightMaps)
 
template<typename SolverParticlesOrRange >
void InitColor (const SolverParticlesOrRange &InParticles)
 
template<typename SolverParticlesOrRange >
void Init (const SolverParticlesOrRange &InParticles)
 
template<typename SolverParticlesOrRange >
void Apply (SolverParticlesOrRange &Particles, const FSolverReal Dt) const
 
- Public Member Functions inherited from Chaos::Softs::FPBDBendingConstraintsBase
 FPBDBendingConstraintsBase (const FSolverParticlesRange &InParticles, TArray< TVec4< int32 > > &&InConstraints, const TConstArrayView< FRealSingle > &StiffnessMultipliers, const TConstArrayView< FRealSingle > &BucklingRatioMultipliers, const TConstArrayView< FRealSingle > &BucklingStiffnessMultipliers, const TConstArrayView< FRealSingle > &RestAngleMap, const FSolverVec2 &InStiffness, const FSolverVec2 &InBucklingRatio, const FSolverVec2 &InBucklingStiffness, const FSolverVec2 &RestAngleValue, ERestAngleConstructionType RestAngleConstructionType, bool bTrimKinematicConstraints=false, FSolverReal MaxStiffness=FPBDStiffness::DefaultPBDMaxStiffness)
 
 FPBDBendingConstraintsBase (const FSolverParticles &InParticles, int32 InParticleOffset, int32 InParticleCount, TArray< TVec4< int32 > > &&InConstraints, const TConstArrayView< FRealSingle > &StiffnessMultipliers, const TConstArrayView< FRealSingle > &BucklingRatioMultipliers, const TConstArrayView< FRealSingle > &BucklingStiffnessMultipliers, const TConstArrayView< FRealSingle > &RestAngleMap, const FSolverVec2 &InStiffness, const FSolverVec2 &InBucklingRatio, const FSolverVec2 &InBucklingStiffness, const FSolverVec2 &RestAngleValue, ERestAngleConstructionType RestAngleConstructionType, bool bTrimKinematicConstraints=false, FSolverReal MaxStiffness=FPBDStiffness::DefaultPBDMaxStiffness)
 
 FPBDBendingConstraintsBase (const FSolverParticles &InParticles, int32 InParticleOffset, int32 InParticleCount, TArray< TVec4< int32 > > &&InConstraints, const TConstArrayView< FRealSingle > &StiffnessMultipliers, const TConstArrayView< FRealSingle > &BucklingStiffnessMultipliers, const FSolverVec2 &InStiffness, const FSolverReal InBucklingRatio, const FSolverVec2 &InBucklingStiffness, bool bTrimKinematicConstraints=false, FSolverReal MaxStiffness=FPBDStiffness::DefaultPBDMaxStiffness)
 
virtual ~FPBDBendingConstraintsBase ()
 
void SetProperties (const FSolverVec2 &InStiffness, const FSolverVec2 &InBucklingRatio, const FSolverVec2 &InBucklingStiffness)
 
void SetProperties (const FSolverVec2 &InStiffness, const FSolverReal InBucklingRatio, const FSolverVec2 &InBucklingStiffness)
 
void ApplyProperties (const FSolverReal Dt, const int32 NumIterations)
 
template<typename SolverParticlesOrRange >
TStaticArray< FSolverVec3, 4 > GetGradients (const SolverParticlesOrRange &InParticles, const int32 i) const
 
template<typename SolverParticlesOrRange >
FSolverReal GetScalingFactor (const SolverParticlesOrRange &InParticles, const int32 i, const TStaticArray< FSolverVec3, 4 > &Grads, const FSolverReal ExpStiffnessValue, const FSolverReal ExpBucklingValue) const
 
bool AngleIsBuckled (const FSolverReal Angle, const FSolverReal RestAngle) const
 
bool AngleIsBuckled (const FSolverReal Angle, const int32 ConstraintIndex) const
 
template<typename SolverParticlesOrRange >
CHAOS_API void Init (const SolverParticlesOrRange &InParticles)
 
const TArray< FSolverReal > & GetRestAngles () const
 
const TArray< TVec4< int32 > > & GetConstraints () const
 
const TArray< bool > & GetIsBuckled () const
 
template<typename SolverParticlesOrRange >
void Init (const SolverParticlesOrRange &InParticles)
 

Static Public Member Functions

static bool IsEnabled (const FCollectionPropertyConstFacade &PropertyCollection)
 
- Static Public Member Functions inherited from Chaos::Softs::FPBDBendingConstraintsBase
static FSolverReal CalcAngle (const FSolverVec3 &P1, const FSolverVec3 &P2, const FSolverVec3 &P3, const FSolverVec3 &P4)
 

Static Public Attributes

static constexpr FSolverReal MinStiffness = (FSolverReal)0
 
static constexpr FSolverReal MaxStiffness = (FSolverReal)1e7
 
static constexpr FSolverReal MinDamping = (FSolverReal)0.
 
static constexpr FSolverReal MaxDamping = (FSolverReal)1000.
 

Additional Inherited Members

- Public Types inherited from Chaos::Softs::FPBDBendingConstraintsBase
enum class  ERestAngleConstructionType : uint8 { Use3DRestAngles , FlatnessRatio , ExplicitRestAngles }
 
- Protected Member Functions inherited from Chaos::Softs::FPBDBendingConstraintsBase
CHAOS_API void CalculateRestAngles (const TConstArrayView< FSolverVec3 > &InPositions, int32 InParticleOffset, int32 InParticleCount, const TConstArrayView< FRealSingle > &RestAngleMap, const FSolverVec2 &RestAngleValue, ERestAngleConstructionType RestAngleConstructionType)
 
- Static Protected Member Functions inherited from Chaos::Softs::FPBDBendingConstraintsBase
template<class TNum >
static TNum SafeDivide (const TNum &Numerator, const FSolverReal &Denominator)
 
static TStaticArray< FSolverVec3, 4 > CalcGradients (const FSolverVec3 &P1, const FSolverVec3 &P2, const FSolverVec3 &P3, const FSolverVec3 &P4, FSolverReal *OutAngle=nullptr)
 
- Protected Attributes inherited from Chaos::Softs::FPBDBendingConstraintsBase
TArray< TVec4< int32 > > Constraints
 
TArray< TVec2< int32 > > ConstraintSharedEdges
 
const int32 ParticleOffset
 
const int32 ParticleCount
 
FPBDStiffness Stiffness
 
FPBDWeightMap BucklingRatioWeighted
 
FPBDStiffness BucklingStiffness
 
TArray< FSolverRealRestAngles
 
TArray< boolIsBuckled
 
FSolverReal BucklingRatio
 

Constructor & Destructor Documentation

◆ FXPBDBendingConstraints() [1/7]

Chaos::Softs::FXPBDBendingConstraints::FXPBDBendingConstraints ( const FSolverParticlesRange InParticles,
TArray< TVec4< int32 > > &&  InConstraints,
const TMap< FString, TConstArrayView< FRealSingle > > &  WeightMaps,
const FCollectionPropertyConstFacade PropertyCollection 
)
inline

◆ FXPBDBendingConstraints() [2/7]

Chaos::Softs::FXPBDBendingConstraints::FXPBDBendingConstraints ( const FSolverParticlesRange InParticles,
TArray< TVec4< int32 > > &&  InConstraints,
const TMap< FString, TConstArrayView< FRealSingle > > &  WeightMaps,
const FCollectionPropertyConstFacade PropertyCollection,
bool  bTrimKinematicConstraints 
)
inline

◆ FXPBDBendingConstraints() [3/7]

Chaos::Softs::FXPBDBendingConstraints::FXPBDBendingConstraints ( const FSolverParticles InParticles,
int32  InParticleOffset,
int32  InParticleCount,
TArray< TVec4< int32 > > &&  InConstraints,
const TMap< FString, TConstArrayView< FRealSingle > > &  WeightMaps,
const FCollectionPropertyConstFacade PropertyCollection 
)
inline

◆ FXPBDBendingConstraints() [4/7]

Chaos::Softs::FXPBDBendingConstraints::FXPBDBendingConstraints ( const FSolverParticles InParticles,
int32  InParticleOffset,
int32  InParticleCount,
TArray< TVec4< int32 > > &&  InConstraints,
const TMap< FString, TConstArrayView< FRealSingle > > &  WeightMaps,
const FCollectionPropertyConstFacade PropertyCollection,
bool  bTrimKinematicConstraints 
)
inline

◆ FXPBDBendingConstraints() [5/7]

Chaos::Softs::FXPBDBendingConstraints::FXPBDBendingConstraints ( const FSolverParticles InParticles,
int32  ParticleOffset,
int32  ParticleCount,
TArray< TVec4< int32 > > &&  InConstraints,
const TConstArrayView< FRealSingle > &  StiffnessMultipliers,
const TConstArrayView< FRealSingle > &  BucklingRatioMultipliers,
const TConstArrayView< FRealSingle > &  BucklingStiffnessMultipliers,
const TConstArrayView< FRealSingle > &  InDampingMultipliers,
const TConstArrayView< FRealSingle > &  RestAngleMap,
const FSolverVec2 InStiffness,
const FSolverVec2 InBucklingRatio,
const FSolverVec2 InBucklingStiffness,
const FSolverVec2 InDampingRatio,
const FSolverVec2 RestAngleValue,
ERestAngleConstructionType  RestAngleConstructionType 
)
inline

◆ FXPBDBendingConstraints() [6/7]

Chaos::Softs::FXPBDBendingConstraints::FXPBDBendingConstraints ( const FSolverParticles InParticles,
int32  ParticleOffset,
int32  ParticleCount,
TArray< TVec4< int32 > > &&  InConstraints,
const TConstArrayView< FRealSingle > &  StiffnessMultipliers,
const TConstArrayView< FRealSingle > &  BucklingStiffnessMultipliers,
const TConstArrayView< FRealSingle > &  InDampingMultipliers,
const FSolverVec2 InStiffness,
const FSolverReal  InBucklingRatio,
const FSolverVec2 InBucklingStiffness,
const FSolverVec2 InDampingRatio 
)
inline

◆ FXPBDBendingConstraints() [7/7]

Chaos::Softs::FXPBDBendingConstraints::FXPBDBendingConstraints ( const FSolverParticles InParticles,
int32  ParticleOffset,
int32  ParticleCount,
TArray< TVec4< int32 > > &&  InConstraints,
const TConstArrayView< FRealSingle > &  StiffnessMultipliers,
const TConstArrayView< FRealSingle > &  BucklingStiffnessMultipliers,
const TConstArrayView< FRealSingle > &  InDampingMultipliers,
const FSolverVec2 InStiffness,
const FSolverReal  InBucklingRatio,
const FSolverVec2 InBucklingStiffness,
const FSolverVec2 InDampingRatio,
bool  bTrimKinematicConstraints 
)
inline

◆ ~FXPBDBendingConstraints()

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

Member Function Documentation

◆ AddBendingResidualAndHessian()

void Chaos::Softs::FXPBDBendingConstraints::AddBendingResidualAndHessian ( const FSolverParticles Particles,
const int32  ConstraintIndex,
const int32  ConstraintIndexLocal,
const FSolverReal  Dt,
TVec3< FSolverReal > &  ParticleResidual,
Chaos::PMatrix< FSolverReal, 3, 3 > &  ParticleHessian 
)

◆ AddInternalForceDifferential()

void Chaos::Softs::FXPBDBendingConstraints::AddInternalForceDifferential ( const FSolverParticles InParticles,
const TArray< TVector< FSolverReal, 3 > > &  DeltaParticles,
TArray< TVector< FSolverReal, 3 > > &  ndf 
)

◆ Apply() [1/2]

void Chaos::Softs::FXPBDBendingConstraints::Apply ( SolverParticlesOrRange Particles,
const FSolverReal  Dt 
) const

◆ Apply() [2/2]

CHAOS_API void Chaos::Softs::FXPBDBendingConstraints::Apply ( SolverParticlesOrRange Particles,
const FSolverReal  Dt 
) const

◆ ApplyProperties()

void Chaos::Softs::FXPBDBendingConstraints::ApplyProperties ( const FSolverReal  ,
const int32   
)
inline

◆ ComputeTotalEnergy()

FSolverReal Chaos::Softs::FXPBDBendingConstraints::ComputeTotalEnergy ( const FSolverParticles InParticles,
const FSolverReal  ExplicitStiffness = -1.f 
)

◆ GetConstraintsArray()

TArray< TArray< int32 > > Chaos::Softs::FXPBDBendingConstraints::GetConstraintsArray ( ) const
inline

◆ GetConstraintsPerColorStartIndex()

const TArray< int32 > & Chaos::Softs::FXPBDBendingConstraints::GetConstraintsPerColorStartIndex ( ) const
inline

◆ Init() [1/2]

void Chaos::Softs::FXPBDBendingConstraints::Init ( const SolverParticlesOrRange InParticles)

◆ Init() [2/2]

void CHAOS_API Chaos::Softs::FXPBDBendingConstraints::Init ( const SolverParticlesOrRange InParticles)

◆ InitColor()

void Chaos::Softs::FXPBDBendingConstraints::InitColor ( const SolverParticlesOrRange InParticles)

◆ IsEnabled()

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

◆ ResetRestLengths()

void Chaos::Softs::FXPBDBendingConstraints::ResetRestLengths ( const TConstArrayView< FSolverVec3 > &  Positions,
const FCollectionPropertyConstFacade PropertyCollection,
const TMap< FString, TConstArrayView< FRealSingle > > &  WeightMaps 
)
inline

◆ SetProperties() [1/3]

void Chaos::Softs::FXPBDBendingConstraints::SetProperties ( const FCollectionPropertyConstFacade PropertyCollection,
const TMap< FString, TConstArrayView< FRealSingle > > &  WeightMaps 
)

◆ SetProperties() [2/3]

void Chaos::Softs::FXPBDBendingConstraints::SetProperties ( const FSolverVec2 InStiffness,
const FSolverReal  InBucklingRatio,
const FSolverVec2 InBucklingStiffness,
const FSolverVec2 InDampingRatio = FSolverVec2::ZeroVector 
)
inline

◆ SetProperties() [3/3]

void Chaos::Softs::FXPBDBendingConstraints::SetProperties ( const FSolverVec2 InStiffness,
const FSolverVec2 InBucklingRatio,
const FSolverVec2 InBucklingStiffness,
const FSolverVec2 InDampingRatio 
)
inline

Member Data Documentation

◆ MaxDamping

constexpr FSolverReal Chaos::Softs::FXPBDBendingConstraints::MaxDamping = (FSolverReal)1000.
staticconstexpr

◆ MaxStiffness

constexpr FSolverReal Chaos::Softs::FXPBDBendingConstraints::MaxStiffness = (FSolverReal)1e7
staticconstexpr

◆ MinDamping

constexpr FSolverReal Chaos::Softs::FXPBDBendingConstraints::MinDamping = (FSolverReal)0.
staticconstexpr

◆ MinStiffness

constexpr FSolverReal Chaos::Softs::FXPBDBendingConstraints::MinStiffness = (FSolverReal)0
staticconstexpr

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