p.Chaos.ImmPhys.Collision.CullDistance
p.Chaos.ImmPhys.Collision.CullDistance
#Overview
name: p.Chaos.ImmPhys.Collision.CullDistance
This variable is created as a Console Variable (cvar).
- type:
Var
- help:
Set the collision CullDistance (if >= 0)
It is referenced in 3
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of p.Chaos.ImmPhys.Collision.CullDistance is to set the collision cull distance in the Immediate Physics system of Unreal Engine’s Chaos physics engine. This setting is used to optimize collision detection by ignoring potential collisions between objects that are farther apart than the specified distance.
This setting variable is primarily used in the Immediate Physics subsystem of the Chaos physics engine, which is part of Unreal Engine’s physics simulation module.
The value of this variable is set through the console variable system, as evidenced by the FAutoConsoleVariableRef declaration. It can be modified at runtime using console commands or through configuration files.
The associated variable ChaosImmediate_Collision_CullDistance interacts directly with p.Chaos.ImmPhys.Collision.CullDistance. They share the same value, with ChaosImmediate_Collision_CullDistance being the actual variable used in the simulation code.
Developers should be aware that:
- The default value is -1.0f, which likely means the culling is disabled by default.
- The cull distance is only applied if the value is greater than or equal to 0, as indicated by the comment “Set the collision CullDistance (if >= 0)”.
Best practices when using this variable include:
- Only set a positive value when you want to optimize performance by reducing collision checks.
- Be cautious when setting this value, as it may cause important collisions to be missed if set too low.
- Test thoroughly after changing this value to ensure it doesn’t negatively impact gameplay or simulation accuracy.
Regarding the associated variable ChaosImmediate_Collision_CullDistance:
The purpose of ChaosImmediate_Collision_CullDistance is to store the actual value used in the Immediate Physics simulation for collision culling. It’s the implementation-side variable that corresponds to the console variable p.Chaos.ImmPhys.Collision.CullDistance.
This variable is used directly in the Chaos Immediate Physics simulation code, specifically in the FSimulation::Simulate function, where it’s passed to the SetSolverSettings function.
The value of this variable is set through the console variable system, mirroring the value of p.Chaos.ImmPhys.Collision.CullDistance.
It interacts with other simulation parameters in the SetSolverSettings function, suggesting it’s part of a larger group of settings that control the physics simulation behavior.
Developers should be aware that changes to p.Chaos.ImmPhys.Collision.CullDistance will directly affect this variable and, consequently, the physics simulation.
Best practices include:
- Treat this variable as read-only in code, modifying it only through the console variable system.
- When debugging physics issues, check this variable’s value to ensure it matches the expected console variable setting.
- Consider the impact on other physics settings when modifying this value, as it’s used in conjunction with other parameters in the solver settings.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/PhysicsEngine/ImmediatePhysics/ImmediatePhysicsChaos/ImmediatePhysicsSimulation_Chaos.cpp:81
Scope: file
Source code excerpt:
FAutoConsoleVariableRef CVarChaosImmPhysCollisionDisable(TEXT("p.Chaos.ImmPhys.Collision.Enabled"), ChaosImmediate_Collision_Enabled, TEXT("Enable/Disable collisions in Immediate Physics."));
FAutoConsoleVariableRef CVarChaosImmPhysCollisionPriority(TEXT("p.Chaos.ImmPhys.Collision.Priority"), ChaosImmediate_Collision_Priority, TEXT("Set the Collision constraint sort order (Joints have priority 0)"));
FAutoConsoleVariableRef CVarChaosImmPhysCollisionCullDistance(TEXT("p.Chaos.ImmPhys.Collision.CullDistance"), ChaosImmediate_Collision_CullDistance, TEXT("Set the collision CullDistance (if >= 0)"));
FAutoConsoleVariableRef CVarChaosImmPhysCollisionMaxDepenetrationVelocity(TEXT("p.Chaos.ImmPhys.Collision.MaxDepenetrationVelocity"), ChaosImmediate_Collision_MaxDepenetrationVelocity, TEXT("Set the collision Max Depenetration Velocity (if >= 0)"));
FAutoConsoleVariableRef CVarChaosImmPhysCollisionRestitutionThresholdMultiplier(TEXT("p.Chaos.ImmPhys.Collision.RestitutionThresholdMultiplier"), ChaosImmediate_Collision_RestitutionThresholdMultiplier, TEXT("Collision Restitution Threshold (Acceleration) = Multiplier * Gravity"));
FAutoConsoleVariableRef CVarChaosImmPhysCollisionRestitutionEnabled(TEXT("p.Chaos.ImmPhys.Collision.RestitutionEnabled"), ChaosImmediate_Collision_RestitutionEnabled, TEXT("Collision Restitution Enable/Disable"));
FAutoConsoleVariableRef CVarChaosImmPhysCollisionDeferNarrowPhase(TEXT("p.Chaos.ImmPhys.Collision.DeferNarrowPhase"), ChaosImmediate_Collision_DeferNarrowPhase, TEXT("[Legacy Solver] Create contacts for all broadphase pairs, perform NarrowPhase later."));
FAutoConsoleVariableRef CVarChaosImmPhysCollisionUseManifolds(TEXT("p.Chaos.ImmPhys.Collision.UseManifolds"), ChaosImmediate_Collision_UseManifolds, TEXT("[Legacy Solver] Enable/Disable use of manifoldes in collision."));
#Associated Variable and Callsites
This variable is associated with another variable named ChaosImmediate_Collision_CullDistance
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/PhysicsEngine/ImmediatePhysics/ImmediatePhysicsChaos/ImmediatePhysicsSimulation_Chaos.cpp:73
Scope: file
Source code excerpt:
int32 ChaosImmediate_Collision_NumVelocityShockPropagationIterations = 0;
int32 ChaosImmediate_Collision_Priority = 1;
Chaos::FRealSingle ChaosImmediate_Collision_CullDistance = -1.0f;
Chaos::FRealSingle ChaosImmediate_Collision_MaxDepenetrationVelocity = -1.0f;
Chaos::FRealSingle ChaosImmediate_Collision_RestitutionThresholdMultiplier = 1.5f;
int32 ChaosImmediate_Collision_RestitutionEnabled = true;
int32 ChaosImmediate_Collision_DeferNarrowPhase = 1;
int32 ChaosImmediate_Collision_UseManifolds = 0;
FAutoConsoleVariableRef CVarChaosImmPhysCollisionDisable(TEXT("p.Chaos.ImmPhys.Collision.Enabled"), ChaosImmediate_Collision_Enabled, TEXT("Enable/Disable collisions in Immediate Physics."));
FAutoConsoleVariableRef CVarChaosImmPhysCollisionPriority(TEXT("p.Chaos.ImmPhys.Collision.Priority"), ChaosImmediate_Collision_Priority, TEXT("Set the Collision constraint sort order (Joints have priority 0)"));
FAutoConsoleVariableRef CVarChaosImmPhysCollisionCullDistance(TEXT("p.Chaos.ImmPhys.Collision.CullDistance"), ChaosImmediate_Collision_CullDistance, TEXT("Set the collision CullDistance (if >= 0)"));
FAutoConsoleVariableRef CVarChaosImmPhysCollisionMaxDepenetrationVelocity(TEXT("p.Chaos.ImmPhys.Collision.MaxDepenetrationVelocity"), ChaosImmediate_Collision_MaxDepenetrationVelocity, TEXT("Set the collision Max Depenetration Velocity (if >= 0)"));
FAutoConsoleVariableRef CVarChaosImmPhysCollisionRestitutionThresholdMultiplier(TEXT("p.Chaos.ImmPhys.Collision.RestitutionThresholdMultiplier"), ChaosImmediate_Collision_RestitutionThresholdMultiplier, TEXT("Collision Restitution Threshold (Acceleration) = Multiplier * Gravity"));
FAutoConsoleVariableRef CVarChaosImmPhysCollisionRestitutionEnabled(TEXT("p.Chaos.ImmPhys.Collision.RestitutionEnabled"), ChaosImmediate_Collision_RestitutionEnabled, TEXT("Collision Restitution Enable/Disable"));
FAutoConsoleVariableRef CVarChaosImmPhysCollisionDeferNarrowPhase(TEXT("p.Chaos.ImmPhys.Collision.DeferNarrowPhase"), ChaosImmediate_Collision_DeferNarrowPhase, TEXT("[Legacy Solver] Create contacts for all broadphase pairs, perform NarrowPhase later."));
FAutoConsoleVariableRef CVarChaosImmPhysCollisionUseManifolds(TEXT("p.Chaos.ImmPhys.Collision.UseManifolds"), ChaosImmediate_Collision_UseManifolds, TEXT("[Legacy Solver] Enable/Disable use of manifoldes in collision."));
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/PhysicsEngine/ImmediatePhysics/ImmediatePhysicsChaos/ImmediatePhysicsSimulation_Chaos.cpp:862
Scope (from outer to inner):
file
namespace ImmediatePhysics_Chaos
function void FSimulation::Simulate
Source code excerpt:
SetSolverSettings(
ChaosImmediate_Evolution_FixedStepTime,
ChaosImmediate_Collision_CullDistance,
ChaosImmediate_Collision_MaxDepenetrationVelocity,
ChaosImmediate_Joint_UseLinearSolver,
ChaosImmediate_Evolution_PositionIterations,
ChaosImmediate_Evolution_VelocityIterations,
ChaosImmediate_Evolution_ProjectionIterations);