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

#include <GaussSeidelDynamicWeakConstraints.h>

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

Public Types

typedef FGaussSeidelWeakConstraints< T, ParticleType > Base
 
typedef FGaussSeidelWeakConstraints< T, ParticleType >::FGaussSeidelConstraintHandle GSConstraintHandle
 

Public Member Functions

 FGaussSeidelDynamicWeakConstraints (const FDeformableXPBDWeakConstraintParams &InParams)
 
virtual ~FGaussSeidelDynamicWeakConstraints ()
 
const GSConstraintHandleAddSingleParticleTetrahedraConstraint (const GeometryCollection::Facades::FTetrahedralFacade &InTargetGeom, const ParticleType &AllParticles, const GeometryCollection::Facades::TetrahedralParticleEmbedding &InIntersection, const int32 InConstraintIndex, const Chaos::FRange &SourceRange, const Chaos::FRange &TargetRange, const T PositionTargetStiffness)
 
void RemoveSingleConstraint (const GSConstraintHandle *DeletedSingleConstraint)
 
TArray< const GSConstraintHandle * > AddParticleTetrahedraConstraints (const GeometryCollection::Facades::FTetrahedralFacade &InTargetGeom, const ParticleType &AllParticles, const TArray< GeometryCollection::Facades::TetrahedralParticleEmbedding > &InIntersections, const Chaos::FRange &SourceRange, const Chaos::FRange &TargetRange, const T ConstraintStiffness)
 
void RemoveConstraints (const TArray< const GSConstraintHandle * > &DeletedPtrs)
 
void ReComputeNodalWeights (const TSet< int32 > &DirtyVerts)
 
void AdjustStiffness (const TArray< const GSConstraintHandle * > ConstraintHandles, const TArray< T > &StiffnessPerConstraint, const ParticleType &Particles)
 
- Public Member Functions inherited from 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)
 
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

TArrayCollectionArray< GSConstraintHandle * > Handles
 
TGaussSeidelWeakConstraintData< T > ConstraintsData
 
TArray< TArray< T > > NodalWeights
 
TArray< TArray< int32 > > WCIncidentElements
 
TArray< TArray< int32 > > WCIncidentElementsLocal
 
- Public Attributes inherited from Chaos::Softs::FGaussSeidelWeakConstraints< T, ParticleType >
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
 

Member Typedef Documentation

◆ Base

template<typename T , typename ParticleType >
typedef FGaussSeidelWeakConstraints<T, ParticleType> Chaos::Softs::FGaussSeidelDynamicWeakConstraints< T, ParticleType >::Base

◆ GSConstraintHandle

template<typename T , typename ParticleType >
typedef FGaussSeidelWeakConstraints<T,ParticleType>::FGaussSeidelConstraintHandle Chaos::Softs::FGaussSeidelDynamicWeakConstraints< T, ParticleType >::GSConstraintHandle

Constructor & Destructor Documentation

◆ FGaussSeidelDynamicWeakConstraints()

template<typename T , typename ParticleType >
Chaos::Softs::FGaussSeidelDynamicWeakConstraints< T, ParticleType >::FGaussSeidelDynamicWeakConstraints ( const FDeformableXPBDWeakConstraintParams InParams)
inline

◆ ~FGaussSeidelDynamicWeakConstraints()

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

Member Function Documentation

◆ AddParticleTetrahedraConstraints()

template<typename T , typename ParticleType >
TArray< const GSConstraintHandle * > Chaos::Softs::FGaussSeidelDynamicWeakConstraints< T, ParticleType >::AddParticleTetrahedraConstraints ( const GeometryCollection::Facades::FTetrahedralFacade InTargetGeom,
const ParticleType &  AllParticles,
const TArray< GeometryCollection::Facades::TetrahedralParticleEmbedding > &  InIntersections,
const Chaos::FRange SourceRange,
const Chaos::FRange TargetRange,
const T  ConstraintStiffness 
)
inline

◆ AddSingleParticleTetrahedraConstraint()

template<typename T , typename ParticleType >
const GSConstraintHandle * Chaos::Softs::FGaussSeidelDynamicWeakConstraints< T, ParticleType >::AddSingleParticleTetrahedraConstraint ( const GeometryCollection::Facades::FTetrahedralFacade InTargetGeom,
const ParticleType &  AllParticles,
const GeometryCollection::Facades::TetrahedralParticleEmbedding InIntersection,
const int32  InConstraintIndex,
const Chaos::FRange SourceRange,
const Chaos::FRange TargetRange,
const T  PositionTargetStiffness 
)
inline

◆ AdjustStiffness()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelDynamicWeakConstraints< T, ParticleType >::AdjustStiffness ( const TArray< const GSConstraintHandle * >  ConstraintHandles,
const TArray< T > &  StiffnessPerConstraint,
const ParticleType &  Particles 
)
inline

◆ ReComputeNodalWeights()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelDynamicWeakConstraints< T, ParticleType >::ReComputeNodalWeights ( const TSet< int32 > &  DirtyVerts)
inline

◆ RemoveConstraints()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelDynamicWeakConstraints< T, ParticleType >::RemoveConstraints ( const TArray< const GSConstraintHandle * > &  DeletedPtrs)
inline

◆ RemoveSingleConstraint()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelDynamicWeakConstraints< T, ParticleType >::RemoveSingleConstraint ( const GSConstraintHandle DeletedSingleConstraint)
inline

Member Data Documentation

◆ ConstraintsData

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

◆ Handles

◆ 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: