ParaView

Overview

The NVIDIA Omniverse™ ParaView Connector offers a toolkit for ParaView users to send and live sync their model(s) to an NVIDIA Omniverse™ Nucleus Server, or alternatively locally output them to USD, with OpenVDB in case of volumes. As a result, a user will be able to edit and sync their ParaView data with any OMNIVERSE® Connect applications, or just import it into applications supporting USD or OpenVDB. Now, depending on the use case, ParaView users can choose the workflows and pipelines that work best for their needs while maintaining up to date revisions for all downstream consumers of their work.

See Install Instructions and the sections immediately following for a walkthrough in configuring and using the connector. A condensed list of Features is also available.

Below you will find a short description of the components which NVIDIA Omniverse™ ParaView Connector Plugin adds to ParaView. They consist of a custom Omniverse Connector render view, two filters, plus a toolbar in the View > Toolbars menu option which is enabled by default:

  • “Omniverse Connector” Render View

The Omniverse Connector render view works just like a normal render view, except that everything visible within this render view is sent over to an NVIDIA Omniverse™ Nucleus server, or a local USD file. Specifically, for all visible ParaView actors in the view’s pipeline, their render data arrays (such as point, normal, texcoord and vertexcolor) or rendered volume fields will be converted to USD, and optionally sent over to Omniverse. This render data will be collected for each timestep viewed by the user and stored in the USD, alongside the data of previously viewed timesteps - unless the actor’s data does not change over time.

The Omniverse Connector render view is required for the two filters mentioned below. This allows users to allow additional data arrays to be included within the output of the rendered models, or manually specify which arrays are time-varying for animated datasets.

  • “Omniverse Connector Pass Arrays” Filter

This filter functions exactly as the normal Pass Arrays filter found in ParaView, but instead specifies exactly which arrays of a dataset are transferred to Omniverse. By default the Connector only sends render data arrays to Omniverse as explained before. Using the Pass Arrays filter permits you to extend that with any per-point or per-cell field array residing in your dataset.

  • “Omniverse Connector Temporal Arrays” Filter

The Temporal Arrays filter defines which specific arrays are time-varying - ie. obtain a separate copy of their data in USD or Omniverse at every single time step - and which arrays are uniform and therefore only have one copy of their data, applying to all timesteps. Enabling a checkbox in front of an array makes it time-varying, otherwise it is considered uniform. This is useful in a case where for example only the texcoord array changes from one timestep to another, and all other arrays stay the same. In such a situation, the connector cannot detect that the other arrays are uniform over timesteps, and will therefore generate a duplicate copy of data for every array at every timestep to be sent to Omniverse. With the Temporal Arrays filter, the user can avoid this data duplication on a per-array basis by explicitly defining arrays as uniform over all timesteps, so that they are not updated or duplicated if the user changes the timestep of the render view.

  • “Omniverse” Toolbar

Found under ‘View->Toolbars’, the NVIDIA Omniverse™ ParaView Connector plugin can be interacted with through an interface similar to other NVIDIA Omniverse™ Connect applications:

UI Overview

There is one button each for signing into an Omniverse Nucleus server, bringing up the settings panel, opening the current scene in an Omniverse application of choice, showing the documentation or viewing information about the plugin.

Features

  • Supports client-server setups

  • Works with headless (EGL) ParaView servers

  • Works in multi-node (MPI) environments (see MPI environments)

  • Works in python environments (see Usage with Python)

  • Can output to an Omniverse Nucleus server

  • Can convert to USD for local output, ascii or binary

  • Supports multiple connections/outputs at once

  • Supports color-mapped surface meshes

  • Structured volume representations (see Volumes and OpenVDB)

  • Point datasets

  • Slice representations

  • Lines and (piecewise linear) curves

  • Animated timesteps for all supported geometry types and volumes

  • Customizable per-timestep or uniform storage for mesh arrays, material parameters and textures

  • Transfer of any point and/or cell arrays

  • Opening scenes in other Omniverse apps from within ParaView

Install Instructions

Please install the ParaView Connector plugin via the Omniverse Launcher, which will guide you through installing the connector plugin to your local ParaView install.

  • On Windows, it will ask for the location of an existing official ParaView install into which to copy the plugin

  • On Linux, make sure to call export PVOV_INSTALL_PATH=<ParaView-install-dir> before running the launcher, which will point the installer to the right location

Please see Launcher Documentation for more information on installing connectors.

Note

It’s possible to verify whether the ParaView Connector is properly installed by running ParaView by navigating to ‘Tools->Manage Plugins’, and making sure the Omniverse Connector plugin is loaded.

User Interface

Once the Plugin has been installed, you should find the Omniverse Toolbar is already in place (highlighted in red below). If not, just enable the option under ‘View->Toolbars->OmniverseConnector’.

Docked Toolbar

Before creating an Omniverse Connector render view, it is recommended to at least familiarize yourself with the Sign-In and Settings menus. The following sections briefly explain the function of each button:

Sign-In

Sign In

If output to a NVIDIA Omniverse™ Nucleus server is desired, signing in is required before opening an Omniverse Connector render view. The sign-in dialog allows users to connect to their Omniverse Nucleus server for mounts. Simply enter your Omniverse Nucleus ‘User Name’ and ‘Password’:

Sign In Dialog

Setting

Result

Server

Address of an NVIDIA Omniverse™ Nucleus server.

OK

Initiates the connection with selected user and server.

Cancel

Stops the sign-in process and closes the sign-in window.

Settings

Plugin Settings

The settings menu is the main hub for changing the Omniverse Connector plugin’s parameters, and will be applied to the next Omniverse Connector render view that is opened. Therefore, its also automatically launched right before an Omniverse Connector render view is created, to allow for last-minute adjustments to be made.

Most often, the settings menu is used to browse for an output location where the USD files have to be written to. A detailed description of each setting is provided in the Settings Menu Explained section.

Note

Although the options within the settings menu cannot be changed for an active Omniverse Connector render view, there are properties which can be changed at any time. Go to Omniverse Connector View Properties to find out which options this applies to.

Open View In Omniverse App

Open View

Once an Omniverse Connector render view has been created, this button opens the contents of the currently active view directly an Omniverse application of choice. For this to work, set up your desired Omniverse application (such as NVIDIA Omniverse™ View or NVIDIA Omniverse™ Create) in the settings menu. Afterwards, simply click the ‘Open View in Omniverse App’ button and the Omniverse application will launch with your visualization loaded and ready to go.

Help

Help

Launches your default web browser to the NVIDIA Omniverse™ ParaView Connector Documentation.

About

About

Opens a dialogue and displays version information about the installed NVIDIA Omniverse™ ParaView Connector, and provides helpful links to access release notes and to get support.

Test the connector using the ParaView ‘wavelet’ source

This section will walk through a very simple example using one of ParaView’s built-in data sources to demonstrate the connector in action. The steps outlined below assume that the connector plugin is installed, enabled, and configured to output to a desired location (on a Omniverse Nucleus server or otherwise).

  1. Create an ‘Omniverse Connector’ render view,

    Locate button to add a view

    by clicking the ‘+’ tab and choosing Omniverse Connector:

    Choose 'Omniverse Connector'

    Note

    The Omniverse Connector render view is the view which synchronizes with the Omniverse server. If you do not want your local view changes to propagate to Omniverse, simply use another view in ParaView instead. Remember that the default view when ParaView starts up is a regular render view which does not output to USD or communicate with Omniverse at all.

  2. In the settings panel that pops up, use the ‘Browse’ button to select an output destination on a Nucleus server (no local disk), and make sure that ‘Output Extension’ is set to ‘.usd’.

    Set output location and extension
  3. Add a ‘wavelet’ source and activate it with ‘Apply’.

    Locate the 'wavelet' source

    Apply the source properties
  4. Make some isosurfaces using the contour filter, and activate with ‘Apply’.

    Locate the contour filter in the toolbar

    Apply the contour filter properties

    Note

    The example shown has isovalues at 100, 150, and 200.

  5. Open NVIDIA Omniverse™ Create and disable ‘Texture Streaming’ in ‘Render Settings->Common->Materials’:

    Disable Texture Streaming setting in Create
  6. In NVIDIA Omniverse™ Create, navigate to your configured ParaView session, and open ‘FullScene.usd’.

    Note

    You can install and launch NVIDIA Omniverse™ Create from the Omniverse Launcher (see here), or alternatively with the Open View In Omniverse App button.

    See data from ParaView in |create_long|
  7. Make sure Omniverse Live Synchronization is enabled in Create, by going to the layers menu and clicking the ‘Live Sync->Always On’ button (highlighted in red):

    Note

    If working in Create 2022.2.0 or higher, skip this step

    See data from ParaView in |create_long|

    As a result, the Live Sync icon will turn green:

    See data from ParaView in |create_long|
  8. Change the color map in ParaView and see the colors update in Create:

    Note

    If working in Create 2022.2.0 or higher, reload the ‘FullScene.usd’ manually

    Find the color map presets button in the Color Map Editor

    Note

    If you cannot see the Color Map Editor, enable it in the ‘View’ menu.

    Pick a new preset color map

    The result in Create:

    See data from ParaView in |create_long|
  9. Add a Plane in Create using the Stage UI panel, by right-clicking and choosing ‘Create->Mesh->Plane’:

    Right click to add 'Create->Mesh->Plane'

    the plane can be moved up and down along the Y axis using the ‘Move’ widget in Create, by dragging that particular axis:

    View with a plane added to the scene

And that’s it! Now you can enjoy using ParaView with Omniverse to do new and interesting things with your data, and do so collaboratively in real time.

Volumes and OpenVDB

One important feature of the ParaView Connector is its ability to convert structured volume data to OpenVDB. For this to happen, one simply opens a structured volume in an Omniverse Connector render view, such as the wavelet example from the previous section. Set its representation to ‘Volume’, and the connector will automatically generate an OpenVDB file in the volumes/ subdirectory of the output location.

The OpenVDB file is referenced from within USD and therefore could be used in combination with the complete stage, or just on its own by loading it into any application supporting the file format.

The contents of the OpenVDB file depend on whether the property ‘Preclassified Volume Output’ is set in Omniverse Connector View Properties:

Omniverse Connector preclassified volume output property

If it is not set, the OpenVDB output will consist of a single grid containing the data array used as input for ParaView’s volume rendering, highlighted in red in the following image:

ParaView volume rendering input data selection

Supported types include float/double(3) or int/long types. Short and byte types will be normalized to float data.

If ‘Preclassified Volume Output’ is set to true, ParaView’s transfer function will be applied to this data before it is written out to OpenVDB. The resulting colors and opacities (of float type) will be contained in separate grids called ‘diffuse’ and ‘density’ respectively. The following image shows Houdini rendering the OpenVDB output created by the Omniverse Connector on the ‘headsq.vti’ example dataset.

OpenVDB output rendered in Houdini

Because Omniverse Create does not directly support rendering UsdVolVolume prim with OpenVDBAsset fields, the Omniverse Connector Render View Settings allows for the volume representation to be changed to a textured UsdGeomMesh with corresponding MDL material:

Omniverse Connector textured UsdGeomMesh

This can be loaded into Omniverse Create, and rendered by setting the renderer to ‘Path Tracing’ and enabling ‘Non-uniform Volumes’. This is highlighted in red by the following image:

Create settings which enable volume rendering

Usage with Python

The ParaView Connector supports python environments such as a pvpython or state loading within the ParaView GUI. Typically, the Connector is set up in the following manner:

pxm = paraview.simple.servermanager.ProxyManager()

# Register custom settings proxy for the Omniverse Connector
proxy = pxm.NewProxy('OmniConnectSettingsGroup', 'OmniConnectSettings')
pxm.RegisterProxy("OmniConnectSettingsGroup", "OmniConnectSettings", proxy)

# Change settings values
omnisettings = pxm.GetProxy('OmniConnectSettingsGroup', 'OmniConnectSettings')
omnisettings.SetPropertyWithName('OutputLocal', 1)
omnisettings.SetPropertyWithName('LocalOutputDirectory', '/home/user/output')

Then, an Omniverse Connector render view must be created, which happens as follows in pvpython:

newRV = CreateView('OmniConnectRenderView')
SetActiveView(newRV)
Render()

If you want to load the python code as a ParaView state file, replace the above section with:

layout2 = CreateLayout(name='Layout #2')
SetActiveView(None)
newRV = CreateView('OmniConnectRenderView')
AssignViewToLayout(view=newRV, layout=layout2, hint=0)

Any items attached to the view using Show(item, newRV, ...) will be sent to Omniverse once newRV.Update() is called.

For an overview of the options that can be changed, consult the following list:

'OmniverseServer'->string
'OmniverseWorkingDirectory'->string
'LocalOutputDirectory'->string
'OutputLocal'->boolean
'CreateNewOmniverseSession'->boolean
'OutputExtension'->enum
'UpAxis'->enum
'PointsRepresentation'->enum
'LinesRepresentation'->enum
'TriangleWireframeRepresentation'->enum
'VolumeRepresentation'->enum
'ShowErrorMessages'->boolean
'ShowDebugMessages'->boolean
'NucleusVerbosity'->enum

where boolean values are 0 or 1 and enum values are simple zero-based integers aligning with their respective values in the dropdown list of the UI.

Note

The parameter OutputLocal determines whether the OmniverseWorkingDirectory is chosen for output (if false), or the LocalOutputDirectory (if true)

MPI environments

The ParaView connector automatically detects when it is part of an MPI-enabled server process. In those cases, every server process will output its data to a separate subdirectory within the USD output directory. An additional multiscene USD file will be generated, combining the scene USD files from the separate process subdirectories as follows:

Output directory structure generated by MPI ParaView

Settings Menu Explained

A detailed overview of all the options in the settings menu follows here:

Omniverse Connector Render View Settings

This is where users can set a directory to save USD scene files for visualization later. The settings will be applied at creation of an Omniverse Connector render view, and cannot be changed once such a render view has already been created.

Additionally, the ‘Properties’ panel on the left-hand side of the ParaView GUI is expanded with an ‘Omniverse Connector’ section, where you can find additional settings which can be changed while an Omniverse Connector render view has been created (see Omniverse Connector View Properties).

Omniverse Connector View Settings

Element

Result

Project Directory

USD scene files output directory.

Browse

Open a dialog to change the ‘Project Directory’.

Create New Omniverse Session

Create a new Omniverse Session directory every time an Omniverse Connector render view is opened.

Output Extension

Choose whether USD output should be binary (.usd) or text-based (.usda).

Up Axis

Select which axis is chosen as the up axis in the USD output.

Points Representation

Choose the representation of points in USD: either use the UsdGeomPointInstancer or the UsdGeomPoints prim.

Lines Representation

Choose the representation of lines in USD: either use the UsdGeomBasisCurves prim (curves) or UsdGeomPointInstancer with cylinders (sticks).

Triangle Wireframe Representation

Choose the representation of wireframe triangle meshes in USD: either use the UsdGeomBasisCurves prim (curves) or UsdGeomPointInstancer with cylinders (sticks).

Volume Representation

Choose the representation of volumes in USD: either use the UsdVolVolume prim with OpenVDBAsset fields, or a textured UsdGeomMesh with corresponding MDL material. The latter is more compatible with Omniverse Create.

Show Error Messages

Show Omniverse error messages.

Show Debug Messages

Show Omniverse debug messages.

Nucleus Verbosity

Set the verbosity of messages generated by Nucleus, with ‘Debug’ as most verbose. Requires ‘Show Debug Messages’ to be enabled.

The below dialog is displayed when users click on the ‘Browse’ button.

Folder Picker Dialog

Element

Result

Refresh

Updates the window with latest data.

Left/Right

Moves through the current directory structure in a step by step fashion.

Create New Folder

Creates a new directory at current file path.

Left Pane

Lists NVIDIA Omniverse™ Nucleus directories (if logged-in) and local drives / directories.

Right Pane

Lists files in currently selected directory.

Project Folder

The location and name of the project to create.

OK

Save the selected folder as project directory.

Cancel

Closes the dialogue.

Open View in Omniverse App Settings

This part of the settings menu pertains to the application that is opened when clicking the Open View In Omniverse App button while an Omniverse Connector render view is active. It can be changed at any time, even when an Omniverse Connector render view has already been created.

  1. Select either a specific version of the Omniverse app or use the most current installed version as your default viewer.

    Open In View Settings
  2. Press ‘Save’ to save the changes.

Element

Result

Unset

Disable all ‘Open View In Omniverse App’ settings.

Open locally installed app

Omniverse app launch version, including options ‘Use Current’ and ‘Use Custom’ explained below.

Use Current/Use Custom

‘Use Current’ locates current View or Create installs automatically, ‘Use Custom’ uses the ‘Custom app location’ value.

Custom View Location

Allows selections of Omniverse app installs not found by the selection menu from ‘Open locally installed app’.

Save

Commits the changes and closes the window.

Cancel

Closes the window discarding all changes.

Omniverse Connector View Properties

The Omniverse Connector view properties are options pertaining to the currently active Omniverse Connector render view which can be changed at any time. They can apply to USD output just as well as anything else, such as disabling rendering output of an Omniverse Connector render view.

Omniverse Connector render view properties

Element

Result

Rendering Enabled

Set whether to render the output of the ParaView pipeline in the Omniverse Connector render view - improves efficiency when disabled. Has no bearing on USD output.

Force Time Varying Textures

All actors will generate one texture or colormap per timestep if this option is enabled, instead of just a single texture or colormap for all timesteps.

Force Time Varying Material Parameters

All actors will generate a separate material parameter value per timestep for each parameter that supports it if this option is enabled, instead of just a single parameter value for all timesteps.

Force Consistent Triangle Winding

When set, any mesh triangle order that is inconsistent will be corrected, and normals regenerated.

Preclassified Volume Output

For volumes, produce preclassified output where the transfer function is applied to the source data, producing a ‘density’ and ‘diffuse’ openvdb grid.

Release Notes

101.0.0

  • Revamped UI with new Omniverse toolbar, including sign-in, settings, and open-in-Omniverse-application buttons

  • Support for lines and (piecewise linear) curves

  • Choice of different representations for points, lines/curves, wireframe and volumes in settings menu

  • Support for volume output as textured mesh for compatibility with Create

  • Choice of scene up-axis, text/binary output

  • Optional output of time-varying textures and material parameters

  • Option to force winding order for triangle output

  • Any Omniverse Connector render view can now be opened into Omniverse application of choice via the click of a button

  • Log verbosity selection for Omniverse Connector and Nucleus separately

  • Support for continuation of output within an existing scene (session directory) after closing an Omniverse Connector render view and creating a new one (experimental)

  • Update of Omniverse Client Library to version 1.17.7

100.0.1

  • Updated Omniverse Client Library to version 1.17.4

100.0.0

  • Initial connector supporting ParaView 5.9

Feature Limitations

Synchronization with Omniverse

  • The ParaView Connector only exports data out of ParaView to Omniverse, but by design does not allow for data to be imported into ParaView.

  • An Omniverse Connector render view within ParaView does not offer a choice whether to synchronize with Omniverse or not, it will always do so.

    • Use a separate view in ParaView to have a view which does not propagate to Omniverse, or multiple separate views to output different parts of the scene to different locations.

  • Automatic (live) synchronization will not work for ascii (.usda) USD output.

  • Live synchronization with Omniverse Create 2022.2.0 or higher is not possible with connector versions 101.X.X or lower.

Geometry

Volumes

  • Only structured volumes make it through the connector, which are converted to VDB before transfer into Omniverse.

    • Use the ‘Resample To Image’ filter to transform volumes into structured volumes so that they can be converted.

Object appearance

  • ParaView light kit information is not transferred to Omniverse, instead a single distant light is put into the scene by default.

  • Raytracing cannot be enabled within the Omniverse Connector render view (use a separate view instead).