PxSceneFlag#

Defined in include/PxSceneDesc.h

struct PxSceneFlag#

flags for configuring properties of the scene

See also

PxScene

Public Types

enum Enum#

Values:

enumerator eENABLE_ACTIVE_ACTORS#

Enable Active Actors Notification.

This flag enables the Active Actor Notification feature for a scene. This feature defaults to disabled. When disabled, the function PxScene::getActiveActors() will always return a NULL list.

Default: False

Note

There may be a performance penalty for enabling the Active Actor Notification, hence this flag should only be enabled if the application intends to use the feature.

enumerator eENABLE_CCD#

Enables a second broad phase check after integration that makes it possible to prevent objects from tunneling through eachother.

PxPairFlag::eDETECT_CCD_CONTACT requires this flag to be specified.

Default: False

Note

For this feature to be effective for bodies that can move at a significant velocity, the user should raise the flag PxRigidBodyFlag::eENABLE_CCD for them.

Note

This flag is not mutable, and must be set in PxSceneDesc at scene creation.

enumerator eDISABLE_CCD_RESWEEP#

Enables a simplified swept integration strategy, which sacrifices some accuracy for improved performance.

This simplified swept integration approach makes certain assumptions about the motion of objects that are not made when using a full swept integration. These assumptions usually hold but there are cases where they could result in incorrect behavior between a set of fast-moving rigid bodies. A key issue is that fast-moving dynamic objects may tunnel through each-other after a rebound. This will not happen if this mode is disabled. However, this approach will be potentially faster than a full swept integration because it will perform significantly fewer sweeps in non-trivial scenes involving many fast-moving objects. This approach should successfully resist objects passing through the static environment.

PxPairFlag::eDETECT_CCD_CONTACT requires this flag to be specified.

Default: False

Note

This scene flag requires eENABLE_CCD to be enabled as well. If it is not, this scene flag will do nothing.

Note

For this feature to be effective for bodies that can move at a significant velocity, the user should raise the flag PxRigidBodyFlag::eENABLE_CCD for them.

Note

This flag is not mutable, and must be set in PxSceneDesc at scene creation.

enumerator eENABLE_PCM#

Enable GJK-based distance collision detection system.

Default: true

Note

This flag is not mutable, and must be set in PxSceneDesc at scene creation.

enumerator eDISABLE_CONTACT_REPORT_BUFFER_RESIZE#

Disable contact report buffer resize.

Once the contact buffer is full, the rest of the contact reports will not be buffered and sent.

Default: false

Note

This flag is not mutable, and must be set in PxSceneDesc at scene creation.

enumerator eDISABLE_CONTACT_CACHE#

Disable contact cache.

Contact caches are used internally to provide faster contact generation. You can disable all contact caches if memory usage for this feature becomes too high.

Default: false

Note

This flag is not mutable, and must be set in PxSceneDesc at scene creation.

enumerator eREQUIRE_RW_LOCK#

Require scene-level locking.

When set to true this requires that threads accessing the PxScene use the multi-threaded lock methods.

Default: false

Note

This flag is not mutable, and must be set in PxSceneDesc at scene creation.

enumerator eENABLE_STABILIZATION#

Enables additional stabilization pass in solver.

When set to true, this enables additional stabilization processing to improve that stability of complex interactions between large numbers of bodies.

Note that this flag is not mutable and must be set in PxSceneDesc at scene creation. Also, this is an experimental feature which does result in some loss of momentum.

enumerator eENABLE_AVERAGE_POINT#

Enables average points in contact manifolds.

When set to true, this enables additional contacts to be generated per manifold to represent the average point in a manifold. This can stabilize stacking when only a small number of solver iterations is used.

Note that this flag is not mutable and must be set in PxSceneDesc at scene creation.

enumerator eEXCLUDE_KINEMATICS_FROM_ACTIVE_ACTORS#

Do not report kinematics in list of active actors.

Since the target pose for kinematics is set by the user, an application can track the activity state directly and use this flag to avoid that kinematics get added to the list of active actors.

Default: false

Note

This flag has only an effect in combination with eENABLE_ACTIVE_ACTORS.

enumerator eENABLE_GPU_DYNAMICS#
enumerator eENABLE_ENHANCED_DETERMINISM#

Provides improved determinism at the expense of performance.

By default, PhysX provides limited determinism guarantees. Specifically, PhysX guarantees that the exact scene (same actors created in the same order) and simulated using the same time-stepping scheme should provide the exact same behaviour.

However, if additional actors are added to the simulation, this can affect the behaviour of the existing actors in the simulation, even if the set of new actors do not interact with the existing actors.

This flag provides an additional level of determinism that guarantees that the simulation will not change if additional actors are added to the simulation, provided those actors do not interfere with the existing actors in the scene. Determinism is only guaranteed if the actors are inserted in a consistent order each run in a newly-created scene and simulated using a consistent time-stepping scheme.

Note that this flag is not mutable and must be set at scene creation.

Note that enabling this flag can have a negative impact on performance.

Note that this feature is not currently supported on GPU.

Default false

enumerator eENABLE_FRICTION_EVERY_ITERATION#

Controls processing friction in all solver iterations.

By default, PhysX processes friction only in the final 3 position iterations, and all velocity iterations. This flag enables friction processing in all position and velocity iterations.

The default behaviour provides a good trade-off between performance and stability and is aimed primarily at game development.

When simulating more complex frictional behaviour, such as grasping of complex geometries with a robotic manipulator, better results can be achieved by enabling friction in all solver iterations.

Note

This flag only has effect with the default solver. The TGS solver always performs friction per-iteration.

enumerator eENABLE_EXTERNAL_FORCES_EVERY_ITERATION_TGS#

Controls application of gravity and other external forces per TGS solver position iterations.

By default, external forces such as gravity are applied just once at the beginning of each simulate() call. With this flag enabled the same forces are applied in each sub time step (position iteration) of the TGS solver, leading to greater stability and better solver convergence. One consequence is that a body in freefall will move a shorter distance over the entire simulation step if the flag is raised.

Note that raising this flag makes the distance traveled under freefall dependent on the number of solver iterations. Since solver iterations are determined per-island, bodies assigned to an island with fewer solver iterations will travel a larger distance than bodies assigned to an island with more iterations.

Default false

Note

This feature is only supported for the TGS solver.

enumerator eENABLE_DIRECT_GPU_API#

Enables the direct-GPU API.

Raising this flag is only allowed if eENABLE_GPU_DYNAMICS is raised and PxBroadphaseType::eGPU is used.

This is useful if your application only needs to communicate to the GPU via GPU buffers. Can be significantly faster.

Default false

Note

Enabling the direct-GPU API will disable the readback of simulation state from GPU to CPU. Simulation outputs can only be accessed using the direct-GPU API functions in PxDirectGPUAPI (PxDirectGPUAPI::getRigidDynamicData(), PxDirectGPUAPI::getArticulationData(), PxDirectGPUAPI::copyContactData()), and reading state directly from the actor is not allowed.

Note

This flag requires PxSceneFlag::eDISABLE_SLEEPING to be raised.

Note

This flag is not mutable and must be set in PxSceneDesc at scene creation.

enumerator eENABLE_BODY_ACCELERATIONS#

Enables the computation of body accelerations for PxRigidDynamic actors.

By default PhysX does not compute per-body accelerations for PxRigidDynamic actors (only for articulation links). This flag tells the system to compute them.

Retrieve the accelerations using PxRigidBody::getLinearAcceleration() and PxRigidBody::getAngularAcceleration().

If the flag is not enabled these functions will return valid accelerations for PxArticulationLink objects, but it will return zero for PxRigidDynamic actors.

If the flag is enabled, these functions will return valid accelerations for both PxArticulationLink and PxRigidDynamic objects.

This flag also enables PxRigidDynamicGPUAPIReadType::eLINEAR_ACCELERATION and PxRigidDynamicGPUAPIReadType::eANGULAR_ACCELERATION in the direct GPU API.

Default false

Note

This flag is not mutable and must be set in PxSceneDesc at scene creation.

enumerator eSOLVE_ARTICULATION_CONTACT_LAST#

Reorders articulation contact constraints and articulation joint maximum velocity constraints in the solver.

When this flag is raised, the solver will observe the following order:

  • joint friction, joint drive, joint position limit

  • link dynamic contact

  • link static contact

  • joint max velocity

When the flag is lowered, the solver will observe a modified order:

  • link dynamic contact

  • joint friction, joint drive, joint position limit

  • joint max velocity

  • link static contact

Raising the flag can be useful for certain simulation scenarios such as gripping, where it is desirable for dynamic contact to be resolved after joint drive but before max joint velocity.

Default false

Note

Raising this flag may have a negative effect on simulation performance.

Note

A goal of raising this flag is shallower contact penetration. This will in turn result in a reduced force reported by PxArticulationCache::linkIncomingJointForce.

enumerator eDISABLE_SLEEPING#

Disables all sleeping logic in the scene.

When this flag is raised, no objects will be put to sleep. They will all be treated by the solver as awake. This is a performance optimization for use cases where sleeping is not desired.

Default false

Note

This flag is automatically enabled when PxSceneFlag::eENABLE_DIRECT_GPU_API is set.

enumerator eMUTABLE_FLAGS#