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

#include <PBDBendingConstraints.h>

+ Inheritance diagram for Chaos::Softs::FPBDBendingConstraints:

Public Member Functions

 FPBDBendingConstraints (const FSolverParticlesRange &InParticles, TArray< TVec4< int32 > > &&InConstraints, const TMap< FString, TConstArrayView< FRealSingle > > &WeightMaps, const FCollectionPropertyConstFacade &PropertyCollection, bool bTrimKinematicConstraints=false)
 
 FPBDBendingConstraints (const FSolverParticles &InParticles, int32 InParticleOffset, int32 InParticleCount, TArray< TVec4< int32 > > &&InConstraints, const TMap< FString, TConstArrayView< FRealSingle > > &WeightMaps, const FCollectionPropertyConstFacade &PropertyCollection, bool bTrimKinematicConstraints=false)
 
 FPBDBendingConstraints (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 > &RestAngleMap, const FSolverVec2 &InStiffness, const FSolverVec2 &InBucklingRatio, const FSolverVec2 &InBucklingStiffness, const FSolverVec2 &RestAngleValue, ERestAngleConstructionType RestAngleConstructionType, bool bTrimKinematicConstraints=false)
 
 FPBDBendingConstraints (const FSolverParticles &InParticles, int32 ParticleOffset, int32 ParticleCount, TArray< TVec4< int32 > > &&InConstraints, const TConstArrayView< FRealSingle > &StiffnessMultipliers, const TConstArrayView< FRealSingle > &BucklingStiffnessMultipliers, const FSolverVec2 &InStiffness, const FSolverReal InBucklingRatio, const FSolverVec2 &InBucklingStiffness, bool bTrimKinematicConstraints=false)
 
virtual ~FPBDBendingConstraints () override
 
CHAOS_API void SetProperties (const FCollectionPropertyConstFacade &PropertyCollection, const TMap< FString, TConstArrayView< FRealSingle > > &WeightMaps)
 
template<typename SolverParticlesOrRange >
CHAOS_API void Apply (SolverParticlesOrRange &InParticles, const FSolverReal Dt) const
 
const TArray< int32 > & GetConstraintsPerColorStartIndex () const
 
void ResetRestLengths (const TConstArrayView< FSolverVec3 > &Positions, const FCollectionPropertyConstFacade &PropertyCollection, const TMap< FString, TConstArrayView< FRealSingle > > &WeightMaps)
 
 UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME (BendingElementStiffness, float)
 
 UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME (BucklingRatio, float)
 
 UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME (BucklingStiffness, float)
 
 UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME (FlatnessRatio, float)
 
 UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME (RestAngle, float)
 
 UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME (RestAngleType, int32)
 
template<typename SolverParticlesOrRange >
void InitColor (const SolverParticlesOrRange &InParticles)
 
template<typename SolverParticlesOrRange >
void Apply (SolverParticlesOrRange &Particles, const FSolverReal Dt) const
 
void SetProperties (const FSolverVec2 &InStiffness, const FSolverVec2 &InBucklingRatio, const FSolverVec2 &InBucklingStiffness)
 
void SetProperties (const FSolverVec2 &InStiffness, const FSolverReal InBucklingRatio, const FSolverVec2 &InBucklingStiffness)
 
- 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)
 

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

◆ FPBDBendingConstraints() [1/4]

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

◆ FPBDBendingConstraints() [2/4]

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

◆ FPBDBendingConstraints() [3/4]

Chaos::Softs::FPBDBendingConstraints::FPBDBendingConstraints ( 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 > &  RestAngleMap,
const FSolverVec2 InStiffness,
const FSolverVec2 InBucklingRatio,
const FSolverVec2 InBucklingStiffness,
const FSolverVec2 RestAngleValue,
ERestAngleConstructionType  RestAngleConstructionType,
bool  bTrimKinematicConstraints = false 
)
inline

◆ FPBDBendingConstraints() [4/4]

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

◆ ~FPBDBendingConstraints()

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

Member Function Documentation

◆ Apply() [1/2]

CHAOS_API void Chaos::Softs::FPBDBendingConstraints::Apply ( SolverParticlesOrRange InParticles,
const FSolverReal  Dt 
) const

◆ Apply() [2/2]

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

◆ GetConstraintsPerColorStartIndex()

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

◆ InitColor()

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

◆ IsEnabled()

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

◆ ResetRestLengths()

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

◆ SetProperties() [1/3]

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

◆ SetProperties() [2/3]

void Chaos::Softs::FPBDBendingConstraintsBase::SetProperties ( const FSolverVec2 InStiffness,
const FSolverReal  InBucklingRatio,
const FSolverVec2 InBucklingStiffness 
)
inline

◆ SetProperties() [3/3]

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

◆ UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME() [1/6]

Chaos::Softs::FPBDBendingConstraints::UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME ( BendingElementStiffness  ,
float   
)

◆ UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME() [2/6]

Chaos::Softs::FPBDBendingConstraints::UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME ( BucklingRatio  ,
float   
)

◆ UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME() [3/6]

Chaos::Softs::FPBDBendingConstraints::UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME ( BucklingStiffness  ,
float   
)

◆ UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME() [4/6]

Chaos::Softs::FPBDBendingConstraints::UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME ( FlatnessRatio  ,
float   
)

◆ UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME() [5/6]

Chaos::Softs::FPBDBendingConstraints::UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME ( RestAngle  ,
float   
)

◆ UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME() [6/6]

Chaos::Softs::FPBDBendingConstraints::UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME ( RestAngleType  ,
int32   
)

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