p.Chaos.Collision.EnableMeshCollisionPruning
p.Chaos.Collision.EnableMeshCollisionPruning
#Overview
name: p.Chaos.Collision.EnableMeshCollisionPruning
This variable is created as a Console Variable (cvar).
- type:
Var
- help: ``
It is referenced in 3
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of p.Chaos.Collision.EnableMeshCollisionPruning is to control mesh collision pruning in the Chaos physics engine, which is part of Unreal Engine’s physics simulation system.
This setting variable is primarily used in the Chaos physics subsystem, specifically within the collision handling module. It is defined and used in the PBDCollisionConstraints.cpp file, which is part of the Experimental Chaos runtime module.
The value of this variable is set using an FAutoConsoleVariableRef, which means it can be dynamically adjusted at runtime through console commands or configuration files. Its default value is set to true, indicating that mesh collision pruning is enabled by default.
The p.Chaos.Collision.EnableMeshCollisionPruning variable interacts directly with the bCollisionsEnableMeshCollisionPruning boolean variable. They share the same value, and the console variable acts as an interface to control the boolean flag.
Developers must be aware that this variable affects the performance and accuracy of collision detection in the Chaos physics system. Enabling mesh collision pruning can improve performance by reducing unnecessary collision checks, but it may also affect the precision of collision detection in some scenarios.
Best practices when using this variable include:
- Testing thoroughly with both enabled and disabled states to ensure desired physics behavior.
- Considering performance implications, especially in scenes with many complex mesh collisions.
- Using in conjunction with other collision pruning options (like edge and subsurface pruning) for optimal results.
Regarding the associated variable bCollisionsEnableMeshCollisionPruning:
The purpose of bCollisionsEnableMeshCollisionPruning is to directly control the mesh collision pruning functionality within the Chaos physics engine’s collision detection system.
This boolean flag is used in the PruneEdgeCollisions() function of the FPBDCollisionConstraints class. When set to true, it activates the FParticleMeshCollisionPruner for each particle handle with smooth edge collisions enabled.
The value of this variable is set by the p.Chaos.Collision.EnableMeshCollisionPruning console variable, allowing for runtime configuration.
Developers should be aware that this flag directly impacts the collision detection process for mesh-based objects. Enabling it can potentially improve performance but may affect collision accuracy in some cases.
Best practices for using this variable include:
- Balancing performance gains against collision accuracy requirements for your specific use case.
- Monitoring physics behavior closely when changing this setting, especially for complex mesh interactions.
- Considering its interaction with other collision pruning mechanisms in the Chaos system for comprehensive optimization.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/PBDCollisionConstraints.cpp:83
Scope (from outer to inner):
file
namespace Chaos
Source code excerpt:
bool bCollisionsEnableSubSurfaceCollisionPruning = false;
FAutoConsoleVariableRef CVarCollisionsEnableEdgeCollisionPruning(TEXT("p.Chaos.Collision.EnableEdgeCollisionPruning"), bCollisionsEnableEdgeCollisionPruning, TEXT(""));
FAutoConsoleVariableRef CVarCollisionsEnableMeshCollisionPruning(TEXT("p.Chaos.Collision.EnableMeshCollisionPruning"), bCollisionsEnableMeshCollisionPruning, TEXT(""));
FAutoConsoleVariableRef CVarCollisionsEnableSubSurfaceCollisionPruning(TEXT("p.Chaos.Collision.EnableSubSurfaceCollisionPruning"), bCollisionsEnableSubSurfaceCollisionPruning, TEXT(""));
bool DebugDrawProbeDetection = false;
FAutoConsoleVariableRef CVarDebugDrawProbeDetection(TEXT("p.Chaos.Collision.DebugDrawProbeDetection"), DebugDrawProbeDetection, TEXT("Draw probe constraint detection."));
#if CHAOS_DEBUG_DRAW
#Associated Variable and Callsites
This variable is associated with another variable named bCollisionsEnableMeshCollisionPruning
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/PBDCollisionConstraints.cpp:80
Scope (from outer to inner):
file
namespace Chaos
Source code excerpt:
// Which edge pruning features to enable (for particle swith EdgeSmoothing enabled)
bool bCollisionsEnableEdgeCollisionPruning = true;
bool bCollisionsEnableMeshCollisionPruning = true;
bool bCollisionsEnableSubSurfaceCollisionPruning = false;
FAutoConsoleVariableRef CVarCollisionsEnableEdgeCollisionPruning(TEXT("p.Chaos.Collision.EnableEdgeCollisionPruning"), bCollisionsEnableEdgeCollisionPruning, TEXT(""));
FAutoConsoleVariableRef CVarCollisionsEnableMeshCollisionPruning(TEXT("p.Chaos.Collision.EnableMeshCollisionPruning"), bCollisionsEnableMeshCollisionPruning, TEXT(""));
FAutoConsoleVariableRef CVarCollisionsEnableSubSurfaceCollisionPruning(TEXT("p.Chaos.Collision.EnableSubSurfaceCollisionPruning"), bCollisionsEnableSubSurfaceCollisionPruning, TEXT(""));
bool DebugDrawProbeDetection = false;
FAutoConsoleVariableRef CVarDebugDrawProbeDetection(TEXT("p.Chaos.Collision.DebugDrawProbeDetection"), DebugDrawProbeDetection, TEXT("Draw probe constraint detection."));
#if CHAOS_DEBUG_DRAW
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/PBDCollisionConstraints.cpp:748
Scope (from outer to inner):
file
namespace Chaos
function void FPBDCollisionConstraints::PruneEdgeCollisions
Source code excerpt:
if ((ParticleHandle.CollisionConstraintFlags() & (uint32)ECollisionConstraintFlags::CCF_SmoothEdgeCollisions) != 0)
{
if (bCollisionsEnableMeshCollisionPruning)
{
FParticleMeshCollisionPruner MeshPruner(ParticleHandle.Handle());
MeshPruner.Prune();
}
if (bCollisionsEnableEdgeCollisionPruning)