p.CollisionAngularFriction
p.CollisionAngularFriction
#Overview
name: p.CollisionAngularFriction
This variable is created as a Console Variable (cvar).
- type:
Var
- help:
Collision angular friction for all contacts if >= 0
It is referenced in 3
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of p.CollisionAngularFriction is to control the angular friction for all collision contacts in the Chaos physics system of Unreal Engine 5.
This setting variable is primarily used by the Chaos physics system, which is part of Unreal Engine’s experimental physics module. It is specifically utilized within the collision constraints subsystem of Chaos.
The value of this variable is set through a console variable (CVar) system, which allows for runtime modification. It’s initialized with a default value of -1.0f, indicating that it’s not actively overriding any values unless explicitly set to a non-negative value.
The p.CollisionAngularFriction variable interacts directly with the CollisionAngularFrictionOverride variable. They share the same value, with CollisionAngularFrictionOverride serving as the actual storage for the friction value.
Developers must be aware that this variable only takes effect when set to a value greater than or equal to zero. When negative, it doesn’t override the default angular friction values set elsewhere in the physics system.
Best practices for using this variable include:
- Only set it to non-negative values when you want to override the default angular friction for all contacts.
- Use it for global adjustments to collision behavior, rather than for specific objects or scenarios.
- Be cautious when modifying this at runtime, as it can significantly impact the physics simulation’s behavior.
Regarding the associated variable CollisionAngularFrictionOverride:
The purpose of CollisionAngularFrictionOverride is to store the actual value of the angular friction override for collision contacts in the Chaos physics system.
This variable is used directly within the Chaos physics module, specifically in the PBDCollisionConstraints system.
The value of CollisionAngularFrictionOverride is set by the p.CollisionAngularFriction console variable.
It interacts with the MaterialStaticFriction variable within the UpdateConstraintMaterialProperties function, potentially overriding its value.
Developers should be aware that this variable is checked in the physics simulation loop and will override the default angular friction when set to a non-negative value.
Best practices for CollisionAngularFrictionOverride include:
- Avoid directly modifying this variable; instead, use the p.CollisionAngularFriction console variable to set its value.
- Remember that it affects all collision contacts globally when set, which may not always be desirable for specific gameplay scenarios.
- Consider using it in conjunction with other collision-related variables for fine-tuning physics behavior.
#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:52
Scope (from outer to inner):
file
namespace Chaos
Source code excerpt:
FRealSingle CollisionAngularFrictionOverride = -1.0f;
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."));
#Associated Variable and Callsites
This variable is associated with another variable named CollisionAngularFrictionOverride
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/PBDCollisionConstraints.cpp:51
Scope (from outer to inner):
file
namespace Chaos
Source code excerpt:
FAutoConsoleVariableRef CVarCollisionRestitutionOverride(TEXT("p.CollisionRestitution"), CollisionRestitutionOverride, TEXT("Collision restitution for all contacts if >= 0"));
FRealSingle CollisionAngularFrictionOverride = -1.0f;
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."));
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/PBDCollisionConstraints.cpp:519
Scope (from outer to inner):
file
namespace Chaos
function void FPBDCollisionConstraints::UpdateConstraintMaterialProperties
Source code excerpt:
MaterialRestitutionThreshold = CollisionRestitutionThresholdOverride;
}
if (CollisionAngularFrictionOverride >= 0)
{
MaterialStaticFriction = CollisionAngularFrictionOverride;
}
if (CollisionBaseFrictionImpulseOverride >= 0)
{
MaterialBaseFrictionImpulse = CollisionBaseFrictionImpulseOverride;
}
if (!bEnableRestitution)