unreal.PhysicsAssetSolverSettings

class unreal.PhysicsAssetSolverSettings(position_iterations: int = 0, velocity_iterations: int = 0, projection_iterations: int = 0, cull_distance: float = 0.0, max_depenetration_velocity: float = 0.0, fixed_time_step: float = 0.0, use_linear_joint_solver: bool = False)

Bases: StructBase

Solver iterations settings for use by RigidBody AnimNode (RBAN) in the Anim Graph. Each RBAN node runs its own solver with these settings. note: These settings have no effect when the Physics Asset is used in a world simulation (i.e., as a ragdoll on a SkeletalMeshComponent).

C++ Source:

  • Module: Engine

  • File: PhysicsAsset.h

Editor Properties: (see get_editor_property/set_editor_property)

  • cull_distance (float): [Read-Write] RBAN: The distance at which collisions are ignored. In general you need this to be a bit larger than the typical relative body movement in your simulation, but small enough so that we don’t have to speculatively create too many unused collisions.

  • fixed_time_step (float): [Read-Write] RBAN: The recommended fixed timestep for the RBAN solver. Set to 0 to run with variable timestep (default). NOTE: If this value is non-zero and less than the current frame time, the simulation will step multiple times which increases the cost.

  • max_depenetration_velocity (float): [Read-Write] RBAN: When bodies are penetrating, this is the maximum velocity delta that can be applied in one frame.

  • position_iterations (int32): [Read-Write] RBAN: The number of position iterations to run. The position solve is responsible for depenetration. Increasing this will improve simulation stability, but increase the cost.

  • projection_iterations (int32): [Read-Write] RBAN: The number of projection iterations to run. The projection phase is a final pass over the constraints, applying a semi-physical correction to any joint errors remaining after the position and velocity solves. It can be very helpful to stabilize joint chains, but can cause issues with collision response. The projection magnitude can be controlled per-constraint in the constraint settings (assuming ProjectionIteration is not zero). This should be left as 1 in almost all cases.

  • use_linear_joint_solver (bool): [Read-Write] RBAN: Whether to use the linear or non-linear solver for RBAN Joints. The linear solver is significantly cheaper than the non-linear solver when you are running multiple iterations, but is more likely to suffer from jitter. In general you should try to use the linear solver and increase the PositionIterations to improve stability if possible, only using the non-linear solver as a last resort.

  • velocity_iterations (int32): [Read-Write] RBAN: The number of velocity iterations to run. The velocity solve is responsible for restitution (bounce) and friction. This should usually be 1, but could be 0 if you don’t care about friction and restitution.

property cull_distance: float

The distance at which collisions are ignored. In general you need this to be a bit larger than the typical relative body movement in your simulation, but small enough so that we don’t have to speculatively create too many unused collisions.

Type:

(float)

Type:

[Read-Write] RBAN

property fixed_time_step: float

The recommended fixed timestep for the RBAN solver. Set to 0 to run with variable timestep (default). NOTE: If this value is non-zero and less than the current frame time, the simulation will step multiple times which increases the cost.

Type:

(float)

Type:

[Read-Write] RBAN

property max_depenetration_velocity: float

When bodies are penetrating, this is the maximum velocity delta that can be applied in one frame.

Type:

(float)

Type:

[Read-Write] RBAN

property position_iterations: int

The number of position iterations to run. The position solve is responsible for depenetration. Increasing this will improve simulation stability, but increase the cost.

Type:

(int32)

Type:

[Read-Write] RBAN

property projection_iterations: int

The number of projection iterations to run. The projection phase is a final pass over the constraints, applying a semi-physical correction to any joint errors remaining after the position and velocity solves. It can be very helpful to stabilize joint chains, but can cause issues with collision response. The projection magnitude can be controlled per-constraint in the constraint settings (assuming ProjectionIteration is not zero). This should be left as 1 in almost all cases.

Type:

(int32)

Type:

[Read-Write] RBAN

property use_linear_joint_solver: bool

Whether to use the linear or non-linear solver for RBAN Joints. The linear solver is significantly cheaper than the non-linear solver when you are running multiple iterations, but is more likely to suffer from jitter. In general you should try to use the linear solver and increase the PositionIterations to improve stability if possible, only using the non-linear solver as a last resort.

Type:

(bool)

Type:

[Read-Write] RBAN

property velocity_iterations: int

The number of velocity iterations to run. The velocity solve is responsible for restitution (bounce) and friction. This should usually be 1, but could be 0 if you don’t care about friction and restitution.

Type:

(int32)

Type:

[Read-Write] RBAN