p.ChaosCloth.DebugDrawBackstopDistances
p.ChaosCloth.DebugDrawBackstopDistances
#Overview
name: p.ChaosCloth.DebugDrawBackstopDistances
This variable is created as a Console Variable (cvar).
- type:
Var
- help:
Whether to debug draw the Chaos Cloth backstop distances
It is referenced in 6
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of p.ChaosCloth.DebugDrawBackstopDistances is to enable debug drawing of the Chaos Cloth backstop distances. This setting variable is part of the Chaos Cloth simulation system in Unreal Engine 5.
The Chaos Cloth system, which is part of the ChaosCloth plugin, relies on this setting variable. It’s used specifically for visualization and debugging purposes within the cloth simulation.
The value of this variable is set as a console variable (CVar) in the engine. It’s initialized as false by default, meaning the debug drawing is turned off unless explicitly enabled.
This variable interacts closely with other debug drawing variables for the Chaos Cloth system, such as DebugDrawCollision, DebugDrawBackstops, DebugDrawMaxDistances, etc. They are all part of a set of debug visualization options for the Chaos Cloth simulation.
Developers should be aware that this is a debugging tool and should only be enabled when needed for visualization purposes. Enabling it may have performance implications, especially in a shipping build.
Best practices when using this variable include:
- Only enable it when debugging cloth simulation issues.
- Use it in conjunction with other debug drawing options to get a comprehensive view of the cloth simulation.
- Remember to disable it when not needed to avoid any potential performance impact.
The associated variable DebugDrawBackstopDistances is used in the same context and for the same purpose. It’s the actual function that performs the debug drawing when the console variable is enabled. This function is part of the FClothingSimulation class in the Chaos namespace and is called during the simulation step if the corresponding console variable is set to true.
The debug drawing function can be called with an optional FPrimitiveDrawInterface parameter, allowing for flexibility in how and where the debug information is rendered.
When working with cloth simulation in Unreal Engine 5, developers can use these debug drawing options together to visualize various aspects of the simulation, helping to identify and solve issues related to cloth behavior, collisions, and constraints.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Plugins/ChaosCloth/Source/ChaosCloth/Private/ChaosCloth/ChaosClothingSimulation.cpp:77
Scope (from outer to inner):
file
namespace ClothingSimulationCVar
Source code excerpt:
TAutoConsoleVariable<bool> DebugDrawCollision (TEXT("p.ChaosCloth.DebugDrawCollision" ), false, TEXT("Whether to debug draw the Chaos Cloth collisions"), ECVF_Cheat);
TAutoConsoleVariable<bool> DebugDrawBackstops (TEXT("p.ChaosCloth.DebugDrawBackstops" ), false, TEXT("Whether to debug draw the Chaos Cloth backstops"), ECVF_Cheat);
TAutoConsoleVariable<bool> DebugDrawBackstopDistances (TEXT("p.ChaosCloth.DebugDrawBackstopDistances" ), false, TEXT("Whether to debug draw the Chaos Cloth backstop distances"), ECVF_Cheat);
TAutoConsoleVariable<bool> DebugDrawMaxDistances (TEXT("p.ChaosCloth.DebugDrawMaxDistances" ), false, TEXT("Whether to debug draw the Chaos Cloth max distances"), ECVF_Cheat);
TAutoConsoleVariable<bool> DebugDrawAnimDrive (TEXT("p.ChaosCloth.DebugDrawAnimDrive" ), false, TEXT("Whether to debug draw the Chaos Cloth anim drive"), ECVF_Cheat);
TAutoConsoleVariable<bool> DebugDrawEdgeConstraint (TEXT("p.ChaosCloth.DebugDrawEdgeConstraint" ), false, TEXT("Whether to debug draw the Chaos Cloth edge constraint"), ECVF_Cheat);
TAutoConsoleVariable<bool> DebugDrawBendingConstraint (TEXT("p.ChaosCloth.DebugDrawBendingConstraint" ), false, TEXT("Whether to debug draw the Chaos Cloth bending constraint"), ECVF_Cheat);
TAutoConsoleVariable<bool> DebugDrawLongRangeConstraint (TEXT("p.ChaosCloth.DebugDrawLongRangeConstraint" ), false, TEXT("Whether to debug draw the Chaos Cloth long range constraint (aka tether constraint)"), ECVF_Cheat);
TAutoConsoleVariable<bool> DebugDrawWindForces (TEXT("p.ChaosCloth.DebugDrawWindForces" ), false, TEXT("Whether to debug draw the Chaos Cloth wind forces"), ECVF_Cheat);
#Loc: <Workspace>/Engine/Plugins/ChaosClothAsset/Source/ChaosClothAssetEngine/Private/ChaosClothAsset/ClothSimulationProxy.cpp:302
Scope (from outer to inner):
file
namespace UE::Chaos::ClothAsset
function void FClothSimulationProxy::Tick
Source code excerpt:
static const TConsoleVariableData<bool>* const DebugDrawCollisionCVar = IConsoleManager::Get().FindTConsoleVariableDataBool(TEXT("p.ChaosCloth.DebugDrawCollision"));
static const TConsoleVariableData<bool>* const DebugDrawBackstopsCVar = IConsoleManager::Get().FindTConsoleVariableDataBool(TEXT("p.ChaosCloth.DebugDrawBackstops"));
static const TConsoleVariableData<bool>* const DebugDrawBackstopDistancesCVar = IConsoleManager::Get().FindTConsoleVariableDataBool(TEXT("p.ChaosCloth.DebugDrawBackstopDistances"));
static const TConsoleVariableData<bool>* const DebugDrawMaxDistancesCVar = IConsoleManager::Get().FindTConsoleVariableDataBool(TEXT("p.ChaosCloth.DebugDrawMaxDistances"));
static const TConsoleVariableData<bool>* const DebugDrawAnimDriveCVar = IConsoleManager::Get().FindTConsoleVariableDataBool(TEXT("p.ChaosCloth.DebugDrawAnimDrive"));
static const TConsoleVariableData<bool>* const DebugDrawEdgeConstraintCVar = IConsoleManager::Get().FindTConsoleVariableDataBool(TEXT("p.ChaosCloth.DebugDrawEdgeConstraint"));
static const TConsoleVariableData<bool>* const DebugDrawBendingConstraintCVar = IConsoleManager::Get().FindTConsoleVariableDataBool(TEXT("p.ChaosCloth.DebugDrawBendingConstraint"));
static const TConsoleVariableData<bool>* const DebugDrawLongRangeConstraintCVar = IConsoleManager::Get().FindTConsoleVariableDataBool(TEXT("p.ChaosCloth.DebugDrawLongRangeConstraint"));
static const TConsoleVariableData<bool>* const DebugDrawWindForcesCVar = IConsoleManager::Get().FindTConsoleVariableDataBool(TEXT("p.ChaosCloth.DebugDrawWindForces"));
#Associated Variable and Callsites
This variable is associated with another variable named DebugDrawBackstopDistances
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Plugins/ChaosCloth/Source/ChaosCloth/Private/ChaosCloth/ChaosClothingSimulation.cpp:77
Scope (from outer to inner):
file
namespace ClothingSimulationCVar
Source code excerpt:
TAutoConsoleVariable<bool> DebugDrawCollision (TEXT("p.ChaosCloth.DebugDrawCollision" ), false, TEXT("Whether to debug draw the Chaos Cloth collisions"), ECVF_Cheat);
TAutoConsoleVariable<bool> DebugDrawBackstops (TEXT("p.ChaosCloth.DebugDrawBackstops" ), false, TEXT("Whether to debug draw the Chaos Cloth backstops"), ECVF_Cheat);
TAutoConsoleVariable<bool> DebugDrawBackstopDistances (TEXT("p.ChaosCloth.DebugDrawBackstopDistances" ), false, TEXT("Whether to debug draw the Chaos Cloth backstop distances"), ECVF_Cheat);
TAutoConsoleVariable<bool> DebugDrawMaxDistances (TEXT("p.ChaosCloth.DebugDrawMaxDistances" ), false, TEXT("Whether to debug draw the Chaos Cloth max distances"), ECVF_Cheat);
TAutoConsoleVariable<bool> DebugDrawAnimDrive (TEXT("p.ChaosCloth.DebugDrawAnimDrive" ), false, TEXT("Whether to debug draw the Chaos Cloth anim drive"), ECVF_Cheat);
TAutoConsoleVariable<bool> DebugDrawEdgeConstraint (TEXT("p.ChaosCloth.DebugDrawEdgeConstraint" ), false, TEXT("Whether to debug draw the Chaos Cloth edge constraint"), ECVF_Cheat);
TAutoConsoleVariable<bool> DebugDrawBendingConstraint (TEXT("p.ChaosCloth.DebugDrawBendingConstraint" ), false, TEXT("Whether to debug draw the Chaos Cloth bending constraint"), ECVF_Cheat);
TAutoConsoleVariable<bool> DebugDrawLongRangeConstraint (TEXT("p.ChaosCloth.DebugDrawLongRangeConstraint" ), false, TEXT("Whether to debug draw the Chaos Cloth long range constraint (aka tether constraint)"), ECVF_Cheat);
TAutoConsoleVariable<bool> DebugDrawWindForces (TEXT("p.ChaosCloth.DebugDrawWindForces" ), false, TEXT("Whether to debug draw the Chaos Cloth wind forces"), ECVF_Cheat);
#Loc: <Workspace>/Engine/Plugins/ChaosCloth/Source/ChaosCloth/Private/ChaosCloth/ChaosClothingSimulation.cpp:586
Scope (from outer to inner):
file
function void FClothingSimulation::Simulate
Source code excerpt:
if (ClothingSimulationCVar::DebugDrawCollision .GetValueOnAnyThread()) { DebugDrawCollision (); }
if (ClothingSimulationCVar::DebugDrawBackstops .GetValueOnAnyThread()) { DebugDrawBackstops (); }
if (ClothingSimulationCVar::DebugDrawBackstopDistances .GetValueOnAnyThread()) { DebugDrawBackstopDistances (); }
if (ClothingSimulationCVar::DebugDrawMaxDistances .GetValueOnAnyThread()) { DebugDrawMaxDistances (); }
if (ClothingSimulationCVar::DebugDrawAnimDrive .GetValueOnAnyThread()) { DebugDrawAnimDrive (); }
if (ClothingSimulationCVar::DebugDrawEdgeConstraint .GetValueOnAnyThread()) { DebugDrawEdgeConstraint (); }
if (ClothingSimulationCVar::DebugDrawBendingConstraint .GetValueOnAnyThread()) { DebugDrawBendingConstraint (); }
if (ClothingSimulationCVar::DebugDrawLongRangeConstraint .GetValueOnAnyThread()) { DebugDrawLongRangeConstraint (); }
if (ClothingSimulationCVar::DebugDrawWindForces .GetValueOnAnyThread()) { DebugDrawWindAndPressureForces(); }
#Loc: <Workspace>/Engine/Plugins/ChaosCloth/Source/ChaosCloth/Public/ChaosCloth/ChaosClothingSimulation.h:101
Scope (from outer to inner):
file
namespace Chaos
class class FClothingSimulation : public FClothingSimulationCommon
function void DebugDrawBackstopDistances
Source code excerpt:
void DebugDrawCollision(FPrimitiveDrawInterface* PDI = nullptr) const { Visualization.DrawCollision(PDI); }
void DebugDrawBackstops(FPrimitiveDrawInterface* PDI = nullptr) const { Visualization.DrawBackstops(PDI); }
void DebugDrawBackstopDistances(FPrimitiveDrawInterface* PDI = nullptr) const { Visualization.DrawBackstopDistances(PDI); }
void DebugDrawMaxDistances(FPrimitiveDrawInterface* PDI = nullptr) const { Visualization.DrawMaxDistances(PDI); }
void DebugDrawAnimDrive(FPrimitiveDrawInterface* PDI = nullptr) const { Visualization.DrawAnimDrive(PDI); }
void DebugDrawEdgeConstraint(FPrimitiveDrawInterface* PDI = nullptr) const { Visualization.DrawEdgeConstraint(PDI); }
void DebugDrawBendingConstraint(FPrimitiveDrawInterface* PDI = nullptr) const { Visualization.DrawBendingConstraint(PDI); }
void DebugDrawLongRangeConstraint(FPrimitiveDrawInterface* PDI = nullptr) const { Visualization.DrawLongRangeConstraint(PDI); }
void DebugDrawWindAndPressureForces(FPrimitiveDrawInterface* PDI = nullptr) const { Visualization.DrawWindAndPressureForces(PDI); }
#Loc: <Workspace>/Engine/Plugins/ChaosCloth/Source/ChaosClothEditor/Private/ChaosClothEditor/ChaosSimulationEditorExtender.cpp:72
Scope (from outer to inner):
file
namespace Chaos
Source code excerpt:
FVisualizationOption(&Chaos::FClothingSimulation::DebugDrawCollision , TEXT("p.ChaosClothEditor.DebugDrawCollision" ), LOCTEXT("ChaosVisName_Collision" , "Collisions" ), LOCTEXT("ChaosVisName_Collision_ToolTip" , "Draws the collision bodies the simulation is currently using")),
FVisualizationOption(&Chaos::FClothingSimulation::DebugDrawBackstops , TEXT("p.ChaosClothEditor.DebugDrawBackstops" ), LOCTEXT("ChaosVisName_Backstop" , "Backstops" ), LOCTEXT("ChaosVisName_Backstop_ToolTip" , "Draws the backstop radius and position for each simulation particle")),
FVisualizationOption(&Chaos::FClothingSimulation::DebugDrawBackstopDistances , TEXT("p.ChaosClothEditor.DebugDrawBackstopDistances" ), LOCTEXT("ChaosVisName_BackstopDistance" , "Backstop Distances" ), LOCTEXT("ChaosVisName_BackstopDistance_ToolTip" , "Draws the backstop distance offset for each simulation particle"), /*bDisablesSimulation =*/true),
FVisualizationOption(&Chaos::FClothingSimulation::DebugDrawMaxDistances , TEXT("p.ChaosClothEditor.DebugDrawMaxDistances" ), LOCTEXT("ChaosVisName_MaxDistance" , "Max Distances" ), LOCTEXT("ChaosVisName_MaxDistance_ToolTip" , "Draws the current max distances for the sim particles as a line along its normal"), /*bDisablesSimulation =*/true),
FVisualizationOption(&Chaos::FClothingSimulation::DebugDrawMaxDistanceValues , TEXT("p.ChaosClothEditor.DebugDrawMaxDistanceValues" ), LOCTEXT("ChaosVisName_MaxDistanceValue" , "Max Distances As Numbers" ), LOCTEXT("ChaosVisName_MaxDistanceValue_ToolTip" , "Draws the current max distances as numbers")),
FVisualizationOption(&Chaos::FClothingSimulation::DebugDrawAnimDrive , TEXT("p.ChaosClothEditor.DebugDrawAnimDrive" ), LOCTEXT("ChaosVisName_AnimDrive" , "Anim Drive" ), LOCTEXT("ChaosVisName_AnimDrive_Tooltip" , "Draws the current skinned reference mesh for the simulation which anim drive will attempt to reach if enabled")),
FVisualizationOption(&Chaos::FClothingSimulation::DebugDrawEdgeConstraint , TEXT("p.ChaosClothEditor.DebugDrawEdgeConstraint" ), LOCTEXT("ChaosVisName_EdgeConstraint" , "Edge Constraint" ), LOCTEXT("ChaosVisName_EdgeConstraint_Tooltip" , "Draws the edge spring constraints")),
FVisualizationOption(&Chaos::FClothingSimulation::DebugDrawBendingConstraint , TEXT("p.ChaosClothEditor.DebugDrawBendingConstraint" ), LOCTEXT("ChaosVisName_BendingConstraint" , "Bending Constraint" ), LOCTEXT("ChaosVisName_BendingConstraint_Tooltip" , "Draws the bending spring constraints")),
FVisualizationOption(&Chaos::FClothingSimulation::DebugDrawLongRangeConstraint , TEXT("p.ChaosClothEditor.DebugDrawLongRangeConstraint" ), LOCTEXT("ChaosVisName_LongRangeConstraint" , "Long Range Constraint" ), LOCTEXT("ChaosVisName_LongRangeConstraint_Tooltip" , "Draws the long range attachment constraint distances")),