UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PBDAxialSpringConstraints.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4// HEADER_UNIT_SKIP - Internal
5
8
9namespace Chaos
10{
11 class FTriangleMesh;
12}
13
14namespace Chaos::Softs
15{
16
18{
20
21public:
41
65
66 virtual ~FPBDAxialSpringConstraints() override {}
67
68 template<typename SolverParticlesOrRange>
70
71protected:
73 using Base::Barys;
74 using Base::Stiffness;
77
78 template<typename SolverParticlesOrRange>
80
81private:
82 template<typename SolverParticlesOrRange>
83 void ApplyHelper(SolverParticlesOrRange& InParticles, const FSolverReal Dt, const int32 ConstraintIndex, const FSolverReal ExpStiffnessValue) const;
84
85 TArray<int32> ConstraintsPerColorStartIndex; // Constraints are ordered so each batch is contiguous. This is ColorNum + 1 length so it can be used as start and end.
86};
87
89{
90public:
95
114
137
140 const FSolverParticlesRange & Particles,
141 const FTriangleMesh& TriangleMesh,
143 const TMap<FString, TConstArrayView<FRealSingle>>&WeightMaps,
145 bool bTrimKinematicConstraints = false);
146
147 virtual ~FPBDAreaSpringConstraints() override = default;
148
151 const TMap<FString, TConstArrayView<FRealSingle>>& WeightMaps);
152
153 CHAOS_API void ApplyProperties(const FSolverReal Dt, const int32 NumIterations);
154
158
159private:
160
161 void InitFromPatternData(const TArray<TVec3<FVec2f>>& FaceVertexPatternPositions, const FTriangleMesh& TriangleMesh);
162 void UpdateDists();
163
169
170 bool bWarpWeftScaleEnabled = false;
171 FPBDWeightMap WarpScale;
172 FPBDWeightMap WeftScale;
173 TArray<FSolverReal> BaseDists; // Without Warp/Weft Scale applied
174 TArray<FSolverVec2> WarpWeftScaleBaseMultipliers;
175
179};
180
181} // End namespace Chaos::Softs
182
183#if !defined(CHAOS_AXIAL_SPRING_ISPC_ENABLED_DEFAULT)
184#define CHAOS_AXIAL_SPRING_ISPC_ENABLED_DEFAULT 1
185#endif
186
187#if !defined(USE_ISPC_KERNEL_CONSOLE_VARIABLES_IN_SHIPPING)
188#define USE_ISPC_KERNEL_CONSOLE_VARIABLES_IN_SHIPPING 0
189#endif
190
191// Support run-time toggling on supported platforms in non-shipping configurations
192#if !INTEL_ISPC || (UE_BUILD_SHIPPING && !USE_ISPC_KERNEL_CONSOLE_VARIABLES_IN_SHIPPING)
193static constexpr bool bChaos_AxialSpring_ISPC_Enabled = INTEL_ISPC && CHAOS_AXIAL_SPRING_ISPC_ENABLED_DEFAULT;
194#else
195extern CHAOS_API bool bChaos_AxialSpring_ISPC_Enabled;
196#endif
#define UE_CHAOS_DECLARE_INDEXED_PROPERTYCOLLECTION_NAME(PropertyName, Type)
Definition CollectionPropertyFacade.h:893
@ ForceInit
Definition CoreMiscDefines.h:155
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define CHAOS_AXIAL_SPRING_ISPC_ENABLED_DEFAULT
Definition PBDAxialSpringConstraints.h:184
Definition TriangleMesh.h:24
Definition CollectionPropertyFacade.h:49
Definition PBDAxialSpringConstraints.h:89
CHAOS_API void SetProperties(const FCollectionPropertyConstFacade &PropertyCollection, const TMap< FString, TConstArrayView< FRealSingle > > &WeightMaps)
Definition PBDAxialSpringConstraints.cpp:314
CHAOS_API void ApplyProperties(const FSolverReal Dt, const int32 NumIterations)
Definition PBDAxialSpringConstraints.cpp:377
UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME(AreaSpringWarpScale, float)
UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME(AreaSpringStiffness, float)
UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME(AreaSpringWeftScale, float)
FPBDAreaSpringConstraints(const FSolverParticlesRange &Particles, const TArray< TVec3< int32 > > &InConstraints, const TMap< FString, TConstArrayView< FRealSingle > > &WeightMaps, const FCollectionPropertyConstFacade &PropertyCollection, bool bTrimKinematicConstraints)
Definition PBDAxialSpringConstraints.h:96
FPBDAreaSpringConstraints(const FSolverParticles &Particles, int32 InParticleOffset, int32 InParticleCount, const TArray< TVec3< int32 > > &InConstraints, const TMap< FString, TConstArrayView< FRealSingle > > &WeightMaps, const FCollectionPropertyConstFacade &PropertyCollection, bool bTrimKinematicConstraints)
Definition PBDAxialSpringConstraints.h:115
virtual ~FPBDAreaSpringConstraints() override=default
static bool IsEnabled(const FCollectionPropertyConstFacade &PropertyCollection)
Definition PBDAxialSpringConstraints.h:91
Definition PBDAxialSpringConstraintsBase.h:16
TArray< FSolverReal > Barys
Definition PBDAxialSpringConstraintsBase.h:245
const int32 ParticleCount
Definition PBDAxialSpringConstraintsBase.h:244
TArray< TVec3< int32 > > Constraints
Definition PBDAxialSpringConstraintsBase.h:242
FPBDStiffness Stiffness
Definition PBDAxialSpringConstraintsBase.h:247
const int32 ParticleOffset
Definition PBDAxialSpringConstraintsBase.h:243
Definition PBDAxialSpringConstraints.h:18
FPBDAxialSpringConstraints(const FSolverParticles &Particles, int32 InParticleOffset, int32 InParticleCount, const TArray< TVec3< int32 > > &InConstraints, const TConstArrayView< FRealSingle > &StiffnessMultipliers, const FSolverVec2 &InStiffness, bool bTrimKinematicConstraints, bool bInitColor=true)
Definition PBDAxialSpringConstraints.h:42
FPBDAxialSpringConstraints(const FSolverParticlesRange &Particles, const TArray< TVec3< int32 > > &InConstraints, const TConstArrayView< FRealSingle > &StiffnessMultipliers, const FSolverVec2 &InStiffness, bool bTrimKinematicConstraints, bool bInitColor=true)
Definition PBDAxialSpringConstraints.h:22
TArray< FSolverReal > Barys
Definition PBDAxialSpringConstraintsBase.h:245
CHAOS_API void Apply(SolverParticlesOrRange &InParticles, const FSolverReal Dt) const
const int32 ParticleCount
Definition PBDAxialSpringConstraintsBase.h:244
TArray< TVec3< int32 > > Constraints
Definition PBDAxialSpringConstraintsBase.h:242
virtual ~FPBDAxialSpringConstraints() override
Definition PBDAxialSpringConstraints.h:66
CHAOS_API TArray< int32 > InitColor(const SolverParticlesOrRange &InParticles)
FPBDStiffness Stiffness
Definition PBDAxialSpringConstraintsBase.h:247
const int32 ParticleOffset
Definition PBDAxialSpringConstraintsBase.h:243
Definition PBDWeightMap.h:19
Definition SoftsSolverParticlesRange.h:12
Definition PBDSoftsSolverParticles.h:20
Definition Vector.h:1000
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition CollectionEmbeddedSpringConstraintFacade.cpp:6
FRealSingle FSolverReal
Definition PBDSoftsEvolutionFwd.h:31
Definition SkeletalMeshComponent.h:307