Omni PhysX Visual Debugger#

PhysX visual debugger extension - OmniPvd

Documentation#

Omniverse physics visual debugger (OmniPvd), an early preview version that allows for recording of transformations and attributes of Omniverse Physics objects and to transform them into USD.

OmniPvd consist of a shared library and a Kit extension. The shared library is used by both the PhysX SDK simulation engine for the recording or writing of OmniPvd binary files (.OVD) and by the omni.physx.pvd Kit extension to read the recorded OmniPvd (.OVD) files.

The OmniPvd Kit extension (omni.physx.pvd) allows firstly the transformation of PhysX recordings into USD or USDA format and to inspect them. It also allows secondly for the transforming of a single snapshot of such a PhysX recording into the Physics USD format. And thirdly allows for the baking or cooking of PhysX transforms onto Omniverse Physics objects in a separate Edit Layer.

To be able to record a physics scene, go into the Physics Debug window, under the PVD section and check “OmniPvd Enabled” output. This will allow for a binary serialization of your Omniverse physics scene into an OmniPvd file. It primes the underlying PhysX simulation engine for OVD output.

Once you have the OmniPvd file ready you can transform it into USD or USDA format by chosing the input (.OVD) file, the up axis and the output format (USDA/USD).

A feature that is deprecated and is currently not functional is the overlaying of an OmniPvd simulation recording onto a USD Stage, thereby baking the physics simulation as an animation track.

Below is a screenshot from an OmniPvd recording of the PhysX vehicle sample

pybind11 carb.physx.pvd bindings

class omni.physxpvd.bindings._physxPvd.IPhysXPvd#
clear_messages(
self: omni.physxpvd.bindings._physxPvd.IPhysXPvd,
) None#

Reset the list of messages parsed from the OVD stream.

get_messages(
self: omni.physxpvd.bindings._physxPvd.IPhysXPvd,
) list#

Retrieve the list of messages in the OVD stream.

Returns:

A list of messages contained in the OVD stream in a dictionary format. The following keys can be used to reference the corresponding values: “message”: The message string itself. “file”: The name of the source file the message was generated in. “line”: The line number in the source file where the messages was generated. “type”: The message category type. “typeName”: The message category type name string if an optional class handle was sent with the message. “frameId”: The frame ID for the time when the message occurred.

If an error occurs, the list will be empty.

load_ovd(
self: omni.physxpvd.bindings._physxPvd.IPhysXPvd,
arg0: str,
) bool#

Loads the input OmniPVD binary file and parses out the messages received. Does not covert to a USD stage or save a cached file.

Parameters:

omniPvdFile – the OmniPvd OVD binary full file path

Returns:

true on success, false on failure

ovd_to_usd(
self: omni.physxpvd.bindings._physxPvd.IPhysXPvd,
arg0: str,
arg1: str,
arg2: int,
arg3: int,
) bool#

Transforms an OmniPvd binary file into a USD Stage.

Parameters:
  • omniPvdFile – the OmniPvd OVD binary full file path

  • usdStageDir – the output directory of the output USD Stage

  • upAxis – up axis of the USD stage, 0 = Y-axis, anything else Z-axis

  • isUSDA – non-zero = USDA format out, 0 = USD format out

Returns:

true on success, false on failure

ovd_to_usd_over(
self: omni.physxpvd.bindings._physxPvd.IPhysXPvd,
arg0: str,
) bool#

Extracts an over layer from an OmniPvd binary file and adds it to the current active Stage.

Parameters:

omniPvdFile – the OmniPvd OVD binary full file path

Returns:

true on success, false on failure

omni.physxpvd.bindings._physxPvd.acquire_physx_pvd_interface(
plugin_name: str = None,
library_path: str = None,
) omni.physxpvd.bindings._physxPvd.IPhysXPvd#
omni.physxpvd.bindings._physxPvd.release_physx_pvd_interface(
arg0: omni.physxpvd.bindings._physxPvd.IPhysXPvd,
) None#