UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PBDCollisionSpringConstraints.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#if !COMPILE_WITHOUT_UNREAL_SUPPORT
7
8namespace Chaos::Softs
9{
10
12{
14
15public:
19
24
26 const int32 InOffset,
30 const TMap<FString, TConstArrayView<FRealSingle>>& WeightMaps,
33 : Base(
34 InOffset,
38 GenerateDisabledCollisionElements(InTriangleMesh, PropertyCollection),
59 {}
60
61 UE_DEPRECATED(5.4, "Use constructor with FaceIntMaps")
79
111
113
114 using Base::Init;
115
117 const TMap<FString, TConstArrayView<FRealSingle>>& WeightMaps,
118 const TMap<FString, TConstArrayView<int32>>& FaceIntMaps)
119 {
121 {
124 {
126 ThicknessWeighted = FPBDFlatWeightMap(WeightedValue, WeightMaps.FindRef(WeightMapName), GetNumParticles());
127 }
128 else
129 {
130 ThicknessWeighted.SetWeightedValue(WeightedValue);
131 }
132 }
134 {
136 }
138 {
140 }
142 {
144 }
146 {
148 {
151 }
152 }
154 {
156 }
158 {
160 }
162 {
164 }
166 {
169 {
172 }
173 else
174 {
176 }
177 }
178 }
179
180 UE_DEPRECATED(5.4, "Use SetProperties with FaceIntMaps")
185
191private:
193 using Base::Stiffness;
196
197 static TSet<TVec2<int32>> GenerateDisabledCollisionElements(
199 {
202 TSet<TVec2<int32>> DisabledCollisionElements; // TODO: Is this needed? Turn this into a bit array?
203
204 const TVec2<int32> Range = TriangleMesh.GetVertexRange();
205 for (int32 Index = Range[0]; Index <= Range[1]; ++Index)
206 {
207 const TSet<int32> Neighbors = TriangleMesh.GetNRing(Index, DisabledCollisionElementsN);
208 for (int32 Element : Neighbors)
209 {
210 check(Index != Element);
211 DisabledCollisionElements.Emplace(TVec2<int32>(Index, Element));
212 DisabledCollisionElements.Emplace(TVec2<int32>(Element, Index));
213 }
214 }
215 return DisabledCollisionElements;
216 }
217
218 UE_CHAOS_DECLARE_INDEXED_PROPERTYCOLLECTION_NAME(SelfCollisionThickness, float);
219 UE_CHAOS_DECLARE_INDEXED_PROPERTYCOLLECTION_NAME(SelfCollisionStiffness, float);
221
229};
230
231} // End namespace Chaos::Softs
232
233#endif
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
#define UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME(PropertyName, Type)
Definition CollectionPropertyFacade.h:853
#define UE_CHAOS_DECLARE_INDEXED_PROPERTYCOLLECTION_NAME(PropertyName, Type)
Definition CollectionPropertyFacade.h:893
#define UE_CHAOS_DECLARE_PROPERTYCOLLECTION_NAME(PropertyName, Type)
Definition CollectionPropertyFacade.h:969
@ ForceInit
Definition CoreMiscDefines.h:155
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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 TRACE_CPUPROFILER_EVENT_SCOPE(Name)
Definition CpuProfilerTrace.h:528
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition TriangleMesh.h:24
Definition CollectionPropertyFacade.h:49
Definition PBDCollisionSpringConstraintsBase.h:24
static constexpr FSolverReal DefaultProximityStiffness
Definition PBDCollisionSpringConstraintsBase.h:32
static constexpr FSolverReal DefaultKinematicColliderStiffness
Definition PBDCollisionSpringConstraintsBase.h:30
FPBDFlatWeightMap ThicknessWeighted
Definition PBDCollisionSpringConstraintsBase.h:174
FPBDFlatWeightMap KinematicColliderFrictionCoefficient
Definition PBDCollisionSpringConstraintsBase.h:179
FSolverReal Stiffness
Definition PBDCollisionSpringConstraintsBase.h:175
static constexpr FSolverReal DefaultKinematicColliderFrictionCoefficient
Definition PBDCollisionSpringConstraintsBase.h:31
FPBDKinematicTriangleMeshCollisions KinematicCollisions
Definition PBDCollisionSpringConstraintsBase.h:180
FSolverReal ProximityStiffness
Definition PBDCollisionSpringConstraintsBase.h:187
static constexpr FSolverReal DefaultKinematicColliderThickness
Definition PBDCollisionSpringConstraintsBase.h:29
int32 GetNumParticles() const
Definition PBDCollisionSpringConstraintsBase.h:191
CHAOS_API void Init(const SolverParticlesOrRange &Particles, const SpatialAccelerator &Spatial, const TConstArrayView< FPBDTriangleMeshCollisions::FGIAColor > &VertexGIAColors, const TArray< FPBDTriangleMeshCollisions::FGIAColor > &TriangleGIAColors)
static constexpr FSolverReal BackCompatThickness
Definition PBDCollisionSpringConstraintsBase.h:26
bool bOnlyCollideKinematics
Definition PBDCollisionSpringConstraintsBase.h:177
static constexpr FSolverReal BackCompatFrictionCoefficient
Definition PBDCollisionSpringConstraintsBase.h:28
static constexpr FSolverReal BackCompatStiffness
Definition PBDCollisionSpringConstraintsBase.h:27
CHAOS_API void UpdateCollisionLayers(const TConstArrayView< int32 > &InFaceCollisionLayers)
Definition PBDCollisionSpringConstraintsBase.cpp:69
FSolverReal FrictionCoefficient
Definition PBDCollisionSpringConstraintsBase.h:176
Definition PBDCollisionSpringConstraints.h:12
UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME(SelfCollisionFriction, float)
static constexpr FSolverReal MaxFrictionCoefficient
Definition PBDCollisionSpringConstraints.h:17
UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME(SelfCollisionLayers, float)
virtual ~FPBDCollisionSpringConstraints() override
Definition PBDCollisionSpringConstraints.h:112
void SetProperties(const FCollectionPropertyConstFacade &PropertyCollection, const TMap< FString, TConstArrayView< FRealSingle > > &WeightMaps, const TMap< FString, TConstArrayView< int32 > > &FaceIntMaps)
Definition PBDCollisionSpringConstraints.h:116
UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME(SelfCollisionStiffness, float)
static constexpr int32 DefaultSelfCollisionDisableNeighborDistance
Definition PBDCollisionSpringConstraints.h:18
UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME(UseSelfCollisions, bool)
static bool IsEnabled(const FCollectionPropertyConstFacade &PropertyCollection)
Definition PBDCollisionSpringConstraints.h:20
UE_CHAOS_DECLARE_INDEXLESS_PROPERTYCOLLECTION_NAME(SelfCollisionThickness, float)
FPBDCollisionSpringConstraints(const int32 InOffset, const int32 InNumParticles, const FTriangleMesh &InTriangleMesh, const TArray< FSolverVec3 > *InRestPositions, const TMap< FString, TConstArrayView< FRealSingle > > &WeightMaps, const TMap< FString, TConstArrayView< int32 > > &FaceIntMaps, const FCollectionPropertyConstFacade &PropertyCollection)
Definition PBDCollisionSpringConstraints.h:25
static constexpr FSolverReal MinFrictionCoefficient
Definition PBDCollisionSpringConstraints.h:16
FPBDCollisionSpringConstraints(const int32 InOffset, const int32 InNumParticles, const FTriangleMesh &InTriangleMesh, const TArray< FSolverVec3 > *InRestPositions, TSet< TVec2< int32 > > &&InDisabledCollisionElements, const FSolverReal InThickness=Base::BackCompatThickness, const FSolverReal InStiffness=Base::BackCompatStiffness, const FSolverReal InFrictionCoefficient=Base::BackCompatFrictionCoefficient)
Definition PBDCollisionSpringConstraints.h:80
Definition PBDFlatWeightMap.h:98
void SetWeightedValue(const FSolverVec2 &InWeightedValue)
Definition PBDFlatWeightMap.h:142
void SetStiffness(const FSolverReal InStiffness)
Definition PBDKinematicTriangleMeshCollisions.h:60
void SetColliderThickness(const FSolverReal InColliderThickness)
Definition PBDKinematicTriangleMeshCollisions.h:65
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition CollectionEmbeddedSpringConstraintFacade.cpp:6
TVector< FSolverReal, 2 > FSolverVec2
Definition PBDSoftsEvolutionFwd.h:32
FRealSingle FSolverReal
Definition PBDSoftsEvolutionFwd.h:31
float FRealSingle
Definition Real.h:14
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition UnrealMathUtility.h:270
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592