UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType > Struct Template Reference

#include <GaussSeidelWeakConstraints.h>

+ Inheritance diagram for Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >:

Classes

struct  FGaussSeidelConstraintHandle
 

Public Member Functions

 FGaussSeidelWeakConstraints (const TArray< TArray< int32 > > &InIndices, const TArray< TArray< T > > &InWeights, const TArray< T > &InStiffness, const TArray< TArray< int32 > > &InSecondIndices, const TArray< TArray< T > > &InSecondWeights, const FDeformableXPBDWeakConstraintParams &InParams)
 
virtual ~FGaussSeidelWeakConstraints ()
 
void ComputeInitialWCData (const ParticleType &InParticles)
 
TVec3< T > ComputeSpringEdge (const ParticleType &InParticles, const TArray< int32 > &LocalIndices, const TArray< int32 > &LocalSecondIndices, const TArray< T > &Weight, const TArray< T > &SecondWeight, bool bUseParticleX) const
 
void AddWCHessian (const int32 p, const T Dt, Chaos::PMatrix< T, 3, 3 > &ParticleHessian) const
 
void AddExtraConstraints (const TArray< TArray< int32 > > &InIndices, const TArray< TArray< T > > &InWeights, const TArray< T > &InStiffness, const TArray< TArray< int32 > > &InSecondIndices, const TArray< TArray< T > > &InSecondWeights, const TArray< bool > &InIsAnisotrpic, const TArray< bool > &InIsZeroRestLength)
 
void Resize (int32 Size)
 
void UpdatePointTriangleCollisionWCData (const FSolverParticles &Particles)
 
void VisualizeAllBindings (const FSolverParticles &InParticles, const T Dt) const
 
void Init (const FSolverParticles &InParticles, const T Dt)
 
void UpdateTriangleNormalAndNodalWeight (const FSolverParticles &InParticles, bool bUseParticleX)
 
void CollisionDetectionBVH (const FSolverParticles &Particles, const TArray< TVec3< int32 > > &SurfaceElements, const TArray< int32 > &ComponentIndex, float DetectRadius=1.f, float PositionTargetStiffness=10000.f, bool UseAnisotropicSpring=true)
 
template<typename SpatialAccelerator >
void CollisionDetectionSpatialHash (const FSolverParticles &Particles, const TArray< int32 > &SurfaceVertices, const FTriangleMesh &TriangleMesh, const TArray< int32 > &ComponentIndex, const SpatialAccelerator &Spatial, float DetectRadius=1.f, float PositionTargetStiffness=10000.f, bool UseAnisotropicSpring=true)
 
template<typename SpatialAccelerator >
void CollisionDetectionSpatialHashInComponent (const FSolverParticles &Particles, const TArray< int32 > &SurfaceVertices, const FTriangleMesh &TriangleMesh, const TMap< int32, TSet< int32 > > &ExcludeMap, const SpatialAccelerator &Spatial, float DetectRadius=0.f, float PositionTargetStiffness=10000.f, bool UseAnisotropicSpring=true)
 
void ComputeCollisionWCDataSimplified (TArray< TArray< int32 > > &ExtraConstraints, TArray< TArray< int32 > > &ExtraWCIncidentElements, TArray< TArray< int32 > > &ExtraWCIncidentElementsLocal)
 
const TArray< TArray< int32 > > & GetStaticConstraintArrays (TArray< TArray< int32 > > &IncidentElements, TArray< TArray< int32 > > &IncidentElementsLocal) const
 
TArray< TArray< int32 > > GetDynamicConstraintArrays (TArray< TArray< int32 > > &IncidentElements, TArray< TArray< int32 > > &IncidentElementsLocal) const
 
void AddZeroRestLengthWCResidualAndHessian (const ParticleType &InParticles, const int32 ConstraintIndex, const int32 LocalIndex, const T Dt, TVec3< T > &ParticleResidual, Chaos::PMatrix< T, 3, 3 > &ParticleHessian) const
 
void AddWCResidual (const ParticleType &InParticles, const int32 ConstraintIndex, const int32 LocalIndex, const T Dt, TVec3< T > &ParticleResidual, Chaos::PMatrix< T, 3, 3 > &ParticleHessian) const
 

Public Attributes

TGaussSeidelWeakConstraintData< T > ConstraintsData
 
TArray< TArray< T > > NodalWeights
 
TArray< TArray< int32 > > WCIncidentElements
 
TArray< TArray< int32 > > WCIncidentElementsLocal
 
FDeformableXPBDWeakConstraintParams DebugDrawParams
 
int32 InitialWCSize
 
TArray< TArray< T > > NoCollisionNodalWeights
 
TArray< TArray< int32 > > NoCollisionConstraints
 
TArray< TArray< int32 > > NoCollisionWCIncidentElements
 
TArray< TArray< int32 > > NoCollisionWCIncidentElementsLocal
 

Constructor & Destructor Documentation

◆ FGaussSeidelWeakConstraints()

template<typename T , typename ParticleType >
Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::FGaussSeidelWeakConstraints ( const TArray< TArray< int32 > > &  InIndices,
const TArray< TArray< T > > &  InWeights,
const TArray< T > &  InStiffness,
const TArray< TArray< int32 > > &  InSecondIndices,
const TArray< TArray< T > > &  InSecondWeights,
const FDeformableXPBDWeakConstraintParams InParams 
)
inline

◆ ~FGaussSeidelWeakConstraints()

template<typename T , typename ParticleType >
virtual Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::~FGaussSeidelWeakConstraints ( )
inlinevirtual

Member Function Documentation

◆ AddExtraConstraints()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::AddExtraConstraints ( const TArray< TArray< int32 > > &  InIndices,
const TArray< TArray< T > > &  InWeights,
const TArray< T > &  InStiffness,
const TArray< TArray< int32 > > &  InSecondIndices,
const TArray< TArray< T > > &  InSecondWeights,
const TArray< bool > &  InIsAnisotrpic,
const TArray< bool > &  InIsZeroRestLength 
)
inline

◆ AddWCHessian()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::AddWCHessian ( const int32  p,
const T  Dt,
Chaos::PMatrix< T, 3, 3 > &  ParticleHessian 
) const
inline

◆ AddWCResidual()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::AddWCResidual ( const ParticleType &  InParticles,
const int32  ConstraintIndex,
const int32  LocalIndex,
const T  Dt,
TVec3< T > &  ParticleResidual,
Chaos::PMatrix< T, 3, 3 > &  ParticleHessian 
) const
inline

◆ AddZeroRestLengthWCResidualAndHessian()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::AddZeroRestLengthWCResidualAndHessian ( const ParticleType &  InParticles,
const int32  ConstraintIndex,
const int32  LocalIndex,
const T  Dt,
TVec3< T > &  ParticleResidual,
Chaos::PMatrix< T, 3, 3 > &  ParticleHessian 
) const
inline

◆ CollisionDetectionBVH()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::CollisionDetectionBVH ( const FSolverParticles Particles,
const TArray< TVec3< int32 > > &  SurfaceElements,
const TArray< int32 > &  ComponentIndex,
float  DetectRadius = 1.f,
float  PositionTargetStiffness = 10000.f,
bool  UseAnisotropicSpring = true 
)
inline

◆ CollisionDetectionSpatialHash()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::CollisionDetectionSpatialHash ( const FSolverParticles Particles,
const TArray< int32 > &  SurfaceVertices,
const FTriangleMesh TriangleMesh,
const TArray< int32 > &  ComponentIndex,
const SpatialAccelerator Spatial,
float  DetectRadius = 1.f,
float  PositionTargetStiffness = 10000.f,
bool  UseAnisotropicSpring = true 
)
inline

◆ CollisionDetectionSpatialHashInComponent()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::CollisionDetectionSpatialHashInComponent ( const FSolverParticles Particles,
const TArray< int32 > &  SurfaceVertices,
const FTriangleMesh TriangleMesh,
const TMap< int32, TSet< int32 > > &  ExcludeMap,
const SpatialAccelerator Spatial,
float  DetectRadius = 0.f,
float  PositionTargetStiffness = 10000.f,
bool  UseAnisotropicSpring = true 
)
inline

◆ ComputeCollisionWCDataSimplified()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::ComputeCollisionWCDataSimplified ( TArray< TArray< int32 > > &  ExtraConstraints,
TArray< TArray< int32 > > &  ExtraWCIncidentElements,
TArray< TArray< int32 > > &  ExtraWCIncidentElementsLocal 
)
inline

◆ ComputeInitialWCData()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::ComputeInitialWCData ( const ParticleType &  InParticles)
inline

◆ ComputeSpringEdge()

template<typename T , typename ParticleType >
TVec3< T > Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::ComputeSpringEdge ( const ParticleType &  InParticles,
const TArray< int32 > &  LocalIndices,
const TArray< int32 > &  LocalSecondIndices,
const TArray< T > &  Weight,
const TArray< T > &  SecondWeight,
bool  bUseParticleX 
) const
inline

◆ GetDynamicConstraintArrays()

template<typename T , typename ParticleType >
TArray< TArray< int32 > > Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::GetDynamicConstraintArrays ( TArray< TArray< int32 > > &  IncidentElements,
TArray< TArray< int32 > > &  IncidentElementsLocal 
) const
inline

◆ GetStaticConstraintArrays()

template<typename T , typename ParticleType >
const TArray< TArray< int32 > > & Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::GetStaticConstraintArrays ( TArray< TArray< int32 > > &  IncidentElements,
TArray< TArray< int32 > > &  IncidentElementsLocal 
) const
inline

◆ Init()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::Init ( const FSolverParticles InParticles,
const T  Dt 
)
inline

◆ Resize()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::Resize ( int32  Size)
inline

◆ UpdatePointTriangleCollisionWCData()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::UpdatePointTriangleCollisionWCData ( const FSolverParticles Particles)
inline

◆ UpdateTriangleNormalAndNodalWeight()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::UpdateTriangleNormalAndNodalWeight ( const FSolverParticles InParticles,
bool  bUseParticleX 
)
inline

◆ VisualizeAllBindings()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::VisualizeAllBindings ( const FSolverParticles InParticles,
const T  Dt 
) const
inline

Member Data Documentation

◆ ConstraintsData

template<typename T , typename ParticleType >
TGaussSeidelWeakConstraintData<T> Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::ConstraintsData

◆ DebugDrawParams

template<typename T , typename ParticleType >
FDeformableXPBDWeakConstraintParams Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::DebugDrawParams

◆ InitialWCSize

template<typename T , typename ParticleType >
int32 Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::InitialWCSize

◆ NoCollisionConstraints

template<typename T , typename ParticleType >
TArray<TArray<int32> > Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::NoCollisionConstraints

◆ NoCollisionNodalWeights

template<typename T , typename ParticleType >
TArray<TArray<T> > Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::NoCollisionNodalWeights

◆ NoCollisionWCIncidentElements

template<typename T , typename ParticleType >
TArray<TArray<int32> > Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::NoCollisionWCIncidentElements

◆ NoCollisionWCIncidentElementsLocal

template<typename T , typename ParticleType >
TArray<TArray<int32> > Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::NoCollisionWCIncidentElementsLocal

◆ NodalWeights

template<typename T , typename ParticleType >
TArray<TArray<T> > Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::NodalWeights

◆ WCIncidentElements

template<typename T , typename ParticleType >
TArray<TArray<int32> > Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::WCIncidentElements

◆ WCIncidentElementsLocal

template<typename T , typename ParticleType >
TArray<TArray<int32> > Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >::WCIncidentElementsLocal

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