p.ChaosCloth.Solver.DisableCollision
p.ChaosCloth.Solver.DisableCollision
#Overview
name: p.ChaosCloth.Solver.DisableCollision
This variable is created as a Console Variable (cvar).
- type:
Var
- help:
Disable all collision particles. Needs reset of the simulation (p.ChaosCloth.Reset).
It is referenced in 3
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of p.ChaosCloth.Solver.DisableCollision is to control the activation of collision particles in the Chaos Cloth simulation solver. This setting variable is part of the Chaos Cloth system, which is a physics-based cloth simulation module in Unreal Engine 5.
Based on the details in the Callsites section, this setting variable is primarily used in the ChaosCloth plugin, specifically within the ChaosClothingSimulationSolver module.
The value of this variable is set through the Unreal Engine console variable system, as indicated by the FAutoConsoleVariableRef declaration. It can be changed at runtime using console commands or through configuration files.
This variable interacts directly with the associated variable bClothSolverDisableCollision. They share the same value and are used interchangeably in the code.
Developers must be aware that:
- This variable affects all collision particles in the cloth simulation.
- Changes to this variable require a reset of the simulation to take effect, as noted in the comment “Needs reset of the simulation (p.ChaosCloth.Reset).”
- This variable is primarily intended for debugging and testing purposes, as it’s only active in non-shipping builds (#if !UE_BUILD_SHIPPING).
Best practices when using this variable include:
- Use it sparingly and primarily for debugging purposes.
- Remember to reset the simulation after changing this value.
- Be cautious when using it in performance-critical scenarios, as disabling collisions can significantly alter the behavior of the cloth simulation.
Regarding the associated variable bClothSolverDisableCollision:
- It serves the same purpose as p.ChaosCloth.Solver.DisableCollision.
- It’s used internally within the ChaosClothingSimulationSolver to control the activation of collision particles.
- The variable is checked in the EnableCollisionParticles function to determine whether collision particles should be enabled or not.
- In non-shipping builds, it overrides the bEnable parameter passed to the EnableCollisionParticles function, ensuring that collisions remain disabled if bClothSolverDisableCollision is true, regardless of the function’s input.
Developers should treat bClothSolverDisableCollision with the same considerations as p.ChaosCloth.Solver.DisableCollision, as they are effectively the same setting exposed through different mechanisms (console variable and internal boolean).
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Plugins/ChaosCloth/Source/ChaosCloth/Private/ChaosCloth/ChaosClothingSimulationSolver.cpp:68
Scope (from outer to inner):
file
namespace Chaos
Source code excerpt:
FAutoConsoleVariableRef CVarClothSolverDebugHitchLength(TEXT("p.ChaosCloth.Solver.DebugHitchLength"), ClothSolverDebugHitchLength, TEXT("Hitch length in ms. Create artificial hitches to debug simulation jitter. 0 to disable"));
FAutoConsoleVariableRef CVarClothSolverDebugHitchInterval(TEXT("p.ChaosCloth.Solver.DebugHitchInterval"), ClothSolverDebugHitchInterval, TEXT("Hitch interval in frames. Create artificial hitches to debug simulation jitter. 0 to disable"));
FAutoConsoleVariableRef CVarClothSolverDisableCollision(TEXT("p.ChaosCloth.Solver.DisableCollision"), bClothSolverDisableCollision, TEXT("Disable all collision particles. Needs reset of the simulation (p.ChaosCloth.Reset)."));
#endif
FAutoConsoleVariableRef CVarClothSolverDisableTimeDependentNumIterations(TEXT("p.ChaosCloth.Solver.DisableTimeDependentNumIterations"), bClothSolverDisableTimeDependentNumIterations, TEXT("Make the number of iterations independent from the time step."));
FAutoConsoleVariableRef CVarClothSolverUseVelocityScale(TEXT("p.ChaosCloth.Solver.UseVelocityScale"), bClothSolverUseVelocityScale, TEXT("Use the velocity scale to compensate for clamping to MaxPhysicsDelta, in order to avoid miscalculating velocities during hitches."));
FAutoConsoleVariableRef CVarClothSolverMaxVelocity(TEXT("p.ChaosCloth.Solver.MaxVelocity"), ClothSolverMaxVelocity, TEXT("Maximum relative velocity of the cloth particles relatively to their animated positions equivalent. 0 to disable."));
#Associated Variable and Callsites
This variable is associated with another variable named bClothSolverDisableCollision
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Plugins/ChaosCloth/Source/ChaosCloth/Private/ChaosCloth/ChaosClothingSimulationSolver.cpp:60
Scope (from outer to inner):
file
namespace Chaos
Source code excerpt:
static int32 ClothSolverDebugHitchLength = 0;
static int32 ClothSolverDebugHitchInterval = 0;
static bool bClothSolverDisableCollision = false;
FAutoConsoleVariableRef CVarClothSolverMinParallelBatchSize(TEXT("p.ChaosCloth.Solver.MinParallelBatchSize"), ClothSolverMinParallelBatchSize, TEXT("The minimum number of particle to process in parallel batch by the solver."));
FAutoConsoleVariableRef CVarClothSolverParallelClothPreUpdate(TEXT("p.ChaosCloth.Solver.ParallelClothPreUpdate"), bClothSolverParallelClothPreUpdate, TEXT("Pre-transform the cloth particles for each cloth in parallel."));
FAutoConsoleVariableRef CVarClothSolverParallelClothUpdate(TEXT("p.ChaosCloth.Solver.ParallelClothUpdate"), bClothSolverParallelClothUpdate, TEXT("Skin the physics mesh and do the other cloth update for each cloth in parallel."));
FAutoConsoleVariableRef CVarClothSolverParallelClothPostUpdate(TEXT("p.ChaosCloth.Solver.ParallelClothPostUpdate"), bClothSolverParallelClothPostUpdate, TEXT("Pre-transform the cloth particles for each cloth in parallel."));
FAutoConsoleVariableRef CVarClothSolverDebugHitchLength(TEXT("p.ChaosCloth.Solver.DebugHitchLength"), ClothSolverDebugHitchLength, TEXT("Hitch length in ms. Create artificial hitches to debug simulation jitter. 0 to disable"));
FAutoConsoleVariableRef CVarClothSolverDebugHitchInterval(TEXT("p.ChaosCloth.Solver.DebugHitchInterval"), ClothSolverDebugHitchInterval, TEXT("Hitch interval in frames. Create artificial hitches to debug simulation jitter. 0 to disable"));
FAutoConsoleVariableRef CVarClothSolverDisableCollision(TEXT("p.ChaosCloth.Solver.DisableCollision"), bClothSolverDisableCollision, TEXT("Disable all collision particles. Needs reset of the simulation (p.ChaosCloth.Reset)."));
#endif
FAutoConsoleVariableRef CVarClothSolverDisableTimeDependentNumIterations(TEXT("p.ChaosCloth.Solver.DisableTimeDependentNumIterations"), bClothSolverDisableTimeDependentNumIterations, TEXT("Make the number of iterations independent from the time step."));
FAutoConsoleVariableRef CVarClothSolverUseVelocityScale(TEXT("p.ChaosCloth.Solver.UseVelocityScale"), bClothSolverUseVelocityScale, TEXT("Use the velocity scale to compensate for clamping to MaxPhysicsDelta, in order to avoid miscalculating velocities during hitches."));
FAutoConsoleVariableRef CVarClothSolverMaxVelocity(TEXT("p.ChaosCloth.Solver.MaxVelocity"), ClothSolverMaxVelocity, TEXT("Maximum relative velocity of the cloth particles relatively to their animated positions equivalent. 0 to disable."));
#Loc: <Workspace>/Engine/Plugins/ChaosCloth/Source/ChaosCloth/Private/ChaosCloth/ChaosClothingSimulationSolver.cpp:829
Scope (from outer to inner):
file
namespace Chaos
function void FClothingSimulationSolver::EnableCollisionParticles
Source code excerpt:
{
#if !UE_BUILD_SHIPPING
const bool bFilteredEnable = bClothSolverDisableCollision ? false : bEnable;
#else
const bool bFilteredEnable = bEnable;
#endif
if (Evolution)
{
Evolution->ActivateCollisionParticleRange(Offset, bFilteredEnable);