UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ConvexOptimizer.cpp File Reference

Namespaces

namespace  Chaos
 
namespace  Chaos::CVars
 
namespace  Chaos::Private
 

Functions

 Chaos::Private::DECLARE_CYCLE_STAT (TEXT("Collisions::BuildConvexShapes"), STAT_BuildConvexShapes, STATGROUP_ChaosCollision)
 
FORCEINLINE void Chaos::Private::InvalidateCachedTriboxes (FConvexOptimizer::FTriboxNodes &RootTriboxes)
 
 Chaos::Private::DECLARE_CYCLE_STAT (TEXT("Collisions::ResizeCachedTriboxes"), STAT_ResizeCachedTriboxes, STATGROUP_ChaosCollision)
 
FORCEINLINE void Chaos::Private::ResizeCachedTriboxes (FConvexOptimizer::FTriboxNodes &RootTriboxes)
 
 Chaos::Private::DECLARE_CYCLE_STAT (TEXT("Collisions::BuildConvexTriboxes"), STAT_BuildConvexTriboxes, STATGROUP_ChaosCollision)
 
FORCEINLINE void Chaos::Private::BuildConvexTriboxes (const Chaos::FImplicitObjectUnionPtr &UnionGeometry, const FShapesArray &UnionShapes, TUniquePtr< Private::FCollisionObjects > &CollisionObjects, FConvexOptimizer::FTriboxNodes &RootTriboxes, int32 &NextConvexId, const TBitArray<> &bOptimizeConvexes)
 
 Chaos::Private::DECLARE_CYCLE_STAT (TEXT("Collisions::BuildUnionConnectivity"), STAT_BuildUnionConnectivity, STATGROUP_ChaosCollision)
 
 Chaos::Private::DECLARE_CYCLE_STAT (TEXT("Collisions::MergeConnectedShapes"), STAT_MergeConnectedShapes, STATGROUP_ChaosCollision)
 
void Chaos::Private::VisitCollisionObjects (const FConvexOptimizer *ConvexOptimizer, const FImplicitObject *ImplicitObject, const FImplicitHierarchyVisitor &VisitorFunc)
 
void Chaos::Private::VisitOverlappingObjects (const FConvexOptimizer *ConvexOptimizer, const FImplicitObject *ImplicitObject, const FAABB3 &LocalBounds, const FImplicitHierarchyVisitor &VisitorFunc)
 

Variables

CHAOS_API bool Chaos::CVars::bChaosConvexSimplifyUnion = false
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSimplifyUnion (TEXT("p.Chaos.Convex.SimplifyUnion"), bChaosConvexSimplifyUnion, TEXT("If true replace all the convexes within an implcit hierarchy with a simplified one (kdop18 tribox for now) for collision"))
 
int32 Chaos::CVars::ChaosConvexKinematicMode = 2
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosConvexKinematicMode (TEXT("p.Chaos.Convex.KinematicMode"), ChaosConvexKinematicMode, TEXT("Simplification mode for the kinematic shapes (0: Single Convex, 1: One convex per children, 2: Merge connected children using the splitting threshold"))
 
int32 Chaos::CVars::ChaosConvexDynamicMode = 2
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosConvexDynamicMode (TEXT("p.Chaos.Convex.DynamicMode"), ChaosConvexDynamicMode, TEXT("Simplification mode for the dynamic shapes (0: Single Convex, 1: One convex per children, 2: Merge connected children using the splitting threshold)"))
 
float Chaos::CVars::ChaosConvexSplittingThreshold = 1.0f
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosConvexSplittingThreshold (TEXT("p.Chaos.Convex.SplittingThreshold"), ChaosConvexSplittingThreshold, TEXT("Tribox volume / convex hull threshold to trigger a volume splitting during tree construction"))
 
float Chaos::CVars::ChaosConvexMinVolume = 10000.0f
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosConvexMinVolume (TEXT("p.Chaos.Convex.MinVolume"), ChaosConvexMinVolume, TEXT("Min volume of the simplified convexes"))
 
bool Chaos::CVars::ChaosConvexEnableMerging = true
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosConvexEnableMerging (TEXT("p.Chaos.Convex.EnableMerging"), ChaosConvexEnableMerging, TEXT("Boolean to check if we are merging (bottom-up) or splitting (top-bottom) the convexes"))
 
bool Chaos::CVars::ChaosConvexUseDirectOverlap = true
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosConvexUseDirectOverlap (TEXT("p.Chaos.Convex.UseDirectOverlap"), ChaosConvexUseDirectOverlap, TEXT("Boolean to check if we can use direct overlap test against the bounds"))
 
int32 Chaos::CVars::ChaosUnionBVHMaxDepth = 14
 
int32 Chaos::CVars::ChaosUnionBVHMinShapes = 10