Grasshopper#

Grasshopper is an extension that began shipping with Rhino in version 6 and is supported in NVIDIA Omniverse through the NVIDIA Omniverse™ Rhino Connector Plugin. Because of this, Grasshopper makes possible node-based procedural building on the Omniverse.

Grasshopper Components#

Grasshopper users will be happy to know that Omniverse requires very little to change in their current workflow as all interactions are handled through 4 main and 5 lights Omniverse components.

OmniRibbon

Main Components#

There are 4 main components in the Components tab of the Omniverse plugin. These components are listed below:

OmniComponentTab

Note

These are the components you need for a minimum setup to publish files to OMNIVERSE®.

OmniGrasshopper Component#

This is the main module for the Omniverse. Any OmniLayer Group or OmniLight wired to this node is published. This is the final node of the graph and only one component of this type is per canvas is allowed.

OmniGrasshopper
OmniGrasshopper Component Properties#

Toggle

Live Sync

When ON enables “Live Sync”. When OFF (default) Live Sync is disabled

Input

OmniInput

OI

OmniLayer or OmniLight objects to be published

Input

Project Folder PATH

P

Parent project file path

Input

File Name

FN

File Name override used for publish and STV

Button

Send to View

Click to start Send to View process

Button

Publish

Click to start the publish process

Toggle

Publish mode

Options “as project” or “as prop” for Send to View

This component also has custom menu items: Settings, Help and About. These are visible when right-clicking on the component symbol.

OmniGrasshopperMenu

Settings is described in the section for Send to a Kit application.

Help connects to this web page

About shows this dialog, which contains current version information, and provides helpful links to access Release Notes and to Get Support

OmniGrasshopperAbout

OmniGroup Component#

This node is used to create OmniLayer groups from geometry, layer name and material inputs. Multiple OmniLayer groups can be created and wired into a OmniGrasshopper Component to be published.

OmniGroup
OmniGroup Component Properties#

Input

Geometry

G

Geometry to be converted to OmniLayer for publish (live sync / send to view)

Input

Layer Name

LN

Name of the OmniLayer group

Input

Material

M

Material/Color input to be assigned to the OmniLayer group

Output

OmniLayer

OL

Object group with layer name and material

Important

Geometry input always needs to be flattened. If OmniGrasshopper turns red and states “item with the same key has already been added”, try flattening the geometry input to OmniLayer.

Note

Material can be set with OmniMaterial, Color Swatch or a named color/valid material name using the Panel input. The list of color names accepted mimics the HTML5 named color list found here HTML5 Color List

OmniBrowser Component#

The OmniBrowser allows additional workflow possibilities by giving access the Omniverse Server browser. Only one browser node per canvas is allowed.

OmniBrowser
Typical Workflow Capabilities added by this node
  • Sign in to a server

  • Link to previously saved child USD file for Live Sync

  • Manually override server (Server override will take priority over the Server Sign In button)

OmniBrowser Component Properties#

Input

Server Override

SO

Selects the active server (Overrides Sign-In if Used)

Button

Server Sign In

When clicked triggers a server sign-in dialog

Button

Browse Child USD

When clicked triggers a dialog to link a saved USD Path

Output

Active Server

AS

Outputs active server

Output

Project Folder PATH

P

Outputs the project folder for the actively linked USD

Output

File Name

FN

Outputs the active child USD name

Clicking Server Sign in displays a dialog

OmniSelectServer

OmniMaterial Component#

This node is used to select materials with a dropdown list. The dropdown list is looking into the CSV Mapping File for Grasshopper which can be located in the following directory <Documents>/Omniverse/Grasshopper/omniverseMDLtable.csv

The component appearance, with the Select Material button, and an output of the material name selected.

OmniMaterial

Clicking the Select Material button displays this dialog

OmniMaterialDialog

Clicking the down arrow in the entry field on the dialog will display the materials available.

OmniMaterialList

An example of the component, after a material has been selected from the list.

OmniMaterialSelected

Note

One OmniMaterial per OmniLayer group can be assigned.

Light Components#

There are 5 components in the Lights tab of the Omniverse plugin. These components are listed below:

Adding Lights (Video)#

OmniLightsTab

Note

Multiple OmniLights groups can be created and wired into a OmniGrasshopper Component to be published.

OmniSphereLight Component#

This node is used to create sphere lights in the form of OmniLight objects.

OmniSphereLight
OmniSphereLight Component Properties#

Input

Frame

F

Location parameter

Input

IES Profile

PATH

Optional file path to an IES lighting profile

Input

Color

C

Light Hue

Input

Intensity

I

Intensity measured in NITS(cd/m2)

Input

Radius

R

Radius of Sphere Light

Input

Layer

L

Layer Name

Output

OmniLight - Sphere

L

Omniverse Sphere Light Object

Output

Transform

X

A transform relative to world XY can be used to orient light fixtures

OmniCylinderLight Component#

This node is used to create cylinder lights in the form of OmniLight objects.

OmniCylinderLight
OmniCylinderLight Component Properties#

Input

Axis

A

Cylinder Axis (Line)

Input

Radius

R

Cylinder Radius

Input

Direction

D

Vector to align lighting direction to

Input

Color

C

Light Tint RGB

Input

Intensity

I

Intensity measured in NITS(cd/m2)

Input

Layer

L

Layer Name

Output

OmniLight - Cylinder

L

Omniverse Cylinder Light Object

Output

Plane

P

Plane aligned to Direction

Output

Transform

X

A transform relative to world XY can be used to orient light fixtures

Note

Direction vector only effects lights with radially asymmetric profiles.

OmniDiskLight Component#

This node is used to create disk lights in the form of OmniLight objects.

OmniDiskLight
OmniDiskLight Component Properties#

Input

Circle

C

Circle to become a light

Input

Color

C

Light Tint RGB

Input

Intensity

I

Intensity measured in NITS(cd/m2)

Input

Layer

L

Layer Name

Output

OmniLight - Disk

L

Omniverse Disk Light Object

Output

Plane

P

Plane aligned to Direction

Output

Transform

X

A transform relative to world XY can be used to orient light fixtures

Note

Light direction will be -Z for plane of circle.

OmniRectangleLight Component#

This node is used to create rectangle lights in the form of OmniLight objects.

OmniRectangleLight
OmniRectangleLight Component Properties#

Input

Rectangle

R

Rectangle to become a light

Input

Color

C

Light Tint RGB

Input

Intensity

I

Intensity measured in NITS(cd/m2)

Input

Layer

L

Layer Name

Output

OmniLight - Rectangle

L

Omniverse Rectangle Light Object

Output

Plane

P

Plane aligned to Direction

Output

Transform

X

A transform relative to world XY can be used to orient light fixtures

Note

Light direction will be -Z for plane of circle.

MeshBulb_Primitive Component#

This node is used to create bulb shape mesh to be used with the OmniSphereLight Component.

MeshBulb_Primitive

Note

When used as a base geometry this component will be faster then re-creating a mesh for each light instance.

Connecting Models for Output#

Using the OmniLayer Component (node) in Grasshopper allows you to convert geometry to OmniLayer group through the geometry input on the OmniLayer Component.

../../_images/connect_rhino_grasshopper_connect-models.png

In the above example, notice how geometries need to be wired through OmniLayer, OmniGrasshopper does not directly accept a geometry input.

Connecting Simulation Results as Output#

../../_images/connect_rhino_grasshopper_node_connect-simulation.png

The setup for publishing colored mesh (face/vertex color shading) inputs from simulation results in Grasshopper is similar to the above mentioned publish process. The user needs to input the word “Simulation” to the Material input and the colored mesh results to the Geometry input of the OmniLayer Component.

Note

If any geometry is created and NOT connected to the OmniGrasshopper Component using the OmniLayer node, it will not be output in the final result to the Omniverse.

Exporting Grasshopper Data to the OMNIVERSE®#

In order to send data to the Omniverse, you must first establish a connection to an NVIDIA Omniverse™ Nucleus server. This is done by clicking the Server Sign In button on an OmniBrowser component.

Add Simulation Data Support (Video)#

Publishing Grasshopper Data on Omniverse#

Assuming you already have OmniLayer group connected to OmniGrasshopper Component and that you are connected to either your localhost server or another OMNIVERSE® Server on your Network, the next step is to publish. To do this, we will simply click the “Publish” button on the component.

../../_images/connect_rhino_grasshopper_publish-1.png

In the below image, notice the dashed lines connecting the geometry input to OmniLayer node. This means a data tree is coming through the connection, we need this to be a flat list. To flatten this data, right-click on the input node Geometry item and select Flatten. The output should now be represented as a solid line.

../../_images/connect_rhino_grasshopper_publish-2.png

Now we are all set and ready for publishing.

To start the publishing operation, simply click the “Publish” button on the component.

Note

Project Folder PATH: (optional) accepts a panel input, used to override the project path selected at the publish dialog box. As long as an input sting is defined the dialog box is skipped during publish - format: /Users/yourUserName/yourProjectName

Publish as Prop#

Publishes the Grasshopper file using the Prop Export method (No Project Container).

../../_images/connect_rhino_grasshopper_node_publish-as-prop.png

This is how the dialog will appear if “Publish mode: as prop” is set on the OmniGrasshopper component. Browse and select where you would like your prop file to be saved, give your project a name and click Publish to complete the operation.

../../_images/connect_grasshopper_prop.png

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 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

Save format

Allows selection of file export type

Description

Text to be used as the text on the file checkpoint

Publish

Publishes the Grasshopper file using the Project Workflow

Cancel

Stops the Export process and closes Publish dialog

Publish as Project#

Warning

USD Project file functionality is deprecated and will be removed in future releases.

Publishes the Grasshopper file using the Project Workflow.

../../_images/connect_rhino_grasshopper_node_publish-as-project.png

This is how the dialog will appear if “Publish mode: as project” is set on the OmniGrasshopper component. Browse and select where you would like your project to be saved, give your project a name and click Publish to complete the operation.

../../_images/connect_grasshopper_publish.png

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 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

Save format

Allows selection of file export type

Description

Text to be used as the text on the file checkpoint

Publish

Publishes the Grasshopper file using the Project Workflow.

Cancel

Stops the Export process and closes Publish dialog.

Using Grasshopper in Live mode#

Live mode is available whether Publish or Send To Omniverse has been used to create a file. To enable live mode, simply Export using either Publish or Send to Omniverse, then enable Live Sync on OmniGrasshopper Component. While ON, your model will update in realtime and can be viewed / managed in realtime by other OMNIVERSE® apps.

../../_images/connect_rhino_grasshopper_live-sync.png

Note

Join or Create live session dialogs for Grasshopper match the dialogs for Rhinoceros. The PS output of the OmniGrasshopper node will list live session participants.

Sending Grasshopper Models to Omniverse#

Sending to USD Presenter or USD Composer is virtually the same process as Publishing. Once again it is assumed that geometry is connected to the OmniGrasshopper Module and that you are already connected to a localhost Server or Network Server. Simply click Send to Omniverse and USD Presenter or USD Composer will launch with your model loaded and ready to go.

To adjust Send to Omniverse options, right click on the icon of the OmniGrasshopper, and select Settings from the menu. This dialog will be displayed:

../../_images/connect_grasshopper_settings.png

Send to USD Presenter Settings

Result

Unset

No USD Presenter Settings. This setting disables Send to USD Presenter

Send to Local

USD Presenter Launch Path

Use Current/Use Custom

“Use Current” locates current USD Presenter Installs Automatically, “Use Custom” uses the Custom USD Presenter Location value

Custom USD Presenter Location

Allows Selections of USD Presenter Installs not Found by Automatic

Do Not Use Nucleus

Send to Omniverse will bypass Nucleus and save to the specified folder, OFF by default, must be OFF to use Live Workflow

Local Folder Path

Path to save files to when Do Not Use Nucleus is enabled

Save

Commits the changes and closes the window

Cancel

Closes the Window and discards the changes