52 Qs[1].EnforceShortestArcWith(
Qs[0]);
66 Rs[1].EnforceShortestArcWith(
Rs[0]);
81 Xs[0] =
Ps[0] +
Qs[0] *
XLs[0].GetTranslation();
82 Rs[0] =
Qs[0] *
XLs[0].GetRotation();
89 Xs[1] =
Ps[1] +
Qs[1] *
XLs[1].GetTranslation();
90 Rs[1] =
Qs[1] *
XLs[1].GetRotation();
95 Rs[1].EnforceShortestArcWith(
Rs[0]);
111 Qs[0] = (
Qs[0] +
DQ0).GetNormalized();
120 Qs[1] = (
Qs[1] +
DQ1).GetNormalized();
122 Qs[1].EnforceShortestArcWith(
Qs[0]);
134 Qs[0] = (
Qs[0] +
DQ0).GetNormalized();
141 Qs[1] = (
Qs[1] +
DQ1).GetNormalized();
143 Qs[1].EnforceShortestArcWith(
Qs[0]);
195 for (
int32 AxisIndex = 0; AxisIndex < 3; ++AxisIndex)
198 Axis[AxisIndex] = 1.0f;
206 FORCEINLINE int32 FJointSolverConstraints::UpdateSphericalPositionConstraint(
210 const FPBDJointSettings& JointSettings,
225 FORCEINLINE int32 FJointSolverConstraints::UpdateCylindricalPositionConstraint(
229 const FPBDJointSettings& JointSettings,
257 const FPBDJointSettings& JointSettings,
279 const FPBDJointSettings& JointSettings,
287 const FVec3 XTarget =
X0 + R0 * JointSettings.LinearDrivePositionTarget;
302 const FPBDJointSettings& JointSettings,
310 const FVec3 XTarget =
X0 + R0 * JointSettings.LinearDrivePositionTarget;
325 const FPBDJointSettings& JointSettings,
333 const FVec3 XTarget =
X0 + R0 * JointSettings.LinearDrivePositionTarget;
348 FORCEINLINE void FJointSolverConstraints::UpdateTwistConstraint(
349 const FJointSolverConstraintRowData&
RowData,
350 FJointSolverConstraintRowState&
RowState,
351 const FPBDJointSettings& JointSettings,
359 FORCEINLINE void FJointSolverConstraints::UpdateConeSwingConstraint(
360 const FJointSolverConstraintRowData&
RowData,
361 FJointSolverConstraintRowState&
RowState,
362 const FPBDJointSettings& JointSettings,
378 FORCEINLINE void FJointSolverConstraints::UpdateSingleLockedSwingConstraint(
379 const FJointSolverConstraintRowData&
RowData,
380 FJointSolverConstraintRowState&
RowState,
381 const FPBDJointSettings& JointSettings,
392 FORCEINLINE void FJointSolverConstraints::UpdateSingleLimitedSwingConstraint(
393 const FJointSolverConstraintRowData&
RowData,
394 FJointSolverConstraintRowState&
RowState,
395 const FPBDJointSettings& JointSettings,
407 FORCEINLINE void FJointSolverConstraints::UpdateDualConeSwingConstraint(
408 const FJointSolverConstraintRowData&
RowData,
409 FJointSolverConstraintRowState&
RowState,
410 const FPBDJointSettings& JointSettings,
427 FORCEINLINE void FJointSolverConstraints::UpdateTwistDrive(
428 const FJointSolverConstraintRowData&
RowData,
429 FJointSolverConstraintRowState&
RowState,
430 const FPBDJointSettings& JointSettings,
444 FORCEINLINE void FJointSolverConstraints::UpdateConeSwingDrive(
445 const FJointSolverConstraintRowData&
RowData,
446 FJointSolverConstraintRowState&
RowState,
447 const FPBDJointSettings& JointSettings,
471 FORCEINLINE void FJointSolverConstraints::UpdateSwingDrive(
472 const FJointSolverConstraintRowData&
RowData,
473 FJointSolverConstraintRowState&
RowState,
474 const FPBDJointSettings& JointSettings,
489 FORCEINLINE void FJointSolverConstraints::UpdateSLerpDrive(
490 const FJointSolverConstraintRowData&
RowData,
491 FJointSolverConstraintRowState&
RowState,
492 const FPBDJointSettings& JointSettings,
519 FORCEINLINE void FJointSolver::ApplyPositionConstraint1(
522 const FJointSolverConstraintRowData&
RowData,
523 FJointSolverConstraintRowState&
RowState)
581 FORCEINLINE void FJointSolver::ApplyPositionConstraint3(
584 const FJointSolverConstraintRowData&
RowData,
585 FJointSolverConstraintRowState&
RowState0,
586 FJointSolverConstraintRowState&
RowState1,
587 FJointSolverConstraintRowState&
RowState2)
614 FORCEINLINE void FJointSolver::ApplyRotationConstraint(
617 const FJointSolverConstraintRowData&
RowData,
618 FJointSolverConstraintRowState&
RowState)
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_PI
Definition UnrealMathUtility.h:129
#define UE_KINDA_SMALL_NUMBER
Definition UnrealMathUtility.h:131
FVec3 Axis
Definition JointSolverConstraints.h:138
FVec3 DRs[MaxConstrainedBodies]
Definition JointSolverConstraints.h:137
FVec3 DPs[MaxConstrainedBodies]
Definition JointSolverConstraints.h:136
FReal Error
Definition JointSolverConstraints.h:139
FORCEINLINE void IterationReset()
Definition JointSolverConstraints.inl:157
FORCEINLINE void CalculateError(FReal Position, FReal Limit)
Definition JointSolverConstraints.inl:168
FORCEINLINE void TickReset()
Definition JointSolverConstraints.inl:150
FReal Lambda
Definition JointSolverConstraints.h:142
FVec3 PrevPs[MaxConstrainedBodies]
Definition JointSolverConstraints.h:97
FVec3 PrevXs[MaxConstrainedBodies]
Definition JointSolverConstraints.h:99
FVec3 Ps[MaxConstrainedBodies]
Definition JointSolverConstraints.h:92
FRotation3 Rs[MaxConstrainedBodies]
Definition JointSolverConstraints.h:89
FORCEINLINE void UpdateDerivedState()
Definition JointSolverConstraints.inl:77
FORCEINLINE void InitDerivedState()
Definition JointSolverConstraints.inl:55
FORCEINLINE void Update(const FVec3 &P0, const FRotation3 &Q0, const FVec3 &P1, const FRotation3 &Q1)
Definition JointSolverConstraints.inl:42
FVec3 DPs[MaxConstrainedBodies]
Definition JointSolverConstraints.h:101
FVec3 Xs[MaxConstrainedBodies]
Definition JointSolverConstraints.h:88
FVec3 DRs[MaxConstrainedBodies]
Definition JointSolverConstraints.h:102
FRotation3 PrevQs[MaxConstrainedBodies]
Definition JointSolverConstraints.h:98
FORCEINLINE void ApplyDelta(const FVec3 &DP0, const FVec3 &DR0, const FVec3 &DP1, const FVec3 &DR1)
Definition JointSolverConstraints.inl:98
FReal PositionTolerance
Definition JointSolverConstraints.h:104
FMatrix33 InvIs[MaxConstrainedBodies]
Definition JointSolverConstraints.h:94
FReal AngleTolerance
Definition JointSolverConstraints.h:105
FRotation3 Qs[MaxConstrainedBodies]
Definition JointSolverConstraints.h:93
FORCEINLINE void ApplyRotationDelta(const FVec3 &DR0, const FVec3 &DR1)
Definition JointSolverConstraints.inl:125
void Init(const FPBDJointSolverSettings &SolverSettings, const FPBDJointSettings &JointSettings, const FVec3 &PrevP0, const FRotation3 &PrevQ0, const FVec3 &PrevP1, const FRotation3 &PrevQ1, const FReal InvM0, const FVec3 &InvIL0, const FReal InvM1, const FVec3 &InvIL1, const FRigidTransform3 &XL0, const FRigidTransform3 &XL1)
Definition JointSolverConstraints.inl:5
FRigidTransform3 XLs[MaxConstrainedBodies]
Definition JointSolverConstraints.h:83
FReal InvMs[MaxConstrainedBodies]
Definition JointSolverConstraints.h:85
FVec3 InvILs[MaxConstrainedBodies]
Definition JointSolverConstraints.h:84
Definition PBDJointConstraintTypes.h:114
FReal ParentInvMassScale
Definition PBDJointConstraintTypes.h:141
Definition PBDJointConstraintTypes.h:219
FReal PositionTolerance
Definition PBDJointConstraintTypes.h:229
FReal MaxInertiaRatio
Definition PBDJointConstraintTypes.h:234
FReal MinParentMassRatio
Definition PBDJointConstraintTypes.h:233
FReal AngleTolerance
Definition PBDJointConstraintTypes.h:230
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 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 CHAOS_API void GetSphericalAxisDelta(const FVec3 &X0, const FVec3 &X1, FVec3 &Axis, FReal &Delta)
Definition PBDJointConstraintUtilities.cpp:100
static CHAOS_API FReal GetTwistAngle(const FRotation3 &InTwist)
Definition PBDJointConstraintUtilities.cpp:179
static CHAOS_API FReal GetConeAngleLimit(const FPBDJointSettings &JointSettings, const FVec3 &SwingAxisLocal, const FReal SwingAngle)
Definition PBDJointConstraintUtilities.cpp:373
bool NormalizeSafe(FVec3 &V, FReal EpsilonSq=UE_SMALL_NUMBER)
Definition Utilities.h:492
FMatrix33 Multiply(const FMatrix33 &L, const FMatrix33 &R)
Definition Utilities.h:154
FMatrix33 ComputeWorldSpaceInertia(const FRotation3 &CoMRotation, const FMatrix33 &I)
Definition Utilities.h:327
PMatrix< T, 3, 3 > ComputeJointFactorMatrix(const TVec3< T > &V, const PMatrix< T, 3, 3 > &M, const T &Im)
Definition Utilities.h:349
Definition SkeletalMeshComponent.h:307
@ Y
Definition SimulationModuleBase.h:153
FRealDouble FReal
Definition Real.h:22
TRotation< FReal, 3 > FRotation3
Definition Core.h:19
EJointAngularConstraintIndex
Definition PBDJointConstraintTypes.h:48
PMatrix< FReal, 3, 3 > FMatrix33
Definition Core.h:20
TVector< FReal, 3 > FVec3
Definition Core.h:17
@ V1
Definition NNEModelData.cpp:17
@ V0
Definition NNEModelData.cpp:16
static const FVec3 OtherSwingAxis(const EJointAngularConstraintIndex ConstraintIndex)
Definition PBDJointConstraintTypes.h:90
static const FVec3 Swing1Axis()
Definition PBDJointConstraintTypes.h:66
static const int32 AxisIndex(const EJointAngularConstraintIndex ConstraintIndex)
Definition PBDJointConstraintTypes.h:96
static const FVec3 TwistAxis()
Definition PBDJointConstraintTypes.h:63
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592