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

#include <PBDBendingConstraintsBase.h>

+ Inheritance diagram for Chaos::Softs::FPBDBendingConstraintsBase:

Public Types

enum class  ERestAngleConstructionType : uint8 { Use3DRestAngles , FlatnessRatio , ExplicitRestAngles }
 

Public Member Functions

 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 FSolverReal CalcAngle (const FSolverVec3 &P1, const FSolverVec3 &P2, const FSolverVec3 &P3, const FSolverVec3 &P4)
 

Protected Member Functions

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

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

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
 

Member Enumeration Documentation

◆ ERestAngleConstructionType

Enumerator
Use3DRestAngles 
FlatnessRatio 
ExplicitRestAngles 

Constructor & Destructor Documentation

◆ FPBDBendingConstraintsBase() [1/3]

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 
)
inline

◆ FPBDBendingConstraintsBase() [2/3]

Chaos::Softs::FPBDBendingConstraintsBase::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 
)
inline

◆ FPBDBendingConstraintsBase() [3/3]

Chaos::Softs::FPBDBendingConstraintsBase::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 
)
inline

◆ ~FPBDBendingConstraintsBase()

virtual Chaos::Softs::FPBDBendingConstraintsBase::~FPBDBendingConstraintsBase ( )
inlinevirtual

Member Function Documentation

◆ AngleIsBuckled() [1/2]

bool Chaos::Softs::FPBDBendingConstraintsBase::AngleIsBuckled ( const FSolverReal  Angle,
const FSolverReal  RestAngle 
) const
inline

◆ AngleIsBuckled() [2/2]

bool Chaos::Softs::FPBDBendingConstraintsBase::AngleIsBuckled ( const FSolverReal  Angle,
const int32  ConstraintIndex 
) const
inline

◆ ApplyProperties()

void Chaos::Softs::FPBDBendingConstraintsBase::ApplyProperties ( const FSolverReal  Dt,
const int32  NumIterations 
)
inline

◆ CalcAngle()

static FSolverReal Chaos::Softs::FPBDBendingConstraintsBase::CalcAngle ( const FSolverVec3 P1,
const FSolverVec3 P2,
const FSolverVec3 P3,
const FSolverVec3 P4 
)
inlinestatic

◆ CalcGradients()

static TStaticArray< FSolverVec3, 4 > Chaos::Softs::FPBDBendingConstraintsBase::CalcGradients ( const FSolverVec3 P1,
const FSolverVec3 P2,
const FSolverVec3 P3,
const FSolverVec3 P4,
FSolverReal OutAngle = nullptr 
)
inlinestaticprotected

◆ CalculateRestAngles()

void Chaos::Softs::FPBDBendingConstraintsBase::CalculateRestAngles ( const TConstArrayView< FSolverVec3 > &  InPositions,
int32  InParticleOffset,
int32  InParticleCount,
const TConstArrayView< FRealSingle > &  RestAngleMap,
const FSolverVec2 RestAngleValue,
ERestAngleConstructionType  RestAngleConstructionType 
)
protected

◆ GetConstraints()

const TArray< TVec4< int32 > > & Chaos::Softs::FPBDBendingConstraintsBase::GetConstraints ( ) const
inline

◆ GetGradients()

TStaticArray< FSolverVec3, 4 > Chaos::Softs::FPBDBendingConstraintsBase::GetGradients ( const SolverParticlesOrRange InParticles,
const int32  i 
) const
inline

◆ GetIsBuckled()

const TArray< bool > & Chaos::Softs::FPBDBendingConstraintsBase::GetIsBuckled ( ) const
inline

◆ GetRestAngles()

const TArray< FSolverReal > & Chaos::Softs::FPBDBendingConstraintsBase::GetRestAngles ( ) const
inline

◆ GetScalingFactor()

FSolverReal Chaos::Softs::FPBDBendingConstraintsBase::GetScalingFactor ( const SolverParticlesOrRange InParticles,
const int32  i,
const TStaticArray< FSolverVec3, 4 > &  Grads,
const FSolverReal  ExpStiffnessValue,
const FSolverReal  ExpBucklingValue 
) const
inline

◆ Init() [1/2]

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

◆ Init() [2/2]

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

◆ SafeDivide()

template<class TNum >
static TNum Chaos::Softs::FPBDBendingConstraintsBase::SafeDivide ( const TNum &  Numerator,
const FSolverReal Denominator 
)
inlinestaticprotected

◆ SetProperties() [1/2]

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

◆ SetProperties() [2/2]

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

Member Data Documentation

◆ BucklingRatio

FSolverReal Chaos::Softs::FPBDBendingConstraintsBase::BucklingRatio
protected

◆ BucklingRatioWeighted

FPBDWeightMap Chaos::Softs::FPBDBendingConstraintsBase::BucklingRatioWeighted
protected

◆ BucklingStiffness

FPBDStiffness Chaos::Softs::FPBDBendingConstraintsBase::BucklingStiffness
protected

◆ Constraints

TArray<TVec4<int32> > Chaos::Softs::FPBDBendingConstraintsBase::Constraints
protected

◆ ConstraintSharedEdges

TArray<TVec2<int32> > Chaos::Softs::FPBDBendingConstraintsBase::ConstraintSharedEdges
protected

◆ IsBuckled

TArray<bool> Chaos::Softs::FPBDBendingConstraintsBase::IsBuckled
protected

◆ ParticleCount

const int32 Chaos::Softs::FPBDBendingConstraintsBase::ParticleCount
protected

◆ ParticleOffset

const int32 Chaos::Softs::FPBDBendingConstraintsBase::ParticleOffset
protected

◆ RestAngles

TArray<FSolverReal> Chaos::Softs::FPBDBendingConstraintsBase::RestAngles
protected

◆ Stiffness

FPBDStiffness Chaos::Softs::FPBDBendingConstraintsBase::Stiffness
protected

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