p.Chaos.ImmPhys.Joint.MinParentMassRatio
p.Chaos.ImmPhys.Joint.MinParentMassRatio
#Overview
name: p.Chaos.ImmPhys.Joint.MinParentMassRatio
This variable is created as a Console Variable (cvar).
- type:
Var
- help:
6Dof joint MinParentMassRatio (if > 0)
It is referenced in 4
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of p.Chaos.ImmPhys.Joint.MinParentMassRatio is to set the minimum mass ratio between a parent and child body in a 6 degrees of freedom (6DoF) joint within the Chaos physics engine’s Immediate Physics system. This setting is part of the physics simulation subsystem, specifically related to joint constraints.
This setting variable is primarily used in the Chaos physics engine, which is part of Unreal Engine’s physics simulation module. It is specifically utilized in the Immediate Physics system, a component of the Chaos physics engine designed for high-performance, low-latency physics simulations.
The value of this variable is set through the Unreal Engine console variable system. It is defined as an FAutoConsoleVariableRef, which allows it to be modified at runtime through console commands or configuration files.
The associated variable ChaosImmediate_Joint_MinParentMassRatio interacts directly with p.Chaos.ImmPhys.Joint.MinParentMassRatio. They share the same value, with ChaosImmediate_Joint_MinParentMassRatio being the actual variable used in the physics simulation code.
Developers must be aware that this variable affects the behavior of 6DoF joints in the physics simulation. It sets a minimum ratio for the mass of the parent body relative to the child body in a joint. This can impact the stability and realism of joint simulations, particularly in scenarios involving bodies with significantly different masses.
Best practices when using this variable include:
- Carefully tuning the value based on the specific requirements of your physics simulation.
- Testing the effects of different values in various scenarios to ensure desired joint behavior.
- Considering the interplay between this setting and other joint-related variables, such as MaxInertiaRatio.
- Using this variable in conjunction with other physics tweaks to achieve the most stable and realistic joint simulations.
Regarding the associated variable ChaosImmediate_Joint_MinParentMassRatio:
- Its purpose is the same as p.Chaos.ImmPhys.Joint.MinParentMassRatio, serving as the actual variable used in the physics code.
- It is used directly in the Chaos Immediate Physics simulation system.
- Its value is set by the console variable p.Chaos.ImmPhys.Joint.MinParentMassRatio.
- It interacts with other joint-related variables in the physics simulation.
- Developers should be aware that modifying the console variable will directly affect this variable’s value.
- Best practices include monitoring this variable’s effects on joint behavior and adjusting related physics parameters accordingly.
#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:134
Scope: file
Source code excerpt:
FAutoConsoleVariableRef CVarChaosImmPhysJointAngularDriveStiffness(TEXT("p.Chaos.ImmPhys.Joint.AngularDriveStiffness"), ChaosImmediate_Joint_AngularDriveStiffness, TEXT("6Dof joint drive stiffness override (if > 0)."));
FAutoConsoleVariableRef CVarChaosImmPhysJointAngularDriveDamping(TEXT("p.Chaos.ImmPhys.Joint.AngularDriveDamping"), ChaosImmediate_Joint_AngularDriveDamping, TEXT("6Dof joint drive damping override (if > 0)."));
FAutoConsoleVariableRef CVarChaosImmPhysJointMinParentMassRatio(TEXT("p.Chaos.ImmPhys.Joint.MinParentMassRatio"), ChaosImmediate_Joint_MinParentMassRatio, TEXT("6Dof joint MinParentMassRatio (if > 0)"));
FAutoConsoleVariableRef CVarChaosImmPhysJointMaxInertiaRatio(TEXT("p.Chaos.ImmPhys.Joint.MaxInertiaRatio"), ChaosImmediate_Joint_MaxInertiaRatio, TEXT("6Dof joint MaxInertiaRatio (if > 0)"));
bool bChaosImmediate_LinearInertiaConditioningEnabled = true;
FAutoConsoleVariableRef CVarChaosImmPhysParticleLinearInertiaConditioningEnabled(TEXT("p.Chaos.ImmPhys.InertiaConditioning.LinearEnabled"), bChaosImmediate_LinearInertiaConditioningEnabled, TEXT("Enable/Disable constraint stabilization through inertia conditioning when using the linear joint solver"));
bool bChaosImmediate_NonLinearInertiaConditioningEnabled = false;
#Associated Variable and Callsites
This variable is associated with another variable named ChaosImmediate_Joint_MinParentMassRatio
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/PhysicsEngine/ImmediatePhysics/ImmediatePhysicsChaos/ImmediatePhysicsSimulation_Chaos.cpp:110
Scope: file
Source code excerpt:
Chaos::FRealSingle ChaosImmediate_Joint_AngularDriveStiffness = -1.0f;
Chaos::FRealSingle ChaosImmediate_Joint_AngularDriveDamping = -1.0f;
Chaos::FRealSingle ChaosImmediate_Joint_MinParentMassRatio = 0.2f;
Chaos::FRealSingle ChaosImmediate_Joint_MaxInertiaRatio = 5.0f;
FAutoConsoleVariableRef CVarChaosImmPhysJointSwingTwistAngleTolerance(TEXT("p.Chaos.ImmPhys.Joint.SwingTwistAngleTolerance"), ChaosImmediate_Joint_SwingTwistAngleTolerance, TEXT("SwingTwistAngleTolerance."));
FAutoConsoleVariableRef CVarChaosImmPhysJointPositionTolerance(TEXT("p.Chaos.ImmPhys.Joint.PositionTolerance"), ChaosImmediate_Joint_PositionTolerance, TEXT("PositionTolerance."));
FAutoConsoleVariableRef CVarChaosImmPhysJointAngleTolerance(TEXT("p.Chaos.ImmPhys.Joint.AngleTolerance"), ChaosImmediate_Joint_AngleTolerance, TEXT("AngleTolerance."));
FAutoConsoleVariableRef CVarChaosImmPhysJointNumShockPropagationIterations(TEXT("p.Chaos.ImmPhys.Joint.NumShockPropagationIterations"), ChaosImmediate_Joint_NumShockPropagationIterations, TEXT("How many iterations to run shock propagation for"));
FAutoConsoleVariableRef CVarChaosImmPhysJointSolvePositionLast(TEXT("p.Chaos.ImmPhys.Joint.SolvePositionLast"), ChaosImmediate_Joint_SolvePositionLast, TEXT("Should we solve joints in position-then-rotation order (false) rotation-then-position order (true, default)"));
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/PhysicsEngine/ImmediatePhysics/ImmediatePhysicsChaos/ImmediatePhysicsSimulation_Chaos.cpp:134
Scope: file
Source code excerpt:
FAutoConsoleVariableRef CVarChaosImmPhysJointAngularDriveStiffness(TEXT("p.Chaos.ImmPhys.Joint.AngularDriveStiffness"), ChaosImmediate_Joint_AngularDriveStiffness, TEXT("6Dof joint drive stiffness override (if > 0)."));
FAutoConsoleVariableRef CVarChaosImmPhysJointAngularDriveDamping(TEXT("p.Chaos.ImmPhys.Joint.AngularDriveDamping"), ChaosImmediate_Joint_AngularDriveDamping, TEXT("6Dof joint drive damping override (if > 0)."));
FAutoConsoleVariableRef CVarChaosImmPhysJointMinParentMassRatio(TEXT("p.Chaos.ImmPhys.Joint.MinParentMassRatio"), ChaosImmediate_Joint_MinParentMassRatio, TEXT("6Dof joint MinParentMassRatio (if > 0)"));
FAutoConsoleVariableRef CVarChaosImmPhysJointMaxInertiaRatio(TEXT("p.Chaos.ImmPhys.Joint.MaxInertiaRatio"), ChaosImmediate_Joint_MaxInertiaRatio, TEXT("6Dof joint MaxInertiaRatio (if > 0)"));
bool bChaosImmediate_LinearInertiaConditioningEnabled = true;
FAutoConsoleVariableRef CVarChaosImmPhysParticleLinearInertiaConditioningEnabled(TEXT("p.Chaos.ImmPhys.InertiaConditioning.LinearEnabled"), bChaosImmediate_LinearInertiaConditioningEnabled, TEXT("Enable/Disable constraint stabilization through inertia conditioning when using the linear joint solver"));
bool bChaosImmediate_NonLinearInertiaConditioningEnabled = false;
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/PhysicsEngine/ImmediatePhysics/ImmediatePhysicsChaos/ImmediatePhysicsSimulation_Chaos.cpp:873
Scope (from outer to inner):
file
namespace ImmediatePhysics_Chaos
function void FSimulation::Simulate
Source code excerpt:
JointsSettings.PositionTolerance = ChaosImmediate_Joint_PositionTolerance;
JointsSettings.AngleTolerance = ChaosImmediate_Joint_AngleTolerance;
JointsSettings.MinParentMassRatio = ChaosImmediate_Joint_MinParentMassRatio;
JointsSettings.MaxInertiaRatio = ChaosImmediate_Joint_MaxInertiaRatio;
JointsSettings.bSolvePositionLast = ChaosImmediate_Joint_SolvePositionLast != 0;
JointsSettings.bUsePositionBasedDrives = ChaosImmediate_Joint_UsePositionBasedDrives != 0;
JointsSettings.bEnableTwistLimits = ChaosImmediate_Joint_EnableTwistLimits != 0;
JointsSettings.bEnableSwingLimits = ChaosImmediate_Joint_EnableSwingLimits != 0;
JointsSettings.bEnableDrives = ChaosImmediate_Joint_EnableDrives != 0;