p.Chaos.ImmPhys.VelocityIterations
p.Chaos.ImmPhys.VelocityIterations
#Overview
name: p.Chaos.ImmPhys.VelocityIterations
This variable is created as a Console Variable (cvar).
- type:
Var
- help:
Override number of velocity iteration loops in immediate physics (if >= 0)
It is referenced in 3
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of p.Chaos.ImmPhys.VelocityIterations is to control the number of velocity iteration loops in the immediate physics simulation within Unreal Engine’s Chaos physics system. This setting is specifically for the physics simulation subsystem, particularly the immediate physics component of Chaos.
This setting variable is primarily used by the Chaos physics subsystem within Unreal Engine, specifically in the immediate physics simulation module. Based on the callsites, it’s part of the Engine module and is used in the ImmediatePhysicsChaos implementation.
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 and can be overridden using the console command “p.Chaos.ImmPhys.VelocityIterations”.
The associated variable ChaosImmediate_Evolution_VelocityIterations interacts directly with p.Chaos.ImmPhys.VelocityIterations. They share the same value, with ChaosImmediate_Evolution_VelocityIterations being the actual variable used in the code, while p.Chaos.ImmPhys.VelocityIterations is the console variable name for user interaction.
Developers should be aware that:
- The default value is -1, which likely means the system will use a default or calculated value.
- Setting this variable to a value >= 0 will override the default behavior.
- This setting affects the accuracy and performance of the physics simulation. Higher values may increase accuracy but at the cost of performance.
Best practices when using this variable include:
- Only modify if you understand the implications on physics simulation accuracy and performance.
- Test thoroughly after changing this value to ensure desired physics behavior is maintained.
- Consider using in conjunction with other related settings like PositionIterations and ProjectionIterations for fine-tuning physics behavior.
Regarding the associated variable ChaosImmediate_Evolution_VelocityIterations:
- Its purpose is to store the actual value used in the immediate physics simulation for velocity iterations.
- It’s used directly in the Simulate function of the ImmediatePhysics_Chaos namespace.
- Its value is set by the console variable system and can be modified at runtime.
- Developers should treat it as the internal representation of the p.Chaos.ImmPhys.VelocityIterations setting.
- Best practice is to modify this variable through the console command rather than directly in code, to maintain consistency with the engine’s configuration system.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/PhysicsEngine/ImmediatePhysics/ImmediatePhysicsChaos/ImmediatePhysicsSimulation_Chaos.cpp:48
Scope: file
Source code excerpt:
FAutoConsoleVariableRef CVarChaosImmPhysDeltaTimeCount(TEXT("p.Chaos.ImmPhys.DeltaTimeCount"), ChaosImmediate_Evolution_DeltaTimeCount, TEXT("The number of ticks over which the moving average is calculated"));
FAutoConsoleVariableRef CVarChaosImmPhysPositionIterations(TEXT("p.Chaos.ImmPhys.PositionIterations"), ChaosImmediate_Evolution_PositionIterations, TEXT("Override number of position iteration loops in immediate physics (if >= 0)"));
FAutoConsoleVariableRef CVarChaosImmPhysVelocityIterations(TEXT("p.Chaos.ImmPhys.VelocityIterations"), ChaosImmediate_Evolution_VelocityIterations, TEXT("Override number of velocity iteration loops in immediate physics (if >= 0)"));
FAutoConsoleVariableRef CVarChaosImmPhysProjectionIterations(TEXT("p.Chaos.ImmPhys.ProjectionIterations"), ChaosImmediate_Evolution_ProjectionIterations, TEXT("Override number of projection iteration loops in immediate physics (if >= 0)"));
FAutoConsoleVariableRef CVarChaosImmPhysDisableInactiveByIndex(TEXT("p.Chaos.ImmPhys.DisableInactiveByIndex"), ChaosImmediate_DisableInactiveByIndex, TEXT("Disable bodies that are no longer active based on the index, rather than just count."));
FAutoConsoleVariableRef CVarChaosImmPhysNumCollisionsPerBlock(TEXT("p.Chaos.ImmPhys.NumCollisionsPerBlock"), ChaosImmediate_Evolution_NumCollisionsPerBlock, TEXT("The number of collision in a block in the collision pool. Higher values give better cache efficieny but waste memory if you do not need that many"));
Chaos::FRealSingle ChaosImmediate_Evolution_SimSpaceCentrifugalAlpha = 1.0f;
Chaos::FRealSingle ChaosImmediate_Evolution_SimSpaceCoriolisAlpha = 0.5f;
#Associated Variable and Callsites
This variable is associated with another variable named ChaosImmediate_Evolution_VelocityIterations
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/PhysicsEngine/ImmediatePhysics/ImmediatePhysicsChaos/ImmediatePhysicsSimulation_Chaos.cpp:39
Scope: file
Source code excerpt:
int32 ChaosImmediate_Evolution_DeltaTimeCount = 100;
int32 ChaosImmediate_Evolution_PositionIterations = -1;
int32 ChaosImmediate_Evolution_VelocityIterations = -1;
int32 ChaosImmediate_Evolution_ProjectionIterations = -1;
int32 ChaosImmediate_DisableInactiveByIndex = 1;
int32 ChaosImmediate_Evolution_NumCollisionsPerBlock = 50;
FAutoConsoleVariableRef CVarChaosImmPhysStepTime(TEXT("p.Chaos.ImmPhys.StepTime"), ChaosImmediate_Evolution_StepTime, TEXT("Override step time (if not zero)"));
FAutoConsoleVariableRef CVarChaosImmPhysNumSteps(TEXT("p.Chaos.ImmPhys.NumSteps"), ChaosImmediate_Evolution_NumSteps, TEXT("Override num steps (if not zero)"));
FAutoConsoleVariableRef CVarChaosImmPhysInitialStepTime(TEXT("p.Chaos.ImmPhys.InitialStepTime"), ChaosImmediate_Evolution_InitialStepTime, TEXT("Initial step time (then calculated from rolling average)"));
FAutoConsoleVariableRef CVarChaosImmPhysDeltaTimeCount(TEXT("p.Chaos.ImmPhys.DeltaTimeCount"), ChaosImmediate_Evolution_DeltaTimeCount, TEXT("The number of ticks over which the moving average is calculated"));
FAutoConsoleVariableRef CVarChaosImmPhysPositionIterations(TEXT("p.Chaos.ImmPhys.PositionIterations"), ChaosImmediate_Evolution_PositionIterations, TEXT("Override number of position iteration loops in immediate physics (if >= 0)"));
FAutoConsoleVariableRef CVarChaosImmPhysVelocityIterations(TEXT("p.Chaos.ImmPhys.VelocityIterations"), ChaosImmediate_Evolution_VelocityIterations, TEXT("Override number of velocity iteration loops in immediate physics (if >= 0)"));
FAutoConsoleVariableRef CVarChaosImmPhysProjectionIterations(TEXT("p.Chaos.ImmPhys.ProjectionIterations"), ChaosImmediate_Evolution_ProjectionIterations, TEXT("Override number of projection iteration loops in immediate physics (if >= 0)"));
FAutoConsoleVariableRef CVarChaosImmPhysDisableInactiveByIndex(TEXT("p.Chaos.ImmPhys.DisableInactiveByIndex"), ChaosImmediate_DisableInactiveByIndex, TEXT("Disable bodies that are no longer active based on the index, rather than just count."));
FAutoConsoleVariableRef CVarChaosImmPhysNumCollisionsPerBlock(TEXT("p.Chaos.ImmPhys.NumCollisionsPerBlock"), ChaosImmediate_Evolution_NumCollisionsPerBlock, TEXT("The number of collision in a block in the collision pool. Higher values give better cache efficieny but waste memory if you do not need that many"));
Chaos::FRealSingle ChaosImmediate_Evolution_SimSpaceCentrifugalAlpha = 1.0f;
Chaos::FRealSingle ChaosImmediate_Evolution_SimSpaceCoriolisAlpha = 0.5f;
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/PhysicsEngine/ImmediatePhysics/ImmediatePhysicsChaos/ImmediatePhysicsSimulation_Chaos.cpp:866
Scope (from outer to inner):
file
namespace ImmediatePhysics_Chaos
function void FSimulation::Simulate
Source code excerpt:
ChaosImmediate_Joint_UseLinearSolver,
ChaosImmediate_Evolution_PositionIterations,
ChaosImmediate_Evolution_VelocityIterations,
ChaosImmediate_Evolution_ProjectionIterations);
FPBDJointSolverSettings JointsSettings = Implementation->Joints.GetSettings();
JointsSettings.SwingTwistAngleTolerance = ChaosImmediate_Joint_SwingTwistAngleTolerance;
JointsSettings.PositionTolerance = ChaosImmediate_Joint_PositionTolerance;
JointsSettings.AngleTolerance = ChaosImmediate_Joint_AngleTolerance;