p.CollisionBaseFrictionImpulse
p.CollisionBaseFrictionImpulse
#Overview
name: p.CollisionBaseFrictionImpulse
This variable is created as a Console Variable (cvar).
- type:
Var
- help:
Collision base friction position impulse for all contacts if >= 0
It is referenced in 3
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of p.CollisionBaseFrictionImpulse is to override the base friction position impulse for all contacts in the Chaos physics system of Unreal Engine 5. This setting is part of the collision and physics simulation subsystem.
This setting variable is primarily used in the Chaos module, which is an experimental physics engine in Unreal Engine 5. It’s specifically utilized in the PBDCollisionConstraints component of the Chaos system.
The value of this variable is set through the Unreal Engine console variable system. It’s defined as an FAutoConsoleVariableRef, which means it can be modified at runtime through console commands or configuration files.
The p.CollisionBaseFrictionImpulse variable interacts directly with the CollisionBaseFrictionImpulseOverride variable. When p.CollisionBaseFrictionImpulse is set to a value greater than or equal to 0, it overrides the default base friction impulse for all contacts in the physics simulation.
Developers must be aware that this variable only takes effect when its value is greater than or equal to 0. If it’s set to a negative value, it won’t override the default behavior.
Best practices when using this variable include:
- Use it sparingly and only when you need to globally adjust friction behavior.
- Be cautious when modifying it at runtime, as it can significantly impact the physics simulation.
- Consider performance implications when adjusting this value, as it affects all contacts in the simulation.
Regarding the associated variable CollisionBaseFrictionImpulseOverride:
The purpose of CollisionBaseFrictionImpulseOverride is to store the value set by p.CollisionBaseFrictionImpulse. It’s an internal variable used within the Chaos physics system to apply the override when necessary.
This variable is used in the Chaos module, specifically in the PBDCollisionConstraints component.
The value of CollisionBaseFrictionImpulseOverride is set directly by the p.CollisionBaseFrictionImpulse console variable.
It interacts with the MaterialBaseFrictionImpulse variable in the UpdateConstraintMaterialProperties function. When CollisionBaseFrictionImpulseOverride is greater than or equal to 0, it overrides the MaterialBaseFrictionImpulse value.
Developers should be aware that this variable is initialized to -1.0f, which means no override is applied by default.
Best practices for this variable include:
- Avoid modifying it directly in code; instead, use the p.CollisionBaseFrictionImpulse console variable to change its value.
- When debugging physics issues, check this variable’s value to ensure the intended override is being applied.
#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:55
Scope (from outer to inner):
file
namespace Chaos
Source code excerpt:
FRealSingle CollisionBaseFrictionImpulseOverride = -1.0f;
FAutoConsoleVariableRef CVarCollisionBaseFrictionImpulseOverride(TEXT("p.CollisionBaseFrictionImpulse"), CollisionBaseFrictionImpulseOverride, TEXT("Collision base friction position impulse for all contacts if >= 0"));
CHAOS_API int32 EnableCollisions = 1;
FAutoConsoleVariableRef CVarEnableCollisions(TEXT("p.EnableCollisions"), EnableCollisions, TEXT("Enable/Disable collisions on the Chaos solver."));
FRealSingle DefaultCollisionFriction = 0;
FAutoConsoleVariableRef CVarDefaultCollisionFriction(TEXT("p.DefaultCollisionFriction"), DefaultCollisionFriction, TEXT("Collision friction default value if no materials are found."));
#Associated Variable and Callsites
This variable is associated with another variable named CollisionBaseFrictionImpulseOverride
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/PBDCollisionConstraints.cpp:54
Scope (from outer to inner):
file
namespace Chaos
Source code excerpt:
FAutoConsoleVariableRef CVarCollisionAngularFrictionOverride(TEXT("p.CollisionAngularFriction"), CollisionAngularFrictionOverride, TEXT("Collision angular friction for all contacts if >= 0"));
FRealSingle CollisionBaseFrictionImpulseOverride = -1.0f;
FAutoConsoleVariableRef CVarCollisionBaseFrictionImpulseOverride(TEXT("p.CollisionBaseFrictionImpulse"), CollisionBaseFrictionImpulseOverride, TEXT("Collision base friction position impulse for all contacts if >= 0"));
CHAOS_API int32 EnableCollisions = 1;
FAutoConsoleVariableRef CVarEnableCollisions(TEXT("p.EnableCollisions"), EnableCollisions, TEXT("Enable/Disable collisions on the Chaos solver."));
FRealSingle DefaultCollisionFriction = 0;
FAutoConsoleVariableRef CVarDefaultCollisionFriction(TEXT("p.DefaultCollisionFriction"), DefaultCollisionFriction, TEXT("Collision friction default value if no materials are found."));
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/PBDCollisionConstraints.cpp:523
Scope (from outer to inner):
file
namespace Chaos
function void FPBDCollisionConstraints::UpdateConstraintMaterialProperties
Source code excerpt:
MaterialStaticFriction = CollisionAngularFrictionOverride;
}
if (CollisionBaseFrictionImpulseOverride >= 0)
{
MaterialBaseFrictionImpulse = CollisionBaseFrictionImpulseOverride;
}
if (!bEnableRestitution)
{
MaterialRestitution = 0.0f;
}