UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PBDShapeConstraintsBase.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Chaos/Core.h"
6#include "Chaos/Array.h"
9
10#include <functional>
11
12namespace Chaos::Softs
13{
14
16{
17public:
24 )
27 , Stiffness(InStiffness)
28 {
29 const int32 NumConstraints = InParticleCount;
31 for (int32 Index = 0; Index < InParticleCount; ++Index)
32 {
33 const int32 ParticleIndex = ParticleOffset + Index;
34 const FSolverVec3& P1 = StartPositions[ParticleIndex];
35 const FSolverVec3& P2 = TargetPositions[ParticleIndex];
36 Dists[Index] = (P1 - P2).Size();
37 }
38 }
40
42 {
44 if (InParticles.InvM(Index) == (FSolverReal)0.)
45 {
46 return FSolverVec3(0.);
47 }
48 const FSolverVec3& P1 = InParticles.P(Index);
50 const FSolverVec3 Difference = P1 - P2;
51 const FSolverReal Distance = Difference.Size();
52 const FSolverVec3 Direction = Difference / Distance;
53 const FSolverVec3 Delta = (Distance - Dists[Index - ParticleOffset]) * Direction;
54 return Stiffness * Delta / InParticles.InvM(Index);
55 }
56
57protected:
60
61private:
63 FSolverReal Stiffness;
64};
65
66} // End namespace Chaos::Softs
#define checkSlow(expr)
Definition AssertionMacros.h:332
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
uint32 Size
Definition VulkanMemory.cpp:4034
Definition PBDShapeConstraintsBase.h:16
virtual ~FPBDShapeConstraintsBase()
Definition PBDShapeConstraintsBase.h:39
const int32 ParticleOffset
Definition PBDShapeConstraintsBase.h:59
FPBDShapeConstraintsBase(int32 InParticleOffset, int32 InParticleCount, const TArray< FSolverVec3 > &StartPositions, const TArray< FSolverVec3 > &InTargetPositions, const FSolverReal InStiffness)
Definition PBDShapeConstraintsBase.h:18
FSolverVec3 GetDelta(const FSolverParticles &InParticles, const int32 Index) const
Definition PBDShapeConstraintsBase.h:41
const TArray< FSolverVec3 > & TargetPositions
Definition PBDShapeConstraintsBase.h:58
Definition PBDSoftsSolverParticles.h:20
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void SetNumUninitialized(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2369
Definition CollectionEmbeddedSpringConstraintFacade.cpp:6
FRealSingle FSolverReal
Definition PBDSoftsEvolutionFwd.h:31
TVector< FSolverReal, 3 > FSolverVec3
Definition PBDSoftsEvolutionFwd.h:33
U16 Index
Definition radfft.cpp:71