p.ChaosCloth.DebugDrawEdgeConstraint
p.ChaosCloth.DebugDrawEdgeConstraint
#Overview
name: p.ChaosCloth.DebugDrawEdgeConstraint
This variable is created as a Console Variable (cvar).
- type:
Var
- help:
Whether to debug draw the Chaos Cloth edge constraint
It is referenced in 6
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of p.ChaosCloth.DebugDrawEdgeConstraint is to enable debug drawing of the Chaos Cloth edge constraint. This setting variable is part of the Chaos Cloth simulation system in Unreal Engine 5, which is used for realistic cloth simulation in games and other real-time applications.
The Chaos Cloth plugin and the ChaosClothAsset module rely on this setting variable. It is primarily used in the cloth simulation and visualization components of these systems.
The value of this variable is set as a console variable (CVar) with a default value of false. It can be changed at runtime through the console or programmatically.
This variable interacts with several other debug drawing variables for the Chaos Cloth system, such as DebugDrawMaxDistances, DebugDrawAnimDrive, DebugDrawBendingConstraint, and others. They are all part of a suite of debug visualization tools for the Chaos Cloth system.
Developers should be aware that this is a debug feature and should only be enabled when necessary for visualization or debugging purposes. Enabling debug drawing can have performance implications, especially in a shipping build.
Best practices when using this variable include:
- Only enable it when actively debugging cloth simulation issues.
- Disable it in shipping builds to avoid potential performance impacts.
- Use it in conjunction with other debug drawing options to get a comprehensive view of the cloth simulation.
The associated variable DebugDrawEdgeConstraint is essentially the same as p.ChaosCloth.DebugDrawEdgeConstraint. It’s used within the codebase to actually perform the debug drawing when the console variable is set to true. This variable is typically used in the FClothingSimulation class to trigger the debug drawing of edge constraints. The same considerations and best practices apply to this associated variable.
#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:80
Scope (from outer to inner):
file
namespace ClothingSimulationCVar
Source code excerpt:
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);
TAutoConsoleVariable<bool> DebugDrawSelfCollision (TEXT("p.ChaosCloth.DebugDrawSelfCollision" ), false, TEXT("Whether to debug draw the Chaos Cloth self collision information"), ECVF_Cheat);
TAutoConsoleVariable<bool> DebugDrawSelfIntersection (TEXT("p.ChaosCloth.DebugDrawSelfIntersection" ), false, TEXT("Whether to debug draw the Chaos Cloth self intersection information"), ECVF_Cheat);
}
#Loc: <Workspace>/Engine/Plugins/ChaosClothAsset/Source/ChaosClothAssetEngine/Private/ChaosClothAsset/ClothSimulationProxy.cpp:305
Scope (from outer to inner):
file
namespace UE::Chaos::ClothAsset
function void FClothSimulationProxy::Tick
Source code excerpt:
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"));
static const TConsoleVariableData<bool>* const DebugDrawSelfCollisionCVar = IConsoleManager::Get().FindTConsoleVariableDataBool(TEXT("p.ChaosCloth.DebugDrawSelfCollision"));
static const TConsoleVariableData<bool>* const DebugDrawSelfIntersectionCVar = IConsoleManager::Get().FindTConsoleVariableDataBool(TEXT("p.ChaosCloth.DebugDrawSelfIntersection"));
#Associated Variable and Callsites
This variable is associated with another variable named DebugDrawEdgeConstraint
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Plugins/ChaosCloth/Source/ChaosCloth/Private/ChaosCloth/ChaosClothingSimulation.cpp:80
Scope (from outer to inner):
file
namespace ClothingSimulationCVar
Source code excerpt:
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);
TAutoConsoleVariable<bool> DebugDrawSelfCollision (TEXT("p.ChaosCloth.DebugDrawSelfCollision" ), false, TEXT("Whether to debug draw the Chaos Cloth self collision information"), ECVF_Cheat);
TAutoConsoleVariable<bool> DebugDrawSelfIntersection (TEXT("p.ChaosCloth.DebugDrawSelfIntersection" ), false, TEXT("Whether to debug draw the Chaos Cloth self intersection information"), ECVF_Cheat);
}
#Loc: <Workspace>/Engine/Plugins/ChaosCloth/Source/ChaosCloth/Private/ChaosCloth/ChaosClothingSimulation.cpp:589
Scope (from outer to inner):
file
function void FClothingSimulation::Simulate
Source code excerpt:
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(); }
if (ClothingSimulationCVar::DebugDrawSelfCollision .GetValueOnAnyThread()) { DebugDrawSelfCollision (); }
if (ClothingSimulationCVar::DebugDrawSelfIntersection .GetValueOnAnyThread()) { DebugDrawSelfIntersection (); }
#endif // #if CHAOS_DEBUG_DRAW
#Loc: <Workspace>/Engine/Plugins/ChaosCloth/Source/ChaosCloth/Public/ChaosCloth/ChaosClothingSimulation.h:104
Scope (from outer to inner):
file
namespace Chaos
class class FClothingSimulation : public FClothingSimulationCommon
function void DebugDrawEdgeConstraint
Source code excerpt:
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); }
UE_DEPRECATED(5.1, "DebugDrawWindForces has been renamed DebugDrawWindAndPressureForces.")
void DebugDrawWindForces(FPrimitiveDrawInterface* PDI = nullptr) const { Visualization.DrawWindAndPressureForces(PDI); }
void DebugDrawLocalSpace(FPrimitiveDrawInterface* PDI = nullptr) const { Visualization.DrawLocalSpace(PDI); }
#Loc: <Workspace>/Engine/Plugins/ChaosCloth/Source/ChaosClothEditor/Private/ChaosClothEditor/ChaosSimulationEditorExtender.cpp:76
Scope (from outer to inner):
file
namespace Chaos
Source code excerpt:
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")),
FVisualizationOption(&Chaos::FClothingSimulation::DebugDrawWindAndPressureForces, TEXT("p.ChaosClothEditor.DebugDrawWindAndPressureForces"), LOCTEXT("ChaosVisName_WindAndPressureForces", "Wind Aerodynamic And Pressure Forces"), LOCTEXT("ChaosVisName_WindAndPressure_Tooltip", "Draws the Wind drag and lift and pressure forces")),
FVisualizationOption(&Chaos::FClothingSimulation::DebugDrawLocalSpace , TEXT("p.ChaosClothEditor.DebugDrawLocalSpace" ), LOCTEXT("ChaosVisName_LocalSpace" , "Local Space Reference Bone" ), LOCTEXT("ChaosVisName_LocalSpace_Tooltip" , "Draws the local space reference bone")),
FVisualizationOption(&Chaos::FClothingSimulation::DebugDrawSelfCollision , TEXT("p.ChaosClothEditor.DebugDrawSelfCollision" ), LOCTEXT("ChaosVisName_SelfCollision" , "Self Collision" ), LOCTEXT("ChaosVisName_SelfCollision_Tooltip" , "Draws the self collision thickness/debugging information")),
FVisualizationOption(&Chaos::FClothingSimulation::DebugDrawSelfIntersection , TEXT("p.ChaosClothEditor.DebugDrawSelfIntersection" ), LOCTEXT("ChaosVisName_SelfIntersection" , "Self Intersection" ), LOCTEXT("ChaosVisName_SelfIntersection_Tooltip" , "Draws the self intersection contour/region information")),