72 UE_DEPRECATED(5.5,
"Use a constructor with BucklingRatioMultipliers.")
151 UE_DEPRECATED(5.5,
"Use a constructor with BucklingRatioMultipliers.")
185 UE_DEPRECATED(5.5,
"Use a constructor with BucklingRatioMultipliers.")
216 UE_DEPRECATED(5.5,
"Use version with FSolverVec2 InBucklingRatio.")
230 template<
typename SolverParticlesOrRange>
242 template<
typename SolverParticlesOrRange>
246 const int32 i1 = Constraint[0];
247 const int32 i2 = Constraint[1];
248 const int32 i3 = Constraint[2];
249 const int32 i4 = Constraint[3];
266 const FSolverVec3 Normal1 = FSolverVec3::CrossProduct(P1 - P3, P2 - P3).GetSafeNormal();
269 const FSolverVec3 SharedEdge = (P2 - P1).GetSafeNormal();
276 UE_DEPRECATED(5.5,
"This version is deprecated and will produce the incorrect result if BucklingRatio is weighted. Use version that takes a ConstraintIndex instead.")
291 template<
typename SolverParticlesOrRange>
303 return Numerator / Denominator;
355 template<
typename SolverParticlesOrRange>
396 UE_DEPRECATED(5.5,
"Scalar Buckling Ratio has been deprecated. Use BucklingRatioWeighted instead.")
402#if !defined(CHAOS_BENDING_ISPC_ENABLED_DEFAULT)
403#define CHAOS_BENDING_ISPC_ENABLED_DEFAULT 1
406#if !defined(USE_ISPC_KERNEL_CONSOLE_VARIABLES_IN_SHIPPING)
407#define USE_ISPC_KERNEL_CONSOLE_VARIABLES_IN_SHIPPING 0
411#if !INTEL_ISPC || (UE_BUILD_SHIPPING && !USE_ISPC_KERNEL_CONSOLE_VARIABLES_IN_SHIPPING)
414extern CHAOS_API bool bChaos_Bending_ISPC_Enabled;
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
const bool
Definition NetworkReplayStreaming.h:178
#define CHAOS_BENDING_ISPC_ENABLED_DEFAULT
Definition PBDBendingConstraintsBase.h:403
#define UE_PI
Definition UnrealMathUtility.h:129
#define SMALL_NUMBER
Definition UnrealMathUtility.h:66
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition PBDBendingConstraintsBase.h:15
FPBDBendingConstraintsBase(const FSolverParticles &InParticles, int32 InParticleOffset, int32 InParticleCount, TArray< TVec4< int32 > > &&InConstraints, const TConstArrayView< FRealSingle > &StiffnessMultipliers, const TConstArrayView< FRealSingle > &BucklingRatioMultipliers, const TConstArrayView< FRealSingle > &BucklingStiffnessMultipliers, const TConstArrayView< FRealSingle > &RestAngleMap, const FSolverVec2 &InStiffness, const FSolverVec2 &InBucklingRatio, const FSolverVec2 &InBucklingStiffness, const FSolverVec2 &RestAngleValue, ERestAngleConstructionType RestAngleConstructionType, bool bTrimKinematicConstraints=false, FSolverReal MaxStiffness=FPBDStiffness::DefaultPBDMaxStiffness)
Definition PBDBendingConstraintsBase.h:101
const int32 ParticleOffset
Definition PBDBendingConstraintsBase.h:386
ERestAngleConstructionType
Definition PBDBendingConstraintsBase.h:18
TArray< bool > IsBuckled
Definition PBDBendingConstraintsBase.h:394
FSolverReal GetScalingFactor(const SolverParticlesOrRange &InParticles, const int32 i, const TStaticArray< FSolverVec3, 4 > &Grads, const FSolverReal ExpStiffnessValue, const FSolverReal ExpBucklingValue) const
Definition PBDBendingConstraintsBase.h:243
void SetProperties(const FSolverVec2 &InStiffness, const FSolverVec2 &InBucklingRatio, const FSolverVec2 &InBucklingStiffness)
Definition PBDBendingConstraintsBase.h:206
CHAOS_API void CalculateRestAngles(const TConstArrayView< FSolverVec3 > &InPositions, int32 InParticleOffset, int32 InParticleCount, const TConstArrayView< FRealSingle > &RestAngleMap, const FSolverVec2 &RestAngleValue, ERestAngleConstructionType RestAngleConstructionType)
Definition PBDBendingConstraintsBase.cpp:112
static TNum SafeDivide(const TNum &Numerator, const FSolverReal &Denominator)
Definition PBDBendingConstraintsBase.h:300
FSolverReal BucklingRatio
Definition PBDBendingConstraintsBase.h:397
TArray< FSolverReal > RestAngles
Definition PBDBendingConstraintsBase.h:393
const TArray< TVec4< int32 > > & GetConstraints() const
Definition PBDBendingConstraintsBase.h:295
const TArray< FSolverReal > & GetRestAngles() const
Definition PBDBendingConstraintsBase.h:294
CHAOS_API void Init(const SolverParticlesOrRange &InParticles)
bool AngleIsBuckled(const FSolverReal Angle, const int32 ConstraintIndex) const
Definition PBDBendingConstraintsBase.h:284
FPBDStiffness Stiffness
Definition PBDBendingConstraintsBase.h:389
FPBDWeightMap BucklingRatioWeighted
Definition PBDBendingConstraintsBase.h:390
FPBDStiffness BucklingStiffness
Definition PBDBendingConstraintsBase.h:391
FPBDBendingConstraintsBase(const FSolverParticlesRange &InParticles, TArray< TVec4< int32 > > &&InConstraints, const TConstArrayView< FRealSingle > &StiffnessMultipliers, const TConstArrayView< FRealSingle > &BucklingRatioMultipliers, const TConstArrayView< FRealSingle > &BucklingStiffnessMultipliers, const TConstArrayView< FRealSingle > &RestAngleMap, const FSolverVec2 &InStiffness, const FSolverVec2 &InBucklingRatio, const FSolverVec2 &InBucklingStiffness, const FSolverVec2 &RestAngleValue, ERestAngleConstructionType RestAngleConstructionType, bool bTrimKinematicConstraints=false, FSolverReal MaxStiffness=FPBDStiffness::DefaultPBDMaxStiffness)
Definition PBDBendingConstraintsBase.h:24
virtual ~FPBDBendingConstraintsBase()
Definition PBDBendingConstraintsBase.h:203
TStaticArray< FSolverVec3, 4 > GetGradients(const SolverParticlesOrRange &InParticles, const int32 i) const
Definition PBDBendingConstraintsBase.h:231
void ApplyProperties(const FSolverReal Dt, const int32 NumIterations)
Definition PBDBendingConstraintsBase.h:223
static TStaticArray< FSolverVec3, 4 > CalcGradients(const FSolverVec3 &P1, const FSolverVec3 &P2, const FSolverVec3 &P3, const FSolverVec3 &P4, FSolverReal *OutAngle=nullptr)
Definition PBDBendingConstraintsBase.h:307
bool AngleIsBuckled(const FSolverReal Angle, const FSolverReal RestAngle) const
Definition PBDBendingConstraintsBase.h:277
static FSolverReal CalcAngle(const FSolverVec3 &P1, const FSolverVec3 &P2, const FSolverVec3 &P3, const FSolverVec3 &P4)
Definition PBDBendingConstraintsBase.h:264
const int32 ParticleCount
Definition PBDBendingConstraintsBase.h:387
TArray< TVec4< int32 > > Constraints
Definition PBDBendingConstraintsBase.h:383
TArray< TVec2< int32 > > ConstraintSharedEdges
Definition PBDBendingConstraintsBase.h:384
const TArray< bool > & GetIsBuckled() const
Definition PBDBendingConstraintsBase.h:296
Definition PBDStiffness.h:21
void SetWeightedValue(const FSolverVec2 &InWeightedValue, FSolverReal MaxStiffness=DefaultPBDMaxStiffness)
Definition PBDStiffness.h:65
static constexpr FSolverReal DefaultPBDMaxStiffness
Definition PBDStiffness.h:24
void ApplyPBDValues(const FSolverReal Dt, const int32 NumIterations)
Definition PBDStiffness.h:124
Definition PBDWeightMap.h:19
FSolverReal GetValue(int32 Index) const
Definition PBDWeightMap.h:88
void ApplyValues(bool *bOutUpdated=nullptr)
Definition PBDWeightMap.h:71
void SetWeightedValue(const FSolverVec2 &InWeightedValue)
Definition PBDWeightMap.h:62
Definition SoftsSolverParticlesRange.h:12
Definition PBDSoftsSolverParticles.h:20
Definition Constraints.Build.cs:6
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
Definition StaticArray.h:26
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
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592