UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
CollisionResolutionUtil.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/Pair.h"
7
8namespace Chaos
9{
10 class FBVHParticles;
11 class FImplicitObject;
12 class FPBDCollisionConstraint;
13
14 namespace Collisions
15 {
16 //
17 // Utility
18 //
19
22
23 template<typename TRealType>
25 {
26 // Rigid objects rotational contribution to the impulse.
27 // Vx*M*VxT+Im
28 check(Im > FLT_MIN);
30 -V[2] * (-V[2] * M.M[1][1] + V[1] * M.M[2][1]) + V[1] * (-V[2] * M.M[2][1] + V[1] * M.M[2][2]) + Im,
31 V[2] * (-V[2] * M.M[1][0] + V[1] * M.M[2][0]) - V[0] * (-V[2] * M.M[2][1] + V[1] * M.M[2][2]),
32 -V[1] * (-V[2] * M.M[1][0] + V[1] * M.M[2][0]) + V[0] * (-V[2] * M.M[1][1] + V[1] * M.M[2][1]),
33 V[2] * (V[2] * M.M[0][0] - V[0] * M.M[2][0]) - V[0] * (V[2] * M.M[2][0] - V[0] * M.M[2][2]) + Im,
34 -V[1] * (V[2] * M.M[0][0] - V[0] * M.M[2][0]) + V[0] * (V[2] * M.M[1][0] - V[0] * M.M[2][1]),
35 -V[1] * (-V[1] * M.M[0][0] + V[0] * M.M[1][0]) + V[0] * (-V[1] * M.M[1][0] + V[0] * M.M[1][1]) + Im);
36 }
37
43 template<typename TRealType>
45 {
46 // Rigid objects rotational contribution diagonal to the impulse.
47 // Vx*M*VxT+Im
48 check(Im > FLT_MIN);
49 return TVec3<TRealType>(
50 -V[2] * (-V[2] * M.M[1][1] + V[1] * M.M[2][1]) + V[1] * (-V[2] * M.M[2][1] + V[1] * M.M[2][2]) + Im,
51 V[2] * ( V[2] * M.M[0][0] - V[0] * M.M[2][0]) - V[0] * ( V[2] * M.M[2][0] - V[0] * M.M[2][2]) + Im,
52 -V[1] * (-V[1] * M.M[0][0] + V[0] * M.M[1][0]) + V[0] * (-V[1] * M.M[1][0] + V[0] * M.M[1][1]) + Im);
53 }
54
55 FVec3
57
59 const FVec3& Impulse,
61 const FMatrix33& InvI0,
63 const FMatrix33& InvI1,
64 const FRotation3& Q0,
65 const FVec3& V0,
66 const FVec3& W0,
67 const FRotation3& Q1,
68 const FVec3& V1,
69 const FVec3& W1,
70 const FVec3& ContactOffset0,
71 const FVec3& ContactOffset1,
73 const FVec3& ContactVelocity1);
74
75 bool
77
78 bool
80
81 template <ECollisionUpdateType UpdateType>
84
87
88 }// Collisions
89
90} // Chaos
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define W1
Definition BVHParticles.h:24
Definition ImplicitObject.h:111
Definition Matrix.h:21
Definition ContactPoint.h:42
Definition ParticleHandle.h:987
Definition Vector.h:1000
Definition Array.h:670
TArray< Pair< const FImplicitObject *, FRigidTransform3 > > FindRelevantShapes(const FImplicitObject *ParticleObj, const FRigidTransform3 &ParticlesTM, const FImplicitObject &LevelsetObj, const FRigidTransform3 &LevelsetTM, const FReal Thickness)
Definition CollisionResolutionUtil.cpp:636
FContactPoint SampleObject(const FImplicitObject &Object, const FRigidTransform3 &ObjectTransform, const FBVHParticles &SampleParticles, const FRigidTransform3 &SampleParticlesTransform, FReal CullingDistance)
Definition CollisionResolutionUtil.cpp:522
FVec3 GetEnergyClampedImpulse(const TPBDRigidParticleHandle< FReal, 3 > *PBDRigid0, const TPBDRigidParticleHandle< FReal, 3 > *PBDRigid1, const FVec3 &Impulse, const FVec3 &VectorToPoint1, const FVec3 &VectorToPoint2, const FVec3 &Velocity1, const FVec3 &Velocity2)
Definition CollisionResolutionUtil.cpp:37
bool SampleObjectNoNormal(const FImplicitObject &Object, const FRigidTransform3 &ObjectTransform, const FRigidTransform3 &SampleToObjectTransform, const FVec3 &SampleParticle, FReal Thickness, FContactPoint &Contact)
Definition CollisionResolutionUtil.cpp:123
FRigidTransform3 GetTransform(const TGeometryParticleHandle< FReal, 3 > *Particle)
Definition CollisionResolutionUtil.cpp:30
bool SampleObjectNormalAverageHelper(const FImplicitObject &Object, const FRigidTransform3 &ObjectTransform, const FRigidTransform3 &SampleToObjectTransform, const FVec3 &SampleParticle, FReal Thickness, FReal &TotalThickness, FContactPoint &Contact)
Definition CollisionResolutionUtil.cpp:137
TVec3< TRealType > ComputeFactorDiagonal3(const TVec3< TRealType > &V, const TMatrix33< TRealType > &M, const TRealType Im)
Definition CollisionResolutionUtil.h:44
TMatrix33< TRealType > ComputeFactorMatrix3(const TVec3< TRealType > &V, const TMatrix33< TRealType > &M, const TRealType Im)
Definition CollisionResolutionUtil.h:24
Definition SkeletalMeshComponent.h:307
TRigidTransform< FReal, 3 > FRigidTransform3
Definition Core.h:22
FRealDouble FReal
Definition Real.h:22