UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PBDJointConstraintUtilities.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "CoreMinimal.h"
5
9
10
11namespace Chaos
12{
14 {
15 public:
17 const FVec3& X0,
18 const FVec3& X1,
19 FVec3& Axis,
20 FReal& Delta);
21
23 const FRotation3& R0,
24 const FVec3& X0,
25 const FVec3& X1,
31
32 static CHAOS_API void GetPlanarAxisDelta(
33 const FRotation3& R0,
34 const FVec3& X0,
35 const FVec3& X1,
37 FVec3& Axis,
38 FReal& Delta);
39
41 const FRotation3& R0,
42 const FRotation3& R1,
45
47 const FRotation3& R0,
48 const FRotation3& R1,
52
54 const FRotation3& InTwist);
55
56 static CHAOS_API void GetTwistAxisAngle(
57 const FRotation3& R0,
58 const FRotation3& R1,
59 FVec3& Axis,
60 FReal& Angle);
61
63 const FRotation3& R0,
64 const FRotation3& R1,
65 const FReal AngleTolerance,
67 FReal& Angle);
68
70 const FRotation3& R0,
71 const FRotation3& R1,
72 const FReal SwingLimit,
74 FReal& Error);
75
77 const FRotation3& R0,
78 const FRotation3& R1,
79 const FReal SwingLimitY,
80 const FReal SwingLimitZ,
82 FReal& Error);
83
85 const FRotation3& R0,
86 const FRotation3& R1,
88 FVec3& Axis,
89 FReal& Angle);
90
92 const FRotation3& R0,
93 const FRotation3& R1,
95 FVec3& Axis,
96 FReal& Angle);
97
98 static CHAOS_API void GetSwingAxisAngle(
99 const FRotation3& R0,
100 const FRotation3& R1,
101 const FReal AngleTolerance,
103 FVec3& Axis,
104 FReal& Angle);
105
107 const FRotation3& R0,
108 const FRotation3& R1,
109 FVec3& Axis0,
110 FVec3& Axis1,
111 FVec3& Axis2);
112
114 const FPBDJointSettings& JointSettings,
115 const FVec3& SwingAxisLocal,
116 const FReal SwingAngle);
117
125 const FVec3& InI,
126 const FReal MaxRatio);
127
139 const FVec3& IParent,
140 const FVec3& IChild,
141 const FReal MinRatio);
142
144 const FReal MParent,
145 const FReal MChild,
146 const FReal MinRatio);
147
149 const FReal& InInvMParent,
150 const FReal& InInvMChild,
151 const FVec3& InInvIParent,
152 const FVec3& InInvIChild,
153 const FReal MinParentMassRatio,
154 const FReal MaxInertiaRatio,
159
165 const FReal MinParentMassRatio,
166 const FReal MaxInertiaRatio);
167
168 static bool GetSoftLinearLimitEnabled(
169 const FPBDJointSolverSettings& SolverSettings,
170 const FPBDJointSettings& JointSettings);
171
172 static bool GetSoftTwistLimitEnabled(
173 const FPBDJointSolverSettings& SolverSettings,
174 const FPBDJointSettings& JointSettings);
175
176 static bool GetSoftSwingLimitEnabled(
177 const FPBDJointSolverSettings& SolverSettings,
178 const FPBDJointSettings& JointSettings);
179
181 const FPBDJointSolverSettings& SolverSettings,
182 const FPBDJointSettings& JointSettings);
183
185 const FPBDJointSolverSettings& SolverSettings,
186 const FPBDJointSettings& JointSettings);
187
189 const FPBDJointSolverSettings& SolverSettings,
190 const FPBDJointSettings& JointSettings);
191
193 const FPBDJointSolverSettings& SolverSettings,
194 const FPBDJointSettings& JointSettings);
195
197 const FPBDJointSolverSettings& SolverSettings,
198 const FPBDJointSettings& JointSettings);
199
201 const FPBDJointSolverSettings& SolverSettings,
202 const FPBDJointSettings& JointSettings);
203
205 const FPBDJointSolverSettings& SolverSettings,
206 const FPBDJointSettings& JointSettings);
207
209 const FPBDJointSolverSettings& SolverSettings,
210 const FPBDJointSettings& JointSettings);
211
213 const FPBDJointSolverSettings& SolverSettings,
214 const FPBDJointSettings& JointSettings);
215
217 const FPBDJointSolverSettings& SolverSettings,
218 const FPBDJointSettings& JointSettings,
219 const int32 AxisIndex);
220
222 const FPBDJointSolverSettings& SolverSettings,
223 const FPBDJointSettings& JointSettings,
224 const int32 AxisIndex);
225
227 const FPBDJointSolverSettings& SolverSettings,
228 const FPBDJointSettings& JointSettings);
229
231 const FPBDJointSolverSettings& SolverSettings,
232 const FPBDJointSettings& JointSettings);
233
235 const FPBDJointSolverSettings& SolverSettings,
236 const FPBDJointSettings& JointSettings);
237
239 const FPBDJointSolverSettings& SolverSettings,
240 const FPBDJointSettings& JointSettings);
241
243 const FPBDJointSolverSettings& SolverSettings,
244 const FPBDJointSettings& JointSettings);
245
247 const FPBDJointSolverSettings& SolverSettings,
248 const FPBDJointSettings& JointSettings);
249
251 const FPBDJointSolverSettings& SolverSettings,
252 const FPBDJointSettings& JointSettings);
253
255 const FPBDJointSolverSettings& SolverSettings,
256 const FPBDJointSettings& JointSettings);
257
259 const FPBDJointSolverSettings& SolverSettings,
260 const FPBDJointSettings& JointSettings);
261
263 const FPBDJointSolverSettings& SolverSettings,
264 const FPBDJointSettings& JointSettings);
265
267 const FPBDJointSolverSettings& SolverSettings,
268 const FPBDJointSettings& JointSettings);
269
271 const FPBDJointSolverSettings& SolverSettings,
272 const FPBDJointSettings& JointSettings);
273
275 const FPBDJointSolverSettings& SolverSettings,
276 const FPBDJointSettings& JointSettings);
277
279 const FPBDJointSolverSettings& SolverSettings,
280 const FPBDJointSettings& JointSettings);
281
283 const FPBDJointSolverSettings& SolverSettings,
284 const FPBDJointSettings& JointSettings);
285
286 static FVec3 GetSphereLimitedPositionError(const FVec3& CX, const FReal Radius);
287 static FVec3 GetCylinderLimitedPositionError(const FVec3& CX, const FVec3& Axis, const FReal Limit, const EJointMotionType AxisMotion);
288 static FVec3 GetLineLimitedPositionError(const FVec3& CX, const FVec3& Axis, const FReal Limit, const EJointMotionType AxisMotion);
289 static FVec3 GetLimitedPositionError(const FPBDJointSettings& JointSettings, const FRotation3& R0, const FVec3& CX);
290 static CHAOS_API bool GetLinearIsFree(const FPBDJointSettings& JointSettings);
291 };
292}
293
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
Definition PBDJointConstraintTypes.h:114
Definition PBDJointConstraintTypes.h:219
Definition PBDJointConstraintUtilities.h:14
static FReal GetSoftTwistDamping(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:454
static FReal GetAngularProjection(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:601
static CHAOS_API FVec3 ConditionParentInertia(const FVec3 &IParent, const FVec3 &IChild, const FReal MinRatio)
Definition PBDJointConstraintUtilities.cpp:665
static bool GetLinearDriveAccelerationMode(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:622
static bool GetAngularDriveAccelerationMode(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:629
static CHAOS_API void GetDualConeSwingAxisAngle(const FRotation3 &R0, const FRotation3 &R1, const EJointAngularConstraintIndex SwingConstraintIndex, FVec3 &Axis, FReal &Angle)
Definition PBDJointConstraintUtilities.cpp:309
static CHAOS_API void GetCircularConeAxisErrorLocal(const FRotation3 &R0, const FRotation3 &R1, const FReal SwingLimit, FVec3 &AxisLocal, FReal &Error)
Definition PBDJointConstraintUtilities.cpp:228
static FReal GetShockPropagationInvMassScale(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:636
static FVec3 GetCylinderLimitedPositionError(const FVec3 &CX, const FVec3 &Axis, const FReal Limit, const EJointMotionType AxisMotion)
Definition PBDJointConstraintUtilities.cpp:788
static CHAOS_API void GetTwistAxisAngle(const FRotation3 &R0, const FRotation3 &R1, FVec3 &Axis, FReal &Angle)
Definition PBDJointConstraintUtilities.cpp:196
static FReal GetSoftLinearStiffness(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:426
static FReal GetSoftSwingStiffness(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:468
static FReal GetSoftTwistStiffness(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:447
static FReal GetAngularTwistDriveDamping(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:517
static FReal GetAngularTwistDriveTorqueLimit(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:528
static CHAOS_API void GetPlanarAxisDelta(const FRotation3 &R0, const FVec3 &X0, const FVec3 &X1, const int32 PlaneAxisIndex, FVec3 &Axis, FReal &Delta)
Definition PBDJointConstraintUtilities.cpp:150
static CHAOS_API void ConditionInverseMassAndInertia(const FReal &InInvMParent, const FReal &InInvMChild, const FVec3 &InInvIParent, const FVec3 &InInvIChild, const FReal MinParentMassRatio, const FReal MaxInertiaRatio, FReal &OutInvMParent, FReal &OutInvMChild, FVec3 &OutInvIParent, FVec3 &OutInvIChild)
Definition PBDJointConstraintUtilities.cpp:701
static CHAOS_API void GetLockedRotationAxes(const FRotation3 &R0, const FRotation3 &R1, FVec3 &Axis0, FVec3 &Axis1, FVec3 &Axis2)
Definition PBDJointConstraintUtilities.cpp:346
static bool GetSoftTwistLimitEnabled(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:405
static CHAOS_API void GetCylindricalAxesDeltas(const FRotation3 &R0, const FVec3 &X0, const FVec3 &X1, const int32 CylinderAxisIndex, FVec3 &CylinderAxis, FReal &CylinderDelta, FVec3 &RadialAxis, FReal &RadialDelta)
Definition PBDJointConstraintUtilities.cpp:119
static FReal GetTwistStiffness(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:440
static bool GetSoftLinearLimitEnabled(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:398
static FReal GetAngularSwingDriveStiffness(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:539
static FReal GetLinearStiffness(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:419
static bool GetSoftSwingLimitEnabled(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:412
static FReal GetAngularTwistDriveStiffness(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:506
static FReal GetAngularSwingDriveTorqueLimit(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:561
static FVec3 GetLineLimitedPositionError(const FVec3 &CX, const FVec3 &Axis, const FReal Limit, const EJointMotionType AxisMotion)
Definition PBDJointConstraintUtilities.cpp:810
static void CHAOS_API GetSwingTwistAngles(const FRotation3 &R0, const FRotation3 &R1, FReal &TwistAngle, FReal &Swing1Angle, FReal &Swing2Angle)
Definition PBDJointConstraintUtilities.cpp:169
static bool GetAngularSoftAccelerationMode(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:615
static FReal GetSwingStiffness(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:461
static FReal GetLinearDriveDamping(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings, const int32 AxisIndex)
Definition PBDJointConstraintUtilities.cpp:494
static FReal GetSoftSwingDamping(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:475
static CHAOS_API void GetSphericalAxisDelta(const FVec3 &X0, const FVec3 &X1, FVec3 &Axis, FReal &Delta)
Definition PBDJointConstraintUtilities.cpp:100
static CHAOS_API void DecomposeSwingTwistLocal(const FRotation3 &R0, const FRotation3 &R1, FRotation3 &R01Swing, FRotation3 &R01Twist)
Definition PBDJointConstraintUtilities.cpp:163
static CHAOS_API void GetLockedSwingAxisAngle(const FRotation3 &R0, const FRotation3 &R1, const EJointAngularConstraintIndex SwingConstraintIndex, FVec3 &Axis, FReal &Angle)
Definition PBDJointConstraintUtilities.cpp:293
static FReal GetLinearProjection(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:594
static CHAOS_API FReal ConditionParentMass(const FReal MParent, const FReal MChild, const FReal MinRatio)
Definition PBDJointConstraintUtilities.cpp:685
static bool GetLinearSoftAccelerationMode(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:608
static CHAOS_API FReal GetTwistAngle(const FRotation3 &InTwist)
Definition PBDJointConstraintUtilities.cpp:179
static FReal GetAngularSLerpDriveDamping(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:583
static FVec3 GetLimitedPositionError(const FPBDJointSettings &JointSettings, const FRotation3 &R0, const FVec3 &CX)
Definition PBDJointConstraintUtilities.cpp:828
static CHAOS_API bool GetLinearIsFree(const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:889
static CHAOS_API void GetConeAxisAngleLocal(const FRotation3 &R0, const FRotation3 &R1, const FReal AngleTolerance, FVec3 &AxisLocal, FReal &Angle)
Definition PBDJointConstraintUtilities.cpp:210
static CHAOS_API FReal GetConeAngleLimit(const FPBDJointSettings &JointSettings, const FVec3 &SwingAxisLocal, const FReal SwingAngle)
Definition PBDJointConstraintUtilities.cpp:373
static FReal GetLinearDriveStiffness(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings, const int32 AxisIndex)
Definition PBDJointConstraintUtilities.cpp:482
static FReal GetAngularSwingDriveDamping(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:550
static FVec3 GetSphereLimitedPositionError(const FVec3 &CX, const FReal Radius)
Definition PBDJointConstraintUtilities.cpp:772
static FReal GetAngularSLerpDriveStiffness(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:572
static CHAOS_API FVec3 ConditionInertia(const FVec3 &InI, const FReal MaxRatio)
Definition PBDJointConstraintUtilities.cpp:645
static FReal GetSoftLinearDamping(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings)
Definition PBDJointConstraintUtilities.cpp:433
static CHAOS_API void GetEllipticalConeAxisErrorLocal(const FRotation3 &R0, const FRotation3 &R1, const FReal SwingLimitY, const FReal SwingLimitZ, FVec3 &AxisLocal, FReal &Error)
Definition PBDJointConstraintUtilities.cpp:252
static CHAOS_API void GetSwingAxisAngle(const FRotation3 &R0, const FRotation3 &R1, const FReal AngleTolerance, const EJointAngularConstraintIndex SwingConstraintIndex, FVec3 &Axis, FReal &Angle)
Definition PBDJointConstraintUtilities.cpp:328
Definition SkeletalMeshComponent.h:307
FRealDouble FReal
Definition Real.h:22
EJointAngularConstraintIndex
Definition PBDJointConstraintTypes.h:48
EJointMotionType
Definition PBDJointConstraintTypes.h:23