UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Chaos::Collisions Namespace Reference

Classes

struct  FCapsuleConvexUpdaterCaller
 
struct  FConvexConvexUpdaterCaller
 
struct  TCapsuleConvexUpdater
 
struct  TCapsuleConvexUpdater< true >
 
struct  TCapsuleImplicitPairTraits
 
struct  TCapsuleImplicitPairTraits< class TImplicitObjectInstanced< FConvex > >
 
struct  TCapsuleImplicitPairTraits< FConvex >
 
struct  TCapsuleImplicitPairTraits< TImplicitObjectScaled< FConvex, 1 > >
 
struct  TConstructCollisionTraits
 
struct  TConvexConvexUpdater
 
struct  TConvexConvexUpdater< true >
 
struct  TConvexImplicitPairTraits
 
struct  TConvexImplicitTraits
 
struct  TConvexImplicitTraits< FImplicitBox3 >
 
struct  TConvexImplicitTraits< FImplicitConvex3 >
 
struct  TConvexImplicitTraits< TImplicitObjectInstanced< FImplicitConvex3 > >
 
struct  TConvexImplicitTraits< TImplicitObjectScaled< FImplicitConvex3 > >
 

Functions

FContactPoint BoxBoxContactPoint (const FImplicitBox3 &Box1, const FImplicitBox3 &Box2, const FRigidTransform3 &Box1TM, const FRigidTransform3 &Box2TM)
 
uint32 BoxBoxClipVerticesAgainstPlane (const FVec3 *InputVertexBuffer, FVec3 *outputVertexBuffer, uint32 ClipPointCount, int32 ClippingAxis, FReal Distance)
 
void ConstructBoxBoxOneShotManifold (const FImplicitBox3 &Box1, const FRigidTransform3 &Box1Transform, const FImplicitBox3 &Box2, const FRigidTransform3 &Box2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
uint32 ReduceManifoldContactPoints (FVec3 *Points, uint32 PointCount)
 General Convexes.
 
uint32 ClipVerticesAgainstPlane (const FVec3 *InputVertexBuffer, FVec3 *OutputVertexBuffer, const uint32 ClipPointCount, const uint32 MaxNumberOfOutputPoints, const FVec3 ClippingPlaneNormal, const FReal PlaneDistance)
 
template<typename ConvexImplicitType1 , typename ConvexImplicitType2 >
FVec3GenerateConvexManifoldClippedVertices (const ConvexImplicitType1 &RefConvex, const ConvexImplicitType2 &OtherConvex, const FRigidTransform3 &OtherToRefTransform, const int32 RefPlaneIndex, const int32 OtherPlaneIndex, const FVec3 &RefPlaneNormal, FVec3 *VertexBuffer1, FVec3 *VertexBuffer2, uint32 &ContactPointCount, const uint32 MaxContactPointCount)
 
template<typename ConvexImplicitType >
FVec3GenerateLineConvexManifoldClippedVerticesSameSpace (const ConvexImplicitType &Convex, const TSegment< FReal > &Segment, const int32 ConvexPlaneIndex, const FVec3 &PlaneNormal, FVec3 *VertexBuffer, int32 &ContactPointCount, const int32 MaxContactPointCount, const FReal PlaneTolerance)
 
template<typename GeometryA , typename GeometryB >
FContactPoint GJKContactPointMargin (const GeometryA &A, const GeometryB &B, const FRigidTransform3 &BToATM, FReal MarginA, FReal MarginB, FGJKSimplexData &InOutGjkWarmStartData, FReal &OutMaxMarginDelta, int32 &VertexIndexA, int32 &VertexIndexB)
 
template<typename GJKShapeA , typename GJKShapeB >
FContactPoint GJKContactPointSameSpace (const GJKShapeA &A, const GJKShapeB &B, FReal &OutMaxMarginDelta, int32 &VertexIndexA, int32 &VertexIndexB, const FVec3 InitialGJKDir=FVec3(-1, 0, 0))
 
template<typename ConvexImplicitType >
void FindBestPlane (const ConvexImplicitType &Convex, const FVec3 &X, const FVec3 &N, const FReal MaxDistance, const int32 PlaneIndex, int32 &BestPlaneIndex, FReal &BestPlaneDot)
 
void FindBestPlaneScaledConvex (const TImplicitObjectScaled< FConvex > &ScaledConvex, const FConvex::FVec3Type &X, const FConvex::FVec3Type &N, const FConvex::FVec3Type &Scale, const FConvex::FVec3Type &ScaleInv, const FConvex::FRealType MaxDistance, const int32 PlaneIndex, int32 &OutBestPlaneIndex, FConvex::FRealType &InOutBestPlaneDot)
 
template<typename ConvexImplicitType >
void CheckPlaneIndex (const int32 PlaneIndex, const ConvexImplicitType &Convex, const FVec3 X, const FVec3 N, const FReal MaxDistance, const int32 VertexIndex)
 
template<typename ConvexImplicitType >
int32 SelectContactPlane (const ConvexImplicitType &Convex, const FVec3 X, const FVec3 N, const FReal InMaxDistance, const int32 VertexIndex)
 
template<>
int32 SelectContactPlane< TImplicitObjectScaled< FConvex > > (const TImplicitObjectScaled< FConvex > &ScaledConvex, const FVec3 InX, const FVec3 InN, const FReal InMaxDistance, const int32 VertexIndex)
 
template<typename ConvexImplicitType >
bool CheckVertexIndex (const ConvexImplicitType &Convex, const int32 VertexIndex)
 
template<typename ConvexImplicitType1 , typename ConvexImplicitType2 >
void ConstructConvexConvexOneShotManifold (const ConvexImplicitType1 &Convex1, const FRigidTransform3 &Convex1Transform, const ConvexImplicitType2 &Convex2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template<typename ConvexType >
void ConstructCapsuleConvexOneShotManifold (const FImplicitCapsule3 &Capsule, const FRigidTransform3 &CapsuleTransform, const ConvexType &Convex, const FRigidTransform3 &ConvexTransform, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
void ConstructCapsuleTriangleOneShotManifold (const FImplicitCapsule3 &Capsule, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template<typename ConvexType >
void ConstructPlanarConvexTriangleOneShotManifold (const ConvexType &Convex, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template void ConstructConvexConvexOneShotManifold< FImplicitBox3, FImplicitBox3 > (const FImplicitBox3 &Implicit1, const FRigidTransform3 &Convex1Transform, const FImplicitBox3 &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< FImplicitBox3, FImplicitConvex3 > (const FImplicitBox3 &Implicit1, const FRigidTransform3 &Convex1Transform, const FImplicitConvex3 &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< FImplicitConvex3, FImplicitBox3 > (const FImplicitConvex3 &Implicit1, const FRigidTransform3 &Convex1Transform, const FImplicitBox3 &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< FImplicitBox3, TImplicitObjectInstanced< FImplicitConvex3 > > (const FImplicitBox3 &Implicit1, const FRigidTransform3 &Convex1Transform, const TImplicitObjectInstanced< FImplicitConvex3 > &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< TImplicitObjectInstanced< FImplicitConvex3 >, FImplicitBox3 > (const TImplicitObjectInstanced< FImplicitConvex3 > &Implicit1, const FRigidTransform3 &Convex1Transform, const FImplicitBox3 &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< FImplicitBox3, TImplicitObjectScaled< FImplicitConvex3 > > (const FImplicitBox3 &Implicit1, const FRigidTransform3 &Convex1Transform, const TImplicitObjectScaled< FImplicitConvex3 > &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< TImplicitObjectScaled< FImplicitConvex3 >, FImplicitBox3 > (const TImplicitObjectScaled< FImplicitConvex3 > &Implicit1, const FRigidTransform3 &Convex1Transform, const FImplicitBox3 &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< FImplicitConvex3, FImplicitConvex3 > (const FImplicitConvex3 &Implicit1, const FRigidTransform3 &Convex1Transform, const FImplicitConvex3 &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< TImplicitObjectInstanced< FImplicitConvex3 >, FImplicitConvex3 > (const TImplicitObjectInstanced< FImplicitConvex3 > &Implicit1, const FRigidTransform3 &Convex1Transform, const FImplicitConvex3 &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< TImplicitObjectScaled< FImplicitConvex3 >, FImplicitConvex3 > (const TImplicitObjectScaled< FImplicitConvex3 > &Implicit1, const FRigidTransform3 &Convex1Transform, const FImplicitConvex3 &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< FImplicitConvex3, TImplicitObjectInstanced< FImplicitConvex3 > > (const FImplicitConvex3 &Implicit1, const FRigidTransform3 &Convex1Transform, const TImplicitObjectInstanced< FImplicitConvex3 > &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< FImplicitConvex3, TImplicitObjectScaled< FImplicitConvex3 > > (const FImplicitConvex3 &Implicit1, const FRigidTransform3 &Convex1Transform, const TImplicitObjectScaled< FImplicitConvex3 > &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< TImplicitObjectInstanced< FImplicitConvex3 >, TImplicitObjectInstanced< FImplicitConvex3 > > (const TImplicitObjectInstanced< FImplicitConvex3 > &Implicit1, const FRigidTransform3 &Convex1Transform, const TImplicitObjectInstanced< FImplicitConvex3 > &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< TImplicitObjectScaled< FImplicitConvex3 >, TImplicitObjectInstanced< FImplicitConvex3 > > (const TImplicitObjectScaled< FImplicitConvex3 > &Implicit1, const FRigidTransform3 &Convex1Transform, const TImplicitObjectInstanced< FImplicitConvex3 > &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< TImplicitObjectInstanced< FImplicitConvex3 >, TImplicitObjectScaled< FImplicitConvex3 > > (const TImplicitObjectInstanced< FImplicitConvex3 > &Implicit1, const FRigidTransform3 &Convex1Transform, const TImplicitObjectScaled< FImplicitConvex3 > &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< TImplicitObjectScaled< FImplicitConvex3 >, TImplicitObjectScaled< FImplicitConvex3 > > (const TImplicitObjectScaled< FImplicitConvex3 > &Implicit1, const FRigidTransform3 &Convex1Transform, const TImplicitObjectScaled< FImplicitConvex3 > &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructCapsuleConvexOneShotManifold (const FImplicitCapsule3 &Capsule, const FRigidTransform3 &CapsuleTransform, const FImplicitConvex3 &Convex, const FRigidTransform3 &ConvexTransform, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template void ConstructCapsuleConvexOneShotManifold (const FImplicitCapsule3 &Capsule, const FRigidTransform3 &CapsuleTransform, const TImplicitObjectInstanced< FImplicitConvex3 > &Convex, const FRigidTransform3 &ConvexTransform, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template void ConstructCapsuleConvexOneShotManifold (const FImplicitCapsule3 &Capsule, const FRigidTransform3 &CapsuleTransform, const TImplicitObjectScaled< FImplicitConvex3 > &Convex, const FRigidTransform3 &ConvexTransform, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template void ConstructCapsuleConvexOneShotManifold (const FImplicitCapsule3 &Capsule, const FRigidTransform3 &CapsuleTransform, const FImplicitBox3 &Convex, const FRigidTransform3 &ConvexTransform, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template void ConstructPlanarConvexTriangleOneShotManifold (const FImplicitConvex3 &Convex, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template void ConstructPlanarConvexTriangleOneShotManifold (const TImplicitObjectInstanced< FImplicitConvex3 > &Convex, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template void ConstructPlanarConvexTriangleOneShotManifold (const TImplicitObjectScaled< FImplicitConvex3 > &Convex, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template void ConstructPlanarConvexTriangleOneShotManifold (const FImplicitBox3 &Convex, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template void ConstructPlanarConvexTriangleOneShotManifold (const TImplicitObjectScaled< FImplicitBox3 > &Convex, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template void ConstructPlanarConvexTriangleOneShotManifold (const TImplicitObjectInstanced< FImplicitBox3 > &Convex, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template void ConstructConvexConvexOneShotManifold< FCapsule, FTriangle > (const FCapsule &Implicit1, const FRigidTransform3 &Convex1Transform, const FTriangle &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< TImplicitObjectScaled< FCapsule, 1 >, FTriangle > (const TImplicitObjectScaled< class FCapsule, 1 > &Implicit1, const FRigidTransform3 &Convex1Transform, const FTriangle &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< FImplicitBox3, FTriangle > (const FImplicitBox3 &Implicit1, const FRigidTransform3 &Convex1Transform, const FTriangle &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< FImplicitConvex3, FTriangle > (const FImplicitConvex3 &Implicit1, const FRigidTransform3 &Convex1Transform, const FTriangle &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< TImplicitObjectScaled< class TBox< FReal, 3 >, 1 >, FTriangle > (const TImplicitObjectScaled< class Chaos::TBox< FReal, 3 >, 1 > &Implicit1, const FRigidTransform3 &Convex1Transform, const FTriangle &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< TImplicitObjectScaled< class FConvex, 1 >, FTriangle > (const Chaos::TImplicitObjectScaled< class FConvex, 1 > &Implicit1, const FRigidTransform3 &Convex1Transform, const FTriangle &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< class FCapsule, class FConvex > (const FCapsule &Implicit1, const FRigidTransform3 &Convex1Transform, const FConvex &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< class FCapsule, TImplicitObjectScaled< class FConvex, 1 > > (const FCapsule &Implicit1, const FRigidTransform3 &Convex1Transform, const TImplicitObjectScaled< class FConvex, 1 > &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< class FCapsule, class TImplicitObjectInstanced< class FConvex > > (const FCapsule &Implicit1, const FRigidTransform3 &Convex1Transform, const TImplicitObjectInstanced< class FConvex > &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< class FCapsule, class TBox< FReal, 3 > > (const FCapsule &Implicit1, const FRigidTransform3 &Convex1Transform, const TBox< FReal, 3 > &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< class FCapsule, TImplicitObjectScaled< class TBox< FReal, 3 >, 1 > > (const FCapsule &Implicit1, const FRigidTransform3 &Convex1Transform, const TImplicitObjectScaled< class TBox< FReal, 3 >, 1 > &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template void ConstructConvexConvexOneShotManifold< class FCapsule, class TImplicitObjectInstanced< class TBox< FReal, 3 > > > (const FCapsule &Implicit1, const FRigidTransform3 &Convex1Transform, const TImplicitObjectInstanced< class TBox< FReal, 3 > > &Implicit2, const FRigidTransform3 &Convex2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
FReal CalculateTriMeshPhiTolerance (const FReal CullDistance)
 
template<typename TriMeshType >
void ConstructSphereTriangleMeshOneShotManifold (const FSphere &Sphere, const FRigidTransform3 &SphereWorldTransform, const TriMeshType &TriangleMesh, const FRigidTransform3 &TriMeshWorldTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void ConstructSphereHeightFieldOneShotManifold (const FSphere &Sphere, const FRigidTransform3 &SphereTransform, const FHeightField &Heightfield, const FRigidTransform3 &HeightfieldTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template<typename ConvexType >
void ConstructConvexTriangleOneShotManifold3 (const ConvexType &Convex, const FRigidTransform3 &ConvexTransform, Private::FMeshContactGenerator &ContactGenerator, const int32 TriangleIndex, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template<typename ConvexType >
void GenerateConvexTriangleOneShotManifold (const ConvexType &Convex, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 Generate a manifold between a convex shape and a single triangle Templated so we can specialize for some shape types.
 
template<>
void GenerateConvexTriangleOneShotManifold< FImplicitCapsule3 > (const FImplicitCapsule3 &Capsule, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template<>
void GenerateConvexTriangleOneShotManifold< FImplicitSphere3 > (const FImplicitSphere3 &Sphere, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template<typename ConvexType >
void GenerateConvexTriangleOneShotManifold (const ConvexType &Convex, const FRigidTransform3 &ConvexTransform, Private::FMeshContactGenerator &ContactGenerator, const int32 TriangleIndex, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template<>
void GenerateConvexTriangleOneShotManifold< FImplicitCapsule3 > (const FImplicitCapsule3 &Capsule, const FRigidTransform3 &ConvexTransform, Private::FMeshContactGenerator &ContactGenerator, const int32 TriangleIndex, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template<>
void GenerateConvexTriangleOneShotManifold< FImplicitSphere3 > (const FImplicitSphere3 &Sphere, const FRigidTransform3 &ConvexTransform, Private::FMeshContactGenerator &ContactGenerator, const int32 TriangleIndex, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template<typename ConvexType , typename MeshType >
void ConstructConvexMeshOneShotManifold2 (const ConvexType &Convex, const FRigidTransform3 &ConvexTransform, const MeshType &Mesh, const FRigidTransform3 &MeshTransform, const FVec3 &MeshScale, const FReal CullDistance, Private::FMeshContactGenerator &ContactGenerator)
 
template<typename ConvexType >
void GenerateConvexTriangleOneShotManifoldMACD_PostManifoldFix (const ConvexType &Convex, const FRigidTransform3 &ConvexTransform, const FVec3 &InConvexRelativeMovement, Private::FMeshContactGenerator &ContactGenerator, const int32 TriangleIndex, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template<typename ConvexType >
void GenerateConvexTriangleOneShotManifoldMACD_PreManifoldFix (const ConvexType &Convex, const FRigidTransform3 &ConvexTransform, const FVec3 &ConvexRelativeMovement, Private::FMeshContactGenerator &ContactGenerator, const int32 TriangleIndex, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template<typename ConvexType >
void GenerateConvexTriangleOneShotManifoldMACD (const ConvexType &Convex, const FRigidTransform3 &ConvexTransform, const FVec3 &ConvexRelativeMovement, Private::FMeshContactGenerator &ContactGenerator, const int32 TriangleIndex, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template<>
void GenerateConvexTriangleOneShotManifoldMACD (const FImplicitSphere3 &Convex, const FRigidTransform3 &ConvexTransform, const FVec3 &InConvexRelativeMovement, Private::FMeshContactGenerator &ContactGenerator, const int32 TriangleIndex, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template<typename ConvexType , typename MeshType >
void ConstructConvexMeshOneShotManifoldMACD (const ConvexType &Convex, const FRigidTransform3 &ConvexTransform, const MeshType &Mesh, const FRigidTransform3 &MeshTransform, const FVec3 &MeshScale, const FVec3 &RelativeMovement, const FReal InCullDistance, Private::FMeshContactGenerator &ContactGenerator)
 
template<typename ConvexType , typename MeshType >
void GenerateConvexMeshContactPoints (const ConvexType &Convex, const MeshType &Mesh, const FAABB3 &MeshQueryBounds, const FRigidTransform3 &MeshToConvexTransform, const FReal CullDistance, FContactTriangleCollector &MeshContacts)
 Create a minimized set of contact points between a convex polyhedron (box, convex) and a non-convex mesh (trimesh, heightfield)
 
template<typename ConvexType , typename MeshType >
void ConstructConvexMeshOneShotManifold (const ConvexType &Convex, const FRigidTransform3 &ConvexTransform, const MeshType &Mesh, const FRigidTransform3 &MeshTransform, const FVec3 &MeshScale, const FReal CullDistance, FContactTriangleCollector &MeshContacts)
 Used by all the convex types to generate a manifold against any mesh type.
 
void ConstructQuadraticConvexTriMeshOneShotManifold (const FImplicitObject &Quadratic, const FRigidTransform3 &Quadraticransform, const FImplicitObject &TriangleMesh, const FRigidTransform3 &TriMeshTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 Build the contact manifold between a Quadratic Convex shape and a TriMesh.
 
void ConstructQuadraticConvexHeightFieldOneShotManifold (const FImplicitObject &Quadratic, const FRigidTransform3 &QuadraticTransform, const FHeightField &HeightField, const FRigidTransform3 &HeightFieldTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 Build the contact manifold between a Quadratic Convex shape (Sphere, Capsule) and a TriMesh.
 
void ConstructPlanarConvexTriMeshOneShotManifold (const FImplicitObject &Convex, const FRigidTransform3 &ConvexTransform, const FImplicitObject &InMesh, const FRigidTransform3 &MeshTransform, FPBDCollisionConstraint &Constraint)
 Populate the Constraint with a manifold of contacts between a Convex and a TriangleMesh.
 
void ConstructPlanarConvexHeightFieldOneShotManifold (const FImplicitObject &Convex, const FRigidTransform3 &ConvexTransform, const FHeightField &Mesh, const FRigidTransform3 &MeshTransform, FPBDCollisionConstraint &Constraint)
 Populate the Constraint with a manifold of contacts between a Convex and a HeightField.
 
void ConstructSphereSphereOneShotManifold (const FSphere &SphereA, const FRigidTransform3 &SphereATransform, const FSphere &SphereB, const FRigidTransform3 &SphereBTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void ConstructSpherePlaneOneShotManifold (const FSphere &Sphere, const FRigidTransform3 &SphereTransform, const TPlane< FReal, 3 > &Plane, const FRigidTransform3 &PlaneTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void ConstructSphereBoxOneShotManifold (const FSphere &Sphere, const FRigidTransform3 &SphereTransform, const FImplicitBox3 &Box, const FRigidTransform3 &BoxTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void ConstructSphereCapsuleOneShotManifold (const FSphere &Sphere, const FRigidTransform3 &SphereTransform, const FCapsule &Capsule, const FRigidTransform3 &CapsuleTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template<typename ConvexType >
void ConstructSphereConvexManifoldImpl (const FImplicitSphere3 &Sphere, const ConvexType &Convex, const FRigidTransform3 &SphereToConvexTransform, const FReal CullDistance, FContactPointManifold &ContactPoints)
 
void ConstructSphereConvexManifold (const FSphere &Sphere, const FRigidTransform3 &SphereTransform, const FImplicitObject3 &Convex, const FRigidTransform3 &ConvexTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void ConstructCapsuleCapsuleOneShotManifold (const FCapsule &CapsuleA, const FRigidTransform3 &CapsuleATransform, const FCapsule &CapsuleB, const FRigidTransform3 &CapsuleBTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
bool ShouldUseCCD (const FGeometryParticleHandle *Particle0, const FVec3 &DeltaX0, const FGeometryParticleHandle *Particle1, const FVec3 &DeltaX1, FVec3 &Dir, FReal &Length)
 Whether CCD should be enabled for a contact given the current particle velocities etc.
 
void UpdateContactPoint (FPBDCollisionConstraint &Constraint, const FContactPoint &ContactPoint, const FReal Dt)
 
void UpdateContactPointNoCull (FPBDCollisionConstraint &Constraint, const FContactPoint &ContactPoint, const FReal Dt, const bool bNoCull=true)
 
const FImplicitObjectGetInstancedImplicit (const FImplicitObject *Implicit0)
 
void UpdateGenericConvexConvexConstraintHelper (const FImplicitObject &A, const FRigidTransform3 &ATM, const FImplicitObject &B, const FRigidTransform3 &BTM, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template<typename TPGeometryClass >
const TPGeometryClassGetInnerObject (const FImplicitObject &Geometry)
 
void UpdateBoxBoxConstraint (const FImplicitBox3 &Box1, const FRigidTransform3 &Box1Transform, const FImplicitBox3 &Box2, const FRigidTransform3 &Box2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void UpdateBoxHeightFieldConstraint (const FImplicitBox3 &A, const FRigidTransform3 &ATransform, const FHeightField &B, const FRigidTransform3 &BTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
FContactPoint BoxPlaneContactPoint (const FImplicitBox3 &Box, const FImplicitPlane3 &Plane, const FRigidTransform3 &BoxTransform, const FRigidTransform3 &PlaneTransform)
 
void UpdateBoxPlaneConstraint (const FImplicitBox3 &A, const FRigidTransform3 &ATransform, const TPlane< FReal, 3 > &B, const FRigidTransform3 &BTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template<typename TriMeshType >
void UpdateBoxTriangleMeshConstraint (const FImplicitBox3 &Box0, const FRigidTransform3 &WorldTransform0, const TriMeshType &TriangleMesh1, const FRigidTransform3 &WorldTransform1, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void UpdateSphereSphereConstraint (const FSphere &Sphere1, const FRigidTransform3 &Sphere1Transform, const FSphere &Sphere2, const FRigidTransform3 &Sphere2Transform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void UpdateSphereHeightFieldConstraint (const FSphere &A, const FRigidTransform3 &ATransform, const FHeightField &B, const FRigidTransform3 &BTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void UpdateSphereHeightFieldConstraintSwept (TGeometryParticleHandle< FReal, 3 > *Particle0, const FSphere &A, const FRigidTransform3 &ATransform, const FHeightField &B, const FRigidTransform3 &BTransform, const FVec3 &Dir, const FReal Length, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void UpdateSpherePlaneConstraint (const FSphere &Sphere, const FRigidTransform3 &SphereTransform, const TPlane< FReal, 3 > &Plane, const FRigidTransform3 &PlaneTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void UpdateSphereBoxConstraint (const FSphere &Sphere, const FRigidTransform3 &SphereTransform, const FImplicitBox3 &Box, const FRigidTransform3 &BoxTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void UpdateSphereCapsuleConstraint (const FSphere &A, const FRigidTransform3 &ATransform, const FCapsule &B, const FRigidTransform3 &BTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void UpdateSphereConvexConstraint (const FSphere &A, const FRigidTransform3 &ATransform, const FImplicitObject3 &B, const FRigidTransform3 &BTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template<typename TriMeshType >
void UpdateSphereTriangleMeshConstraint (const FSphere &Sphere0, const FRigidTransform3 &WorldTransform0, const TriMeshType &TriangleMesh1, const FRigidTransform3 &WorldTransform1, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template<typename TriMeshType >
void UpdateSphereTriangleMeshConstraintSwept (TGeometryParticleHandle< FReal, 3 > *Particle0, const FSphere &Sphere0, const FRigidTransform3 &WorldTransform0, const TriMeshType &TriangleMesh1, const FRigidTransform3 &WorldTransform1, const FVec3 &Dir, const FReal Length, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void UpdateCapsuleCapsuleConstraint (const FCapsule &A, const FRigidTransform3 &ATransform, const FCapsule &B, const FRigidTransform3 &BTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void UpdateCapsuleBoxConstraint (const FCapsule &A, const FRigidTransform3 &ATransform, const FImplicitBox3 &B, const FRigidTransform3 &BTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void UpdateCapsuleGenericConvexConstraintHelper (const FCapsule &A, const FRigidTransform3 &ATM, const FImplicitObject &B, const FRigidTransform3 &BTM, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void UpdateCapsuleHeightFieldConstraint (const FCapsule &A, const FRigidTransform3 &ATransform, const FHeightField &B, const FRigidTransform3 &BTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void UpdateCapsuleHeightFieldConstraintSwept (TGeometryParticleHandle< FReal, 3 > *Particle0, const FCapsule &A, const FRigidTransform3 &ATransform, const FHeightField &B, const FRigidTransform3 &BTransform, const FVec3 &Dir, const FReal Length, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template<typename TriMeshType >
void UpdateCapsuleTriangleMeshConstraint (const FCapsule &Capsule0, const FRigidTransform3 &WorldTransform0, const TriMeshType &TriangleMesh1, const FRigidTransform3 &WorldTransform1, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template<typename TriMeshType >
void UpdateCapsuleTriangleMeshConstraintSwept (TGeometryParticleHandle< FReal, 3 > *Particle0, const FCapsule &Capsule0, const FRigidTransform3 &WorldTransform0, const TriMeshType &TriangleMesh1, const FRigidTransform3 &WorldTransform1, const FVec3 &Dir, const FReal Length, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void UpdateGenericConvexConvexConstraint (const FImplicitObject &Implicit0, const FRigidTransform3 &WorldTransform0, const FImplicitObject &Implicit1, const FRigidTransform3 &WorldTransform1, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void UpdateGenericConvexConvexConstraintSwept (TGeometryParticleHandle< FReal, 3 > *Particle0, const FImplicitObject &Implicit0, const FRigidTransform3 &StartWorldTransform0, TGeometryParticleHandle< FReal, 3 > *Particle1, const FImplicitObject &Implicit1, const FRigidTransform3 &StartWorldTransform1, const FVec3 &Dir, const FReal Length, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void UpdateConvexHeightFieldConstraint (const FImplicitObject &A, const FRigidTransform3 &ATransform, const FHeightField &B, const FRigidTransform3 &BTransform, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void UpdateConvexHeightFieldConstraintSwept (TGeometryParticleHandle< FReal, 3 > *Particle0, const FImplicitObject &A, const FRigidTransform3 &ATransform, const FHeightField &B, const FRigidTransform3 &BTransform, const FVec3 &Dir, const FReal Length, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void UpdateConvexTriangleMeshConstraint (const FImplicitObject &Convex0, const FRigidTransform3 &WorldTransform0, const FImplicitObject &TriangleMesh1, const FRigidTransform3 &WorldTransform1, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
template<typename TriMeshType >
void UpdateConvexTriangleMeshConstraintSwept (TGeometryParticleHandle< FReal, 3 > *Particle0, const FImplicitObject &Convex0, const FRigidTransform3 &WorldTransform0, const TriMeshType &TriangleMesh1, const FRigidTransform3 &WorldTransform1, const FVec3 &Dir, const FReal Length, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void UpdateLevelsetLevelsetConstraint (const FRigidTransform3 &WorldTransform0, const FRigidTransform3 &WorldTransform1, const FReal Dt, FPBDCollisionConstraint &Constraint)
 
void UpdateConstraintFromGeometryImpl (FPBDCollisionConstraint &Constraint, const FRigidTransform3 &WorldTransform0, const FRigidTransform3 &WorldTransform1, const FReal Dt)
 
bool UpdateConstraintFromGeometrySweptImpl (FPBDCollisionConstraint &Constraint, const FRigidTransform3 &WorldTransform0, const FRigidTransform3 &WorldTransform1, const FReal Dt)
 
void UpdateConstraint (FPBDCollisionConstraint &Constraint, const FRigidTransform3 &ShapeWorldTransform0, const FRigidTransform3 &ShapeWorldTransform1, const FReal Dt)
 Update the contact manifold on the constraint.
 
bool UpdateConstraintSwept (FPBDCollisionConstraint &Constraint, const FRigidTransform3 &ShapeStartWorldTransform0, const FRigidTransform3 &ShapeStartWorldTransform1, const FReal Dt)
 Update the contact manifold on the constraint.
 
EContactShapesType CalculateShapePairType (const FGeometryParticleHandle *Particle0, const FImplicitObject *Implicit0, const FGeometryParticleHandle *Particle1, const FImplicitObject *Implicit1, bool &bOutSwap)
 Determine the shape pair type for use in UpdateConstraints.
 
EImplicitObjectType GetImplicitCollisionType (const FGeometryParticleHandle *Particle, const FImplicitObject *Implicit)
 
template<ECollisionUpdateType UpdateType>
void UpdateConstraintFromGeometry (FPBDCollisionConstraint &Constraint, const FRigidTransform3 &ParticleWorldTransform0, const FRigidTransform3 &ParticleWorldTransform1, const FReal Dt)
 
template void UpdateConstraintFromGeometry< ECollisionUpdateType::Any > (FPBDCollisionConstraint &ConstraintBase, const FRigidTransform3 &Transform0, const FRigidTransform3 &Transform1, const FReal Dt)
 
template void UpdateConstraintFromGeometry< ECollisionUpdateType::Deepest > (FPBDCollisionConstraint &ConstraintBase, const FRigidTransform3 &Transform0, const FRigidTransform3 &Transform1, const FReal Dt)
 
FRigidTransform3 GetTransform (const TGeometryParticleHandle< FReal, 3 > *Particle)
 
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)
 
FVec3 GetEnergyClampedImpulse (const FVec3 &Impulse, FReal InvM0, const FMatrix33 &InvI0, FReal InvM1, const FMatrix33 &InvI1, const FRotation3 &Q0, const FVec3 &V0, const FVec3 &W0, const FRotation3 &Q1, const FVec3 &V1, const FVec3 &W1, const FVec3 &ContactOffset0, const FVec3 &ContactOffset1, const FVec3 &ContactVelocity0, const FVec3 &ContactVelocity1)
 
bool SampleObjectNoNormal (const FImplicitObject &Object, const FRigidTransform3 &ObjectTransform, const FRigidTransform3 &SampleToObjectTransform, const FVec3 &SampleParticle, FReal Thickness, FContactPoint &Contact)
 
bool SampleObjectNormalAverageHelper (const FImplicitObject &Object, const FRigidTransform3 &ObjectTransform, const FRigidTransform3 &SampleToObjectTransform, const FVec3 &SampleParticle, FReal Thickness, FReal &TotalThickness, FContactPoint &Contact)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDCollisionConstraints::UpdateLevelsetPartial"), STAT_UpdateLevelsetPartial, STATGROUP_ChaosWide)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDCollisionConstraints::UpdateLevelsetFindParticles"), STAT_UpdateLevelsetFindParticles, STATGROUP_ChaosWide)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDCollisionConstraints::UpdateLevelsetBVHTraversal"), STAT_UpdateLevelsetBVHTraversal, STATGROUP_ChaosWide)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDCollisionConstraints::UpdateLevelsetSignedDistance"), STAT_UpdateLevelsetSignedDistance, STATGROUP_ChaosWide)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDCollisionConstraints::UpdateLevelsetAll"), STAT_UpdateLevelsetAll, STATGROUP_ChaosWide)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDCollisionConstraints::SampleObject"), STAT_SampleObject, STATGROUP_ChaosWide)
 
template<ECollisionUpdateType UpdateType>
FContactPoint SampleObject (const FImplicitObject &Object, const FRigidTransform3 &ObjectTransform, const FBVHParticles &SampleParticles, const FRigidTransform3 &SampleParticlesTransform, FReal CullingDistance)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDCollisionConstraints::FindRelevantShapes"), STAT_FindRelevantShapes, STATGROUP_ChaosWide)
 
TArray< Pair< const FImplicitObject *, FRigidTransform3 > > FindRelevantShapes (const FImplicitObject *ParticleObj, const FRigidTransform3 &ParticlesTM, const FImplicitObject &LevelsetObj, const FRigidTransform3 &LevelsetTM, const FReal Thickness)
 
template FContactPoint SampleObject< ECollisionUpdateType::Any > (const FImplicitObject &Object, const FRigidTransform3 &ObjectTransform, const FBVHParticles &SampleParticles, const FRigidTransform3 &SampleParticlesTransform, FReal CullingDistance)
 
template FContactPoint SampleObject< ECollisionUpdateType::Deepest > (const FImplicitObject &Object, const FRigidTransform3 &ObjectTransform, const FBVHParticles &SampleParticles, const FRigidTransform3 &SampleParticlesTransform, FReal CullingDistance)
 
void CHAOS_API ResetChaosCollisionCounters ()
 
void CHAOS_API ConstructConstraints (TGeometryParticleHandle< FReal, 3 > *Particle0, TGeometryParticleHandle< FReal, 3 > *Particle1, const FImplicitObject *Implicit0, const FPerShapeData *Shape0, const FBVHParticles *Simplicial0, const int32 ImplicitID0, const FImplicitObject *Implicit1, const FPerShapeData *Shape1, const FBVHParticles *Simplicial1, const int32 ImplicitID1, const FRigidTransform3 &ParticleWorldTransform0, const FRigidTransform3 &Transform0, const FRigidTransform3 &ParticleWorldTransform1, const FRigidTransform3 &Transform1, const FReal CullDistance, const FReal Dt, const bool bEnableSweep, const FCollisionContext &Context)
 
void CHAOS_API ConstructConstraints (TGeometryParticleHandle< FReal, 3 > *Particle0, TGeometryParticleHandle< FReal, 3 > *Particle1, const FImplicitObject *Implicit0, const FPerShapeData *Shape0, const FBVHParticles *Simplicial0, const FImplicitObject *Implicit1, const FPerShapeData *Shape1, const FBVHParticles *Simplicial1, const FRigidTransform3 &ParticleWorldTransform0, const FRigidTransform3 &Transform0, const FRigidTransform3 &ParticleWorldTransform1, const FRigidTransform3 &Transform1, const FReal CullDistance, const FReal Dt, const bool bEnableSweep, const FCollisionContext &Context)
 
void CHAOS_API ConstructConstraints (TGeometryParticleHandle< FReal, 3 > *Particle0, TGeometryParticleHandle< FReal, 3 > *Particle1, const FImplicitObject *Implicit0, const FPerShapeData *Shape0, const FBVHParticles *Simplicial0, const FImplicitObject *Implicit1, const FPerShapeData *Shape1, const FBVHParticles *Simplicial1, const FRigidTransform3 &ParticleWorldTransform0, const FRigidTransform3 &Transform0, const FRigidTransform3 &ParticleWorldTransform1, const FRigidTransform3 &Transform1, const FReal CullDistance, const FReal Dt, const FCollisionContext &Context)
 
template<ECollisionUpdateType UpdateType>
void CHAOS_API UpdateConstraintFromGeometry (FPBDCollisionConstraint &Constraint, const FRigidTransform3 &ParticleTransform0, const FRigidTransform3 &ParticleTransform1, const FReal Dt)
 
template<typename TRealType >
TMatrix33< TRealTypeComputeFactorMatrix3 (const TVec3< TRealType > &V, const TMatrix33< TRealType > &M, const TRealType Im)
 
template<typename TRealType >
TVec3< TRealTypeComputeFactorDiagonal3 (const TVec3< TRealType > &V, const TMatrix33< TRealType > &M, const TRealType Im)
 

Variables

int32 NormalAveraging = 0
 
FAutoConsoleVariableRef CVarNormalAveraging (TEXT("p.NormalAveraging2"), NormalAveraging, TEXT(""))
 
int32 SampleMinParticlesForAcceleration = 2048
 
FAutoConsoleVariableRef CVarSampleMinParticlesForAcceleration (TEXT("p.SampleMinParticlesForAcceleration"), SampleMinParticlesForAcceleration, TEXT("The minimum number of particles needed before using an acceleration structure when sampling"))
 

Function Documentation

◆ BoxBoxClipVerticesAgainstPlane()

uint32 Chaos::Collisions::BoxBoxClipVerticesAgainstPlane ( const FVec3 InputVertexBuffer,
FVec3 outputVertexBuffer,
uint32  ClipPointCount,
int32  ClippingAxis,
FReal  Distance 
)

◆ BoxBoxContactPoint()

FContactPoint Chaos::Collisions::BoxBoxContactPoint ( const FImplicitBox3 Box1,
const FImplicitBox3 Box2,
const FRigidTransform3 Box1TM,
const FRigidTransform3 Box2TM 
)

◆ BoxPlaneContactPoint()

FContactPoint Chaos::Collisions::BoxPlaneContactPoint ( const FImplicitBox3 Box,
const FImplicitPlane3 Plane,
const FRigidTransform3 BoxTransform,
const FRigidTransform3 PlaneTransform 
)

◆ CalculateShapePairType()

EContactShapesType CHAOS_API Chaos::Collisions::CalculateShapePairType ( const FGeometryParticleHandle Particle0,
const FImplicitObject Implicit0,
const FGeometryParticleHandle Particle1,
const FImplicitObject Implicit1,
bool bOutSwap 
)

Determine the shape pair type for use in UpdateConstraints.

◆ CalculateTriMeshPhiTolerance()

FReal Chaos::Collisions::CalculateTriMeshPhiTolerance ( const FReal  CullDistance)
inline

◆ CheckPlaneIndex()

void Chaos::Collisions::CheckPlaneIndex ( const int32  PlaneIndex,
const ConvexImplicitType Convex,
const FVec3  X,
const FVec3  N,
const FReal  MaxDistance,
const int32  VertexIndex 
)

◆ CheckVertexIndex()

bool Chaos::Collisions::CheckVertexIndex ( const ConvexImplicitType Convex,
const int32  VertexIndex 
)

◆ ClipVerticesAgainstPlane()

uint32 Chaos::Collisions::ClipVerticesAgainstPlane ( const FVec3 InputVertexBuffer,
FVec3 OutputVertexBuffer,
const uint32  ClipPointCount,
const uint32  MaxNumberOfOutputPoints,
const FVec3  ClippingPlaneNormal,
const FReal  PlaneDistance 
)

◆ ComputeFactorDiagonal3()

template<typename TRealType >
TVec3< TRealType > Chaos::Collisions::ComputeFactorDiagonal3 ( const TVec3< TRealType > &  V,
const TMatrix33< TRealType > &  M,
const TRealType  Im 
)
inline

Compute the diagonal part of the rigid objects rotational contribution

Parameters
VPosition relative to the center of mass
MMass of the particle
ImInertia tensor of the particle

◆ ComputeFactorMatrix3()

template<typename TRealType >
TMatrix33< TRealType > Chaos::Collisions::ComputeFactorMatrix3 ( const TVec3< TRealType > &  V,
const TMatrix33< TRealType > &  M,
const TRealType  Im 
)
inline

◆ ConstructBoxBoxOneShotManifold()

void Chaos::Collisions::ConstructBoxBoxOneShotManifold ( const FImplicitBox3 Box1,
const FRigidTransform3 Box1Transform,
const FImplicitBox3 Box2,
const FRigidTransform3 Box2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructCapsuleCapsuleOneShotManifold()

void Chaos::Collisions::ConstructCapsuleCapsuleOneShotManifold ( const FCapsule CapsuleA,
const FRigidTransform3 CapsuleATransform,
const FCapsule CapsuleB,
const FRigidTransform3 CapsuleBTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructCapsuleConvexOneShotManifold() [1/5]

template<typename ConvexType >
void Chaos::Collisions::ConstructCapsuleConvexOneShotManifold ( const FImplicitCapsule3 Capsule,
const FRigidTransform3 CapsuleTransform,
const ConvexType Convex,
const FRigidTransform3 ConvexTransform,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructCapsuleConvexOneShotManifold() [2/5]

template void Chaos::Collisions::ConstructCapsuleConvexOneShotManifold ( const FImplicitCapsule3 Capsule,
const FRigidTransform3 CapsuleTransform,
const FImplicitBox3 Convex,
const FRigidTransform3 ConvexTransform,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructCapsuleConvexOneShotManifold() [3/5]

template void Chaos::Collisions::ConstructCapsuleConvexOneShotManifold ( const FImplicitCapsule3 Capsule,
const FRigidTransform3 CapsuleTransform,
const FImplicitConvex3 Convex,
const FRigidTransform3 ConvexTransform,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructCapsuleConvexOneShotManifold() [4/5]

template void Chaos::Collisions::ConstructCapsuleConvexOneShotManifold ( const FImplicitCapsule3 Capsule,
const FRigidTransform3 CapsuleTransform,
const TImplicitObjectInstanced< FImplicitConvex3 > &  Convex,
const FRigidTransform3 ConvexTransform,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructCapsuleConvexOneShotManifold() [5/5]

template void Chaos::Collisions::ConstructCapsuleConvexOneShotManifold ( const FImplicitCapsule3 Capsule,
const FRigidTransform3 CapsuleTransform,
const TImplicitObjectScaled< FImplicitConvex3 > &  Convex,
const FRigidTransform3 ConvexTransform,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructCapsuleTriangleOneShotManifold()

void Chaos::Collisions::ConstructCapsuleTriangleOneShotManifold ( const FImplicitCapsule3 Capsule,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructConstraints() [1/3]

void CHAOS_API Chaos::Collisions::ConstructConstraints ( TGeometryParticleHandle< FReal, 3 > *  Particle0,
TGeometryParticleHandle< FReal, 3 > *  Particle1,
const FImplicitObject Implicit0,
const FPerShapeData Shape0,
const FBVHParticles Simplicial0,
const FImplicitObject Implicit1,
const FPerShapeData Shape1,
const FBVHParticles Simplicial1,
const FRigidTransform3 ParticleWorldTransform0,
const FRigidTransform3 Transform0,
const FRigidTransform3 ParticleWorldTransform1,
const FRigidTransform3 Transform1,
const FReal  CullDistance,
const FReal  Dt,
const bool  bEnableSweep,
const FCollisionContext Context 
)
inline

◆ ConstructConstraints() [2/3]

void CHAOS_API Chaos::Collisions::ConstructConstraints ( TGeometryParticleHandle< FReal, 3 > *  Particle0,
TGeometryParticleHandle< FReal, 3 > *  Particle1,
const FImplicitObject Implicit0,
const FPerShapeData Shape0,
const FBVHParticles Simplicial0,
const FImplicitObject Implicit1,
const FPerShapeData Shape1,
const FBVHParticles Simplicial1,
const FRigidTransform3 ParticleWorldTransform0,
const FRigidTransform3 Transform0,
const FRigidTransform3 ParticleWorldTransform1,
const FRigidTransform3 Transform1,
const FReal  CullDistance,
const FReal  Dt,
const FCollisionContext Context 
)
inline

◆ ConstructConstraints() [3/3]

void CHAOS_API Chaos::Collisions::ConstructConstraints ( TGeometryParticleHandle< FReal, 3 > *  Particle0,
TGeometryParticleHandle< FReal, 3 > *  Particle1,
const FImplicitObject Implicit0,
const FPerShapeData Shape0,
const FBVHParticles Simplicial0,
const int32  ImplicitID0,
const FImplicitObject Implicit1,
const FPerShapeData Shape1,
const FBVHParticles Simplicial1,
const int32  ImplicitID1,
const FRigidTransform3 ParticleWorldTransform0,
const FRigidTransform3 Transform0,
const FRigidTransform3 ParticleWorldTransform1,
const FRigidTransform3 Transform1,
const FReal  CullDistance,
const FReal  Dt,
const bool  bEnableSweep,
const FCollisionContext Context 
)
inline

◆ ConstructConvexConvexOneShotManifold()

void Chaos::Collisions::ConstructConvexConvexOneShotManifold ( const ConvexImplicitType1 Convex1,
const FRigidTransform3 Convex1Transform,
const ConvexImplicitType2 Convex2,
const FRigidTransform3 Convex2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructConvexConvexOneShotManifold< class FCapsule, class FConvex >()

template void Chaos::Collisions::ConstructConvexConvexOneShotManifold< class FCapsule, class FConvex > ( const FCapsule Implicit1,
const FRigidTransform3 Convex1Transform,
const FConvex Implicit2,
const FRigidTransform3 Convex2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructConvexConvexOneShotManifold< class FCapsule, class TBox< FReal, 3 > >()

template void Chaos::Collisions::ConstructConvexConvexOneShotManifold< class FCapsule, class TBox< FReal, 3 > > ( const FCapsule Implicit1,
const FRigidTransform3 Convex1Transform,
const TBox< FReal, 3 > &  Implicit2,
const FRigidTransform3 Convex2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructConvexConvexOneShotManifold< class FCapsule, class TImplicitObjectInstanced< class FConvex > >()

template void Chaos::Collisions::ConstructConvexConvexOneShotManifold< class FCapsule, class TImplicitObjectInstanced< class FConvex > > ( const FCapsule Implicit1,
const FRigidTransform3 Convex1Transform,
const TImplicitObjectInstanced< class FConvex > &  Implicit2,
const FRigidTransform3 Convex2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructConvexConvexOneShotManifold< class FCapsule, class TImplicitObjectInstanced< class TBox< FReal, 3 > > >()

template void Chaos::Collisions::ConstructConvexConvexOneShotManifold< class FCapsule, class TImplicitObjectInstanced< class TBox< FReal, 3 > > > ( const FCapsule Implicit1,
const FRigidTransform3 Convex1Transform,
const TImplicitObjectInstanced< class TBox< FReal, 3 > > &  Implicit2,
const FRigidTransform3 Convex2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructConvexConvexOneShotManifold< class FCapsule, TImplicitObjectScaled< class FConvex, 1 > >()

template void Chaos::Collisions::ConstructConvexConvexOneShotManifold< class FCapsule, TImplicitObjectScaled< class FConvex, 1 > > ( const FCapsule Implicit1,
const FRigidTransform3 Convex1Transform,
const TImplicitObjectScaled< class FConvex, 1 > &  Implicit2,
const FRigidTransform3 Convex2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructConvexConvexOneShotManifold< class FCapsule, TImplicitObjectScaled< class TBox< FReal, 3 >, 1 > >()

template void Chaos::Collisions::ConstructConvexConvexOneShotManifold< class FCapsule, TImplicitObjectScaled< class TBox< FReal, 3 >, 1 > > ( const FCapsule Implicit1,
const FRigidTransform3 Convex1Transform,
const TImplicitObjectScaled< class TBox< FReal, 3 >, 1 > &  Implicit2,
const FRigidTransform3 Convex2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructConvexConvexOneShotManifold< FCapsule, FTriangle >()

template void Chaos::Collisions::ConstructConvexConvexOneShotManifold< FCapsule, FTriangle > ( const FCapsule Implicit1,
const FRigidTransform3 Convex1Transform,
const FTriangle Implicit2,
const FRigidTransform3 Convex2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructConvexConvexOneShotManifold< FImplicitBox3, FImplicitBox3 >()

template void Chaos::Collisions::ConstructConvexConvexOneShotManifold< FImplicitBox3, FImplicitBox3 > ( const FImplicitBox3 Implicit1,
const FRigidTransform3 Convex1Transform,
const FImplicitBox3 Implicit2,
const FRigidTransform3 Convex2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructConvexConvexOneShotManifold< FImplicitBox3, FImplicitConvex3 >()

template void Chaos::Collisions::ConstructConvexConvexOneShotManifold< FImplicitBox3, FImplicitConvex3 > ( const FImplicitBox3 Implicit1,
const FRigidTransform3 Convex1Transform,
const FImplicitConvex3 Implicit2,
const FRigidTransform3 Convex2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructConvexConvexOneShotManifold< FImplicitBox3, FTriangle >()

template void Chaos::Collisions::ConstructConvexConvexOneShotManifold< FImplicitBox3, FTriangle > ( const FImplicitBox3 Implicit1,
const FRigidTransform3 Convex1Transform,
const FTriangle Implicit2,
const FRigidTransform3 Convex2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructConvexConvexOneShotManifold< FImplicitBox3, TImplicitObjectInstanced< FImplicitConvex3 > >()

◆ ConstructConvexConvexOneShotManifold< FImplicitBox3, TImplicitObjectScaled< FImplicitConvex3 > >()

template void Chaos::Collisions::ConstructConvexConvexOneShotManifold< FImplicitBox3, TImplicitObjectScaled< FImplicitConvex3 > > ( const FImplicitBox3 Implicit1,
const FRigidTransform3 Convex1Transform,
const TImplicitObjectScaled< FImplicitConvex3 > &  Implicit2,
const FRigidTransform3 Convex2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructConvexConvexOneShotManifold< FImplicitConvex3, FImplicitBox3 >()

template void Chaos::Collisions::ConstructConvexConvexOneShotManifold< FImplicitConvex3, FImplicitBox3 > ( const FImplicitConvex3 Implicit1,
const FRigidTransform3 Convex1Transform,
const FImplicitBox3 Implicit2,
const FRigidTransform3 Convex2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructConvexConvexOneShotManifold< FImplicitConvex3, FImplicitConvex3 >()

template void Chaos::Collisions::ConstructConvexConvexOneShotManifold< FImplicitConvex3, FImplicitConvex3 > ( const FImplicitConvex3 Implicit1,
const FRigidTransform3 Convex1Transform,
const FImplicitConvex3 Implicit2,
const FRigidTransform3 Convex2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructConvexConvexOneShotManifold< FImplicitConvex3, FTriangle >()

template void Chaos::Collisions::ConstructConvexConvexOneShotManifold< FImplicitConvex3, FTriangle > ( const FImplicitConvex3 Implicit1,
const FRigidTransform3 Convex1Transform,
const FTriangle Implicit2,
const FRigidTransform3 Convex2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructConvexConvexOneShotManifold< FImplicitConvex3, TImplicitObjectInstanced< FImplicitConvex3 > >()

◆ ConstructConvexConvexOneShotManifold< FImplicitConvex3, TImplicitObjectScaled< FImplicitConvex3 > >()

◆ ConstructConvexConvexOneShotManifold< TImplicitObjectInstanced< FImplicitConvex3 >, FImplicitBox3 >()

◆ ConstructConvexConvexOneShotManifold< TImplicitObjectInstanced< FImplicitConvex3 >, FImplicitConvex3 >()

◆ ConstructConvexConvexOneShotManifold< TImplicitObjectInstanced< FImplicitConvex3 >, TImplicitObjectInstanced< FImplicitConvex3 > >()

◆ ConstructConvexConvexOneShotManifold< TImplicitObjectInstanced< FImplicitConvex3 >, TImplicitObjectScaled< FImplicitConvex3 > >()

◆ ConstructConvexConvexOneShotManifold< TImplicitObjectScaled< class FConvex, 1 >, FTriangle >()

template void Chaos::Collisions::ConstructConvexConvexOneShotManifold< TImplicitObjectScaled< class FConvex, 1 >, FTriangle > ( const Chaos::TImplicitObjectScaled< class FConvex, 1 > &  Implicit1,
const FRigidTransform3 Convex1Transform,
const FTriangle Implicit2,
const FRigidTransform3 Convex2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructConvexConvexOneShotManifold< TImplicitObjectScaled< class TBox< FReal, 3 >, 1 >, FTriangle >()

template void Chaos::Collisions::ConstructConvexConvexOneShotManifold< TImplicitObjectScaled< class TBox< FReal, 3 >, 1 >, FTriangle > ( const TImplicitObjectScaled< class Chaos::TBox< FReal, 3 >, 1 > &  Implicit1,
const FRigidTransform3 Convex1Transform,
const FTriangle Implicit2,
const FRigidTransform3 Convex2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructConvexConvexOneShotManifold< TImplicitObjectScaled< FCapsule, 1 >, FTriangle >()

template void Chaos::Collisions::ConstructConvexConvexOneShotManifold< TImplicitObjectScaled< FCapsule, 1 >, FTriangle > ( const TImplicitObjectScaled< class FCapsule, 1 > &  Implicit1,
const FRigidTransform3 Convex1Transform,
const FTriangle Implicit2,
const FRigidTransform3 Convex2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructConvexConvexOneShotManifold< TImplicitObjectScaled< FImplicitConvex3 >, FImplicitBox3 >()

template void Chaos::Collisions::ConstructConvexConvexOneShotManifold< TImplicitObjectScaled< FImplicitConvex3 >, FImplicitBox3 > ( const TImplicitObjectScaled< FImplicitConvex3 > &  Implicit1,
const FRigidTransform3 Convex1Transform,
const FImplicitBox3 Implicit2,
const FRigidTransform3 Convex2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructConvexConvexOneShotManifold< TImplicitObjectScaled< FImplicitConvex3 >, FImplicitConvex3 >()

◆ ConstructConvexConvexOneShotManifold< TImplicitObjectScaled< FImplicitConvex3 >, TImplicitObjectInstanced< FImplicitConvex3 > >()

◆ ConstructConvexConvexOneShotManifold< TImplicitObjectScaled< FImplicitConvex3 >, TImplicitObjectScaled< FImplicitConvex3 > >()

◆ ConstructConvexMeshOneShotManifold()

template<typename ConvexType , typename MeshType >
void Chaos::Collisions::ConstructConvexMeshOneShotManifold ( const ConvexType Convex,
const FRigidTransform3 ConvexTransform,
const MeshType &  Mesh,
const FRigidTransform3 MeshTransform,
const FVec3 MeshScale,
const FReal  CullDistance,
FContactTriangleCollector MeshContacts 
)

Used by all the convex types to generate a manifold against any mesh type.

◆ ConstructConvexMeshOneShotManifold2()

template<typename ConvexType , typename MeshType >
void Chaos::Collisions::ConstructConvexMeshOneShotManifold2 ( const ConvexType Convex,
const FRigidTransform3 ConvexTransform,
const MeshType &  Mesh,
const FRigidTransform3 MeshTransform,
const FVec3 MeshScale,
const FReal  CullDistance,
Private::FMeshContactGenerator ContactGenerator 
)

◆ ConstructConvexMeshOneShotManifoldMACD()

template<typename ConvexType , typename MeshType >
void Chaos::Collisions::ConstructConvexMeshOneShotManifoldMACD ( const ConvexType Convex,
const FRigidTransform3 ConvexTransform,
const MeshType &  Mesh,
const FRigidTransform3 MeshTransform,
const FVec3 MeshScale,
const FVec3 RelativeMovement,
const FReal  InCullDistance,
Private::FMeshContactGenerator ContactGenerator 
)

◆ ConstructConvexTriangleOneShotManifold3()

template<typename ConvexType >
void Chaos::Collisions::ConstructConvexTriangleOneShotManifold3 ( const ConvexType Convex,
const FRigidTransform3 ConvexTransform,
Private::FMeshContactGenerator ContactGenerator,
const int32  TriangleIndex,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructPlanarConvexHeightFieldOneShotManifold()

void Chaos::Collisions::ConstructPlanarConvexHeightFieldOneShotManifold ( const FImplicitObject Convex,
const FRigidTransform3 ConvexTransform,
const FHeightField Mesh,
const FRigidTransform3 MeshTransform,
FPBDCollisionConstraint Constraint 
)

Populate the Constraint with a manifold of contacts between a Convex and a HeightField.

Build the contact manifold between a Planar Convex shape and a HeightField.

Parameters
ConvexA convex polyhedron (Box, Convex) that may be wrapped in Scaled or Instanced
Convexan ImplicitObject that must be a box, convex, or a wrapper around it. Asserts if not

◆ ConstructPlanarConvexTriangleOneShotManifold() [1/7]

template<typename ConvexType >
void Chaos::Collisions::ConstructPlanarConvexTriangleOneShotManifold ( const ConvexType Convex,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructPlanarConvexTriangleOneShotManifold() [2/7]

template void Chaos::Collisions::ConstructPlanarConvexTriangleOneShotManifold ( const FImplicitBox3 Convex,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructPlanarConvexTriangleOneShotManifold() [3/7]

template void Chaos::Collisions::ConstructPlanarConvexTriangleOneShotManifold ( const FImplicitConvex3 Convex,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructPlanarConvexTriangleOneShotManifold() [4/7]

template void Chaos::Collisions::ConstructPlanarConvexTriangleOneShotManifold ( const TImplicitObjectInstanced< FImplicitBox3 > &  Convex,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructPlanarConvexTriangleOneShotManifold() [5/7]

template void Chaos::Collisions::ConstructPlanarConvexTriangleOneShotManifold ( const TImplicitObjectInstanced< FImplicitConvex3 > &  Convex,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructPlanarConvexTriangleOneShotManifold() [6/7]

template void Chaos::Collisions::ConstructPlanarConvexTriangleOneShotManifold ( const TImplicitObjectScaled< FImplicitBox3 > &  Convex,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructPlanarConvexTriangleOneShotManifold() [7/7]

template void Chaos::Collisions::ConstructPlanarConvexTriangleOneShotManifold ( const TImplicitObjectScaled< FImplicitConvex3 > &  Convex,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructPlanarConvexTriMeshOneShotManifold()

void Chaos::Collisions::ConstructPlanarConvexTriMeshOneShotManifold ( const FImplicitObject Convex,
const FRigidTransform3 ConvexTransform,
const FImplicitObject InMesh,
const FRigidTransform3 MeshTransform,
FPBDCollisionConstraint Constraint 
)

Populate the Constraint with a manifold of contacts between a Convex and a TriangleMesh.

Build the contact manifold between a Planar Convex shape and a TriMesh.

Parameters
ConvexA convex polyhedron (Box, Convex) that may be wrapped in Scaled or Instanced
InMeshA TriangleMesh ImplicitObject that may be wrapped in Scaled or Instaned
Convexan ImplicitObject that must be a box, convex, or a wrapper around it. Asserts if not
TriMeshan ImplicitObject that must be FTriangleMeshImplicitObject or a wrapper around it. Asserts if not

◆ ConstructQuadraticConvexHeightFieldOneShotManifold()

void Chaos::Collisions::ConstructQuadraticConvexHeightFieldOneShotManifold ( const FImplicitObject Quadratic,
const FRigidTransform3 QuadraticTransform,
const FHeightField HeightField,
const FRigidTransform3 HeightFieldTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

Build the contact manifold between a Quadratic Convex shape (Sphere, Capsule) and a TriMesh.

Parameters
Convexan ImplicitObject that must be a sphere or capsule. Assert if not

◆ ConstructQuadraticConvexTriMeshOneShotManifold()

void Chaos::Collisions::ConstructQuadraticConvexTriMeshOneShotManifold ( const FImplicitObject Quadratic,
const FRigidTransform3 Quadraticransform,
const FImplicitObject TriangleMesh,
const FRigidTransform3 TriMeshTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

Build the contact manifold between a Quadratic Convex shape and a TriMesh.

Parameters
Convexan ImplicitObject that must be a sphere or capsule. Assert if not
TriMeshan ImplicitObject that must be FTriangleMeshImplicitObject or a wrapper around it. Asserts if not

◆ ConstructSphereBoxOneShotManifold()

void Chaos::Collisions::ConstructSphereBoxOneShotManifold ( const FSphere Sphere,
const FRigidTransform3 SphereTransform,
const FImplicitBox3 Box,
const FRigidTransform3 BoxTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructSphereCapsuleOneShotManifold()

void Chaos::Collisions::ConstructSphereCapsuleOneShotManifold ( const FSphere Sphere,
const FRigidTransform3 SphereTransform,
const FCapsule Capsule,
const FRigidTransform3 CapsuleTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructSphereConvexManifold()

void Chaos::Collisions::ConstructSphereConvexManifold ( const FSphere Sphere,
const FRigidTransform3 SphereTransform,
const FImplicitObject3 Convex,
const FRigidTransform3 ConvexTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructSphereConvexManifoldImpl()

template<typename ConvexType >
void Chaos::Collisions::ConstructSphereConvexManifoldImpl ( const FImplicitSphere3 Sphere,
const ConvexType Convex,
const FRigidTransform3 SphereToConvexTransform,
const FReal  CullDistance,
FContactPointManifold ContactPoints 
)

◆ ConstructSphereHeightFieldOneShotManifold()

void Chaos::Collisions::ConstructSphereHeightFieldOneShotManifold ( const FSphere Sphere,
const FRigidTransform3 SphereTransform,
const FHeightField Heightfield,
const FRigidTransform3 HeightfieldTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructSpherePlaneOneShotManifold()

void Chaos::Collisions::ConstructSpherePlaneOneShotManifold ( const FSphere Sphere,
const FRigidTransform3 SphereTransform,
const TPlane< FReal, 3 > &  Plane,
const FRigidTransform3 PlaneTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructSphereSphereOneShotManifold()

void Chaos::Collisions::ConstructSphereSphereOneShotManifold ( const FSphere SphereA,
const FRigidTransform3 SphereATransform,
const FSphere SphereB,
const FRigidTransform3 SphereBTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ ConstructSphereTriangleMeshOneShotManifold()

template<typename TriMeshType >
void Chaos::Collisions::ConstructSphereTriangleMeshOneShotManifold ( const FSphere Sphere,
const FRigidTransform3 SphereWorldTransform,
const TriMeshType TriangleMesh,
const FRigidTransform3 TriMeshWorldTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ DECLARE_CYCLE_STAT() [1/7]

Chaos::Collisions::DECLARE_CYCLE_STAT ( TEXT("TPBDCollisionConstraints::FindRelevantShapes")  ,
STAT_FindRelevantShapes  ,
STATGROUP_ChaosWide   
)

◆ DECLARE_CYCLE_STAT() [2/7]

Chaos::Collisions::DECLARE_CYCLE_STAT ( TEXT("TPBDCollisionConstraints::SampleObject")  ,
STAT_SampleObject  ,
STATGROUP_ChaosWide   
)

◆ DECLARE_CYCLE_STAT() [3/7]

Chaos::Collisions::DECLARE_CYCLE_STAT ( TEXT("TPBDCollisionConstraints::UpdateLevelsetAll")  ,
STAT_UpdateLevelsetAll  ,
STATGROUP_ChaosWide   
)

◆ DECLARE_CYCLE_STAT() [4/7]

Chaos::Collisions::DECLARE_CYCLE_STAT ( TEXT("TPBDCollisionConstraints::UpdateLevelsetBVHTraversal")  ,
STAT_UpdateLevelsetBVHTraversal  ,
STATGROUP_ChaosWide   
)

◆ DECLARE_CYCLE_STAT() [5/7]

Chaos::Collisions::DECLARE_CYCLE_STAT ( TEXT("TPBDCollisionConstraints::UpdateLevelsetFindParticles")  ,
STAT_UpdateLevelsetFindParticles  ,
STATGROUP_ChaosWide   
)

◆ DECLARE_CYCLE_STAT() [6/7]

Chaos::Collisions::DECLARE_CYCLE_STAT ( TEXT("TPBDCollisionConstraints::UpdateLevelsetPartial")  ,
STAT_UpdateLevelsetPartial  ,
STATGROUP_ChaosWide   
)

◆ DECLARE_CYCLE_STAT() [7/7]

Chaos::Collisions::DECLARE_CYCLE_STAT ( TEXT("TPBDCollisionConstraints::UpdateLevelsetSignedDistance")  ,
STAT_UpdateLevelsetSignedDistance  ,
STATGROUP_ChaosWide   
)

◆ FindBestPlane()

void Chaos::Collisions::FindBestPlane ( const ConvexImplicitType Convex,
const FVec3 X,
const FVec3 N,
const FReal  MaxDistance,
const int32  PlaneIndex,
int32 BestPlaneIndex,
FReal BestPlaneDot 
)

◆ FindBestPlaneScaledConvex()

void Chaos::Collisions::FindBestPlaneScaledConvex ( const TImplicitObjectScaled< FConvex > &  ScaledConvex,
const FConvex::FVec3Type X,
const FConvex::FVec3Type N,
const FConvex::FVec3Type Scale,
const FConvex::FVec3Type ScaleInv,
const FConvex::FRealType  MaxDistance,
const int32  PlaneIndex,
int32 OutBestPlaneIndex,
FConvex::FRealType InOutBestPlaneDot 
)

◆ FindRelevantShapes()

TArray< Pair< const FImplicitObject *, FRigidTransform3 > > Chaos::Collisions::FindRelevantShapes ( const FImplicitObject ParticleObj,
const FRigidTransform3 ParticlesTM,
const FImplicitObject LevelsetObj,
const FRigidTransform3 LevelsetTM,
const FReal  Thickness 
)

◆ GenerateConvexManifoldClippedVertices()

FVec3 * Chaos::Collisions::GenerateConvexManifoldClippedVertices ( const ConvexImplicitType1 RefConvex,
const ConvexImplicitType2 OtherConvex,
const FRigidTransform3 OtherToRefTransform,
const int32  RefPlaneIndex,
const int32  OtherPlaneIndex,
const FVec3 RefPlaneNormal,
FVec3 VertexBuffer1,
FVec3 VertexBuffer2,
uint32 ContactPointCount,
const uint32  MaxContactPointCount 
)

◆ GenerateConvexMeshContactPoints()

template<typename ConvexType , typename MeshType >
void Chaos::Collisions::GenerateConvexMeshContactPoints ( const ConvexType Convex,
const MeshType &  Mesh,
const FAABB3 MeshQueryBounds,
const FRigidTransform3 MeshToConvexTransform,
const FReal  CullDistance,
FContactTriangleCollector MeshContacts 
)

Create a minimized set of contact points between a convex polyhedron (box, convex) and a non-convex mesh (trimesh, heightfield)

Template Parameters
ConvexTypeany convex type (Sphere, Capsule, Box, Convex, possibly with a scaled or instanced)
MeshTypeany triangle mesh type (HeightField or TriangleMesh, without a scaled or instanced wrapper)
Parameters
MeshQueryBoundsTriangles overlapping this box will be tested. Should be in the space of the mesh.
MeshToConvexTransformThe transform from Mesh space to Convex space. This low-level convex-triangle collision detection is performed in Convex space.
See also
ConstructPlanarConvexTriMeshOneShotManifoldImp, ConstructPlanarConvexHeightfieldOneShotManifoldImp

◆ GenerateConvexTriangleOneShotManifold() [1/2]

template<typename ConvexType >
void Chaos::Collisions::GenerateConvexTriangleOneShotManifold ( const ConvexType Convex,
const FRigidTransform3 ConvexTransform,
Private::FMeshContactGenerator ContactGenerator,
const int32  TriangleIndex,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ GenerateConvexTriangleOneShotManifold() [2/2]

template<typename ConvexType >
void Chaos::Collisions::GenerateConvexTriangleOneShotManifold ( const ConvexType Convex,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

Generate a manifold between a convex shape and a single triangle Templated so we can specialize for some shape types.

◆ GenerateConvexTriangleOneShotManifold< FImplicitCapsule3 >() [1/2]

template<>
void Chaos::Collisions::GenerateConvexTriangleOneShotManifold< FImplicitCapsule3 > ( const FImplicitCapsule3 Capsule,
const FRigidTransform3 ConvexTransform,
Private::FMeshContactGenerator ContactGenerator,
const int32  TriangleIndex,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ GenerateConvexTriangleOneShotManifold< FImplicitCapsule3 >() [2/2]

template<>
void Chaos::Collisions::GenerateConvexTriangleOneShotManifold< FImplicitCapsule3 > ( const FImplicitCapsule3 Capsule,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ GenerateConvexTriangleOneShotManifold< FImplicitSphere3 >() [1/2]

template<>
void Chaos::Collisions::GenerateConvexTriangleOneShotManifold< FImplicitSphere3 > ( const FImplicitSphere3 Sphere,
const FRigidTransform3 ConvexTransform,
Private::FMeshContactGenerator ContactGenerator,
const int32  TriangleIndex,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ GenerateConvexTriangleOneShotManifold< FImplicitSphere3 >() [2/2]

template<>
void Chaos::Collisions::GenerateConvexTriangleOneShotManifold< FImplicitSphere3 > ( const FImplicitSphere3 Sphere,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ GenerateConvexTriangleOneShotManifoldMACD() [1/2]

template<typename ConvexType >
void Chaos::Collisions::GenerateConvexTriangleOneShotManifoldMACD ( const ConvexType Convex,
const FRigidTransform3 ConvexTransform,
const FVec3 ConvexRelativeMovement,
Private::FMeshContactGenerator ContactGenerator,
const int32  TriangleIndex,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ GenerateConvexTriangleOneShotManifoldMACD() [2/2]

template<>
void Chaos::Collisions::GenerateConvexTriangleOneShotManifoldMACD ( const FImplicitSphere3 Convex,
const FRigidTransform3 ConvexTransform,
const FVec3 InConvexRelativeMovement,
Private::FMeshContactGenerator ContactGenerator,
const int32  TriangleIndex,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ GenerateConvexTriangleOneShotManifoldMACD_PostManifoldFix()

template<typename ConvexType >
void Chaos::Collisions::GenerateConvexTriangleOneShotManifoldMACD_PostManifoldFix ( const ConvexType Convex,
const FRigidTransform3 ConvexTransform,
const FVec3 InConvexRelativeMovement,
Private::FMeshContactGenerator ContactGenerator,
const int32  TriangleIndex,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ GenerateConvexTriangleOneShotManifoldMACD_PreManifoldFix()

template<typename ConvexType >
void Chaos::Collisions::GenerateConvexTriangleOneShotManifoldMACD_PreManifoldFix ( const ConvexType Convex,
const FRigidTransform3 ConvexTransform,
const FVec3 ConvexRelativeMovement,
Private::FMeshContactGenerator ContactGenerator,
const int32  TriangleIndex,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ GenerateLineConvexManifoldClippedVerticesSameSpace()

FVec3 * Chaos::Collisions::GenerateLineConvexManifoldClippedVerticesSameSpace ( const ConvexImplicitType Convex,
const TSegment< FReal > &  Segment,
const int32  ConvexPlaneIndex,
const FVec3 PlaneNormal,
FVec3 VertexBuffer,
int32 ContactPointCount,
const int32  MaxContactPointCount,
const FReal  PlaneTolerance 
)

◆ GetEnergyClampedImpulse() [1/2]

FVec3 Chaos::Collisions::GetEnergyClampedImpulse ( const FVec3 Impulse,
FReal  InvM0,
const FMatrix33 InvI0,
FReal  InvM1,
const FMatrix33 InvI1,
const FRotation3 Q0,
const FVec3 V0,
const FVec3 W0,
const FRotation3 Q1,
const FVec3 V1,
const FVec3 W1,
const FVec3 ContactOffset0,
const FVec3 ContactOffset1,
const FVec3 ContactVelocity0,
const FVec3 ContactVelocity1 
)

◆ GetEnergyClampedImpulse() [2/2]

FVec3 Chaos::Collisions::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 
)

◆ GetImplicitCollisionType()

EImplicitObjectType CHAOS_API Chaos::Collisions::GetImplicitCollisionType ( const FGeometryParticleHandle Particle,
const FImplicitObject Implicit 
)

◆ GetInnerObject()

const TPGeometryClass * Chaos::Collisions::GetInnerObject ( const FImplicitObject Geometry)

◆ GetInstancedImplicit()

const FImplicitObject * Chaos::Collisions::GetInstancedImplicit ( const FImplicitObject Implicit0)
inline

◆ GetTransform()

FRigidTransform3 Chaos::Collisions::GetTransform ( const TGeometryParticleHandle< FReal, 3 > *  Particle)

◆ GJKContactPointMargin()

FContactPoint Chaos::Collisions::GJKContactPointMargin ( const GeometryA A,
const GeometryB B,
const FRigidTransform3 BToATM,
FReal  MarginA,
FReal  MarginB,
FGJKSimplexData InOutGjkWarmStartData,
FReal OutMaxMarginDelta,
int32 VertexIndexA,
int32 VertexIndexB 
)

◆ GJKContactPointSameSpace()

FContactPoint Chaos::Collisions::GJKContactPointSameSpace ( const GJKShapeA A,
const GJKShapeB B,
FReal OutMaxMarginDelta,
int32 VertexIndexA,
int32 VertexIndexB,
const FVec3  InitialGJKDir = FVec3(-1,0,0) 
)

◆ ReduceManifoldContactPoints()

uint32 Chaos::Collisions::ReduceManifoldContactPoints ( FVec3 Points,
uint32  PointCount 
)

General Convexes.

◆ ResetChaosCollisionCounters()

void CHAOS_API Chaos::Collisions::ResetChaosCollisionCounters ( )
inline

◆ SampleObject()

template<ECollisionUpdateType UpdateType>
FContactPoint Chaos::Collisions::SampleObject ( const FImplicitObject Object,
const FRigidTransform3 ObjectTransform,
const FBVHParticles SampleParticles,
const FRigidTransform3 SampleParticlesTransform,
FReal  CullingDistance 
)

◆ SampleObject< ECollisionUpdateType::Any >()

template FContactPoint Chaos::Collisions::SampleObject< ECollisionUpdateType::Any > ( const FImplicitObject Object,
const FRigidTransform3 ObjectTransform,
const FBVHParticles SampleParticles,
const FRigidTransform3 SampleParticlesTransform,
FReal  CullingDistance 
)

◆ SampleObject< ECollisionUpdateType::Deepest >()

template FContactPoint Chaos::Collisions::SampleObject< ECollisionUpdateType::Deepest > ( const FImplicitObject Object,
const FRigidTransform3 ObjectTransform,
const FBVHParticles SampleParticles,
const FRigidTransform3 SampleParticlesTransform,
FReal  CullingDistance 
)

◆ SampleObjectNoNormal()

bool Chaos::Collisions::SampleObjectNoNormal ( const FImplicitObject Object,
const FRigidTransform3 ObjectTransform,
const FRigidTransform3 SampleToObjectTransform,
const FVec3 SampleParticle,
FReal  Thickness,
FContactPoint Contact 
)

◆ SampleObjectNormalAverageHelper()

bool Chaos::Collisions::SampleObjectNormalAverageHelper ( const FImplicitObject Object,
const FRigidTransform3 ObjectTransform,
const FRigidTransform3 SampleToObjectTransform,
const FVec3 SampleParticle,
FReal  Thickness,
FReal TotalThickness,
FContactPoint Contact 
)

◆ SelectContactPlane()

int32 Chaos::Collisions::SelectContactPlane ( const ConvexImplicitType Convex,
const FVec3  X,
const FVec3  N,
const FReal  InMaxDistance,
const int32  VertexIndex 
)

◆ SelectContactPlane< TImplicitObjectScaled< FConvex > >()

template<>
int32 Chaos::Collisions::SelectContactPlane< TImplicitObjectScaled< FConvex > > ( const TImplicitObjectScaled< FConvex > &  ScaledConvex,
const FVec3  InX,
const FVec3  InN,
const FReal  InMaxDistance,
const int32  VertexIndex 
)

◆ ShouldUseCCD()

bool CHAOS_API Chaos::Collisions::ShouldUseCCD ( const FGeometryParticleHandle Particle0,
const FVec3 DeltaX0,
const FGeometryParticleHandle Particle1,
const FVec3 DeltaX1,
FVec3 Dir,
FReal Length 
)

Whether CCD should be enabled for a contact given the current particle velocities etc.

Determines if body should use CCD. If using CCD, computes Dir and Length of sweep. If either of the object is CCD-enabled and fast moving, we enable CCD for the constraint. We compare P-X and BoundingBox().Extents().Min() to determine if an object is fast-moving or not. Here is how this works: Think about a box colliding with a static plane. If P-X <= 0.5 * BoundingBox().Extents().Min(), it is impossible for the box to tunnel through the plane. Otherwise, it is possible but not necessary to have tunneling. Now think about two boxes. If P-X <= 0.5 * BoundingBox().Extents().Min() both boxes, it is impossible for one box to tunnel through the other (it is still possible for a box's corner to move through another box's corner). So far this is sufficient for us to determine CCD constraints for our primitives. But the caveat is that for arbitrary objects (think about a rod that is not axis aligned), min of a bounding box extent can be too large and tunneling could still happen if P-X falls below this threshold.

◆ UpdateBoxBoxConstraint()

void Chaos::Collisions::UpdateBoxBoxConstraint ( const FImplicitBox3 Box1,
const FRigidTransform3 Box1Transform,
const FImplicitBox3 Box2,
const FRigidTransform3 Box2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateBoxHeightFieldConstraint()

void Chaos::Collisions::UpdateBoxHeightFieldConstraint ( const FImplicitBox3 A,
const FRigidTransform3 ATransform,
const FHeightField B,
const FRigidTransform3 BTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateBoxPlaneConstraint()

void Chaos::Collisions::UpdateBoxPlaneConstraint ( const FImplicitBox3 A,
const FRigidTransform3 ATransform,
const TPlane< FReal, 3 > &  B,
const FRigidTransform3 BTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateBoxTriangleMeshConstraint()

template<typename TriMeshType >
void Chaos::Collisions::UpdateBoxTriangleMeshConstraint ( const FImplicitBox3 Box0,
const FRigidTransform3 WorldTransform0,
const TriMeshType TriangleMesh1,
const FRigidTransform3 WorldTransform1,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateCapsuleBoxConstraint()

void Chaos::Collisions::UpdateCapsuleBoxConstraint ( const FCapsule A,
const FRigidTransform3 ATransform,
const FImplicitBox3 B,
const FRigidTransform3 BTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateCapsuleCapsuleConstraint()

void Chaos::Collisions::UpdateCapsuleCapsuleConstraint ( const FCapsule A,
const FRigidTransform3 ATransform,
const FCapsule B,
const FRigidTransform3 BTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateCapsuleGenericConvexConstraintHelper()

void Chaos::Collisions::UpdateCapsuleGenericConvexConstraintHelper ( const FCapsule A,
const FRigidTransform3 ATM,
const FImplicitObject B,
const FRigidTransform3 BTM,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateCapsuleHeightFieldConstraint()

void Chaos::Collisions::UpdateCapsuleHeightFieldConstraint ( const FCapsule A,
const FRigidTransform3 ATransform,
const FHeightField B,
const FRigidTransform3 BTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateCapsuleHeightFieldConstraintSwept()

void Chaos::Collisions::UpdateCapsuleHeightFieldConstraintSwept ( TGeometryParticleHandle< FReal, 3 > *  Particle0,
const FCapsule A,
const FRigidTransform3 ATransform,
const FHeightField B,
const FRigidTransform3 BTransform,
const FVec3 Dir,
const FReal  Length,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateCapsuleTriangleMeshConstraint()

template<typename TriMeshType >
void Chaos::Collisions::UpdateCapsuleTriangleMeshConstraint ( const FCapsule Capsule0,
const FRigidTransform3 WorldTransform0,
const TriMeshType TriangleMesh1,
const FRigidTransform3 WorldTransform1,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateCapsuleTriangleMeshConstraintSwept()

template<typename TriMeshType >
void Chaos::Collisions::UpdateCapsuleTriangleMeshConstraintSwept ( TGeometryParticleHandle< FReal, 3 > *  Particle0,
const FCapsule Capsule0,
const FRigidTransform3 WorldTransform0,
const TriMeshType TriangleMesh1,
const FRigidTransform3 WorldTransform1,
const FVec3 Dir,
const FReal  Length,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateConstraint()

void CHAOS_API Chaos::Collisions::UpdateConstraint ( FPBDCollisionConstraint Constraint,
const FRigidTransform3 ShapeWorldTransform0,
const FRigidTransform3 ShapeWorldTransform1,
const FReal  Dt 
)

Update the contact manifold on the constraint.

Note
Transforms are shape world-space transforms (not particle transforms)

◆ UpdateConstraintFromGeometry() [1/2]

template<ECollisionUpdateType UpdateType>
void CHAOS_API Chaos::Collisions::UpdateConstraintFromGeometry ( FPBDCollisionConstraint Constraint,
const FRigidTransform3 ParticleTransform0,
const FRigidTransform3 ParticleTransform1,
const FReal  Dt 
)

◆ UpdateConstraintFromGeometry() [2/2]

template<ECollisionUpdateType UpdateType>
void Chaos::Collisions::UpdateConstraintFromGeometry ( FPBDCollisionConstraint Constraint,
const FRigidTransform3 ParticleWorldTransform0,
const FRigidTransform3 ParticleWorldTransform1,
const FReal  Dt 
)

◆ UpdateConstraintFromGeometry< ECollisionUpdateType::Any >()

◆ UpdateConstraintFromGeometry< ECollisionUpdateType::Deepest >()

◆ UpdateConstraintFromGeometryImpl()

void Chaos::Collisions::UpdateConstraintFromGeometryImpl ( FPBDCollisionConstraint Constraint,
const FRigidTransform3 WorldTransform0,
const FRigidTransform3 WorldTransform1,
const FReal  Dt 
)
inline

◆ UpdateConstraintFromGeometrySweptImpl()

bool Chaos::Collisions::UpdateConstraintFromGeometrySweptImpl ( FPBDCollisionConstraint Constraint,
const FRigidTransform3 WorldTransform0,
const FRigidTransform3 WorldTransform1,
const FReal  Dt 
)
inline

◆ UpdateConstraintSwept()

bool CHAOS_API Chaos::Collisions::UpdateConstraintSwept ( FPBDCollisionConstraint Constraint,
const FRigidTransform3 ShapeStartWorldTransform0,
const FRigidTransform3 ShapeStartWorldTransform1,
const FReal  Dt 
)

Update the contact manifold on the constraint.

Note
Transforms are shape world-space transforms (not particle transforms) at the start of the sweep. The end of the sweep are the transforms stored in the constraint as ShapeWorldTransform0/1

◆ UpdateContactPoint()

void Chaos::Collisions::UpdateContactPoint ( FPBDCollisionConstraint Constraint,
const FContactPoint ContactPoint,
const FReal  Dt 
)

◆ UpdateContactPointNoCull()

void Chaos::Collisions::UpdateContactPointNoCull ( FPBDCollisionConstraint Constraint,
const FContactPoint ContactPoint,
const FReal  Dt,
const bool  bNoCull = true 
)

◆ UpdateConvexHeightFieldConstraint()

void Chaos::Collisions::UpdateConvexHeightFieldConstraint ( const FImplicitObject A,
const FRigidTransform3 ATransform,
const FHeightField B,
const FRigidTransform3 BTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateConvexHeightFieldConstraintSwept()

void Chaos::Collisions::UpdateConvexHeightFieldConstraintSwept ( TGeometryParticleHandle< FReal, 3 > *  Particle0,
const FImplicitObject A,
const FRigidTransform3 ATransform,
const FHeightField B,
const FRigidTransform3 BTransform,
const FVec3 Dir,
const FReal  Length,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateConvexTriangleMeshConstraint()

void Chaos::Collisions::UpdateConvexTriangleMeshConstraint ( const FImplicitObject Convex0,
const FRigidTransform3 WorldTransform0,
const FImplicitObject TriangleMesh1,
const FRigidTransform3 WorldTransform1,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateConvexTriangleMeshConstraintSwept()

template<typename TriMeshType >
void Chaos::Collisions::UpdateConvexTriangleMeshConstraintSwept ( TGeometryParticleHandle< FReal, 3 > *  Particle0,
const FImplicitObject Convex0,
const FRigidTransform3 WorldTransform0,
const TriMeshType TriangleMesh1,
const FRigidTransform3 WorldTransform1,
const FVec3 Dir,
const FReal  Length,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateGenericConvexConvexConstraint()

void Chaos::Collisions::UpdateGenericConvexConvexConstraint ( const FImplicitObject Implicit0,
const FRigidTransform3 WorldTransform0,
const FImplicitObject Implicit1,
const FRigidTransform3 WorldTransform1,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateGenericConvexConvexConstraintHelper()

void Chaos::Collisions::UpdateGenericConvexConvexConstraintHelper ( const FImplicitObject A,
const FRigidTransform3 ATM,
const FImplicitObject B,
const FRigidTransform3 BTM,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateGenericConvexConvexConstraintSwept()

void Chaos::Collisions::UpdateGenericConvexConvexConstraintSwept ( TGeometryParticleHandle< FReal, 3 > *  Particle0,
const FImplicitObject Implicit0,
const FRigidTransform3 StartWorldTransform0,
TGeometryParticleHandle< FReal, 3 > *  Particle1,
const FImplicitObject Implicit1,
const FRigidTransform3 StartWorldTransform1,
const FVec3 Dir,
const FReal  Length,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateLevelsetLevelsetConstraint()

void Chaos::Collisions::UpdateLevelsetLevelsetConstraint ( const FRigidTransform3 WorldTransform0,
const FRigidTransform3 WorldTransform1,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateSphereBoxConstraint()

void Chaos::Collisions::UpdateSphereBoxConstraint ( const FSphere Sphere,
const FRigidTransform3 SphereTransform,
const FImplicitBox3 Box,
const FRigidTransform3 BoxTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateSphereCapsuleConstraint()

void Chaos::Collisions::UpdateSphereCapsuleConstraint ( const FSphere A,
const FRigidTransform3 ATransform,
const FCapsule B,
const FRigidTransform3 BTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateSphereConvexConstraint()

void Chaos::Collisions::UpdateSphereConvexConstraint ( const FSphere A,
const FRigidTransform3 ATransform,
const FImplicitObject3 B,
const FRigidTransform3 BTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateSphereHeightFieldConstraint()

void Chaos::Collisions::UpdateSphereHeightFieldConstraint ( const FSphere A,
const FRigidTransform3 ATransform,
const FHeightField B,
const FRigidTransform3 BTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateSphereHeightFieldConstraintSwept()

void Chaos::Collisions::UpdateSphereHeightFieldConstraintSwept ( TGeometryParticleHandle< FReal, 3 > *  Particle0,
const FSphere A,
const FRigidTransform3 ATransform,
const FHeightField B,
const FRigidTransform3 BTransform,
const FVec3 Dir,
const FReal  Length,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateSpherePlaneConstraint()

void Chaos::Collisions::UpdateSpherePlaneConstraint ( const FSphere Sphere,
const FRigidTransform3 SphereTransform,
const TPlane< FReal, 3 > &  Plane,
const FRigidTransform3 PlaneTransform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateSphereSphereConstraint()

void Chaos::Collisions::UpdateSphereSphereConstraint ( const FSphere Sphere1,
const FRigidTransform3 Sphere1Transform,
const FSphere Sphere2,
const FRigidTransform3 Sphere2Transform,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateSphereTriangleMeshConstraint()

template<typename TriMeshType >
void Chaos::Collisions::UpdateSphereTriangleMeshConstraint ( const FSphere Sphere0,
const FRigidTransform3 WorldTransform0,
const TriMeshType TriangleMesh1,
const FRigidTransform3 WorldTransform1,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

◆ UpdateSphereTriangleMeshConstraintSwept()

template<typename TriMeshType >
void Chaos::Collisions::UpdateSphereTriangleMeshConstraintSwept ( TGeometryParticleHandle< FReal, 3 > *  Particle0,
const FSphere Sphere0,
const FRigidTransform3 WorldTransform0,
const TriMeshType TriangleMesh1,
const FRigidTransform3 WorldTransform1,
const FVec3 Dir,
const FReal  Length,
const FReal  Dt,
FPBDCollisionConstraint Constraint 
)

Variable Documentation

◆ CVarNormalAveraging

FAutoConsoleVariableRef Chaos::Collisions::CVarNormalAveraging(TEXT("p.NormalAveraging2"), NormalAveraging, TEXT("")) ( TEXT("p.NormalAveraging2")  ,
NormalAveraging  ,
TEXT("")   
)

◆ CVarSampleMinParticlesForAcceleration

FAutoConsoleVariableRef Chaos::Collisions::CVarSampleMinParticlesForAcceleration(TEXT("p.SampleMinParticlesForAcceleration"), SampleMinParticlesForAcceleration, TEXT("The minimum number of particles needed before using an acceleration structure when sampling")) ( TEXT("p.SampleMinParticlesForAcceleration")  ,
SampleMinParticlesForAcceleration  ,
TEXT("The minimum number of particles needed before using an acceleration structure when sampling"  
)

◆ NormalAveraging

int32 Chaos::Collisions::NormalAveraging = 0

◆ SampleMinParticlesForAcceleration

int32 Chaos::Collisions::SampleMinParticlesForAcceleration = 2048