Development Considerations
Omniverse Cloud Development
Overview
Developing an application for Omniverse Cloud and preparing for its deployment is the same as any Kit based application. There are just a few things to keep in mind, which we’ll highlight in this document.
Topics:
Omniverse Cloud Platform Overview
Development Considerations for Omniverse Cloud
Building an Application for Omniverse Cloud
Packaging your Application for Omniverse Cloud Deployment
See also
This document focuses on Omniverse Cloud specific development steps. For general Application development, build, and packaging, refer to the Omniverse Developer Guide
Requirements for Omniverse Cloud Deployment:
An active Omniverse Cloud entitlement
Access to the NVIDIA Enterprise Support Portal
A Linux-compatible kit-based application in a fat launcher package.
1. Omniverse Cloud Platform Overview
Omniverse Cloud is a managed platform built on NVIDIA OVX infrastructure for designing, developing, deploying, and managing Universal Scene Description (OpenUSD) Applications. It offers scalable, cluster-based computing with optimized services for rendering and simulating expansive OpenUSD scenes.
Applications on Omniverse Cloud are deployed as container images on an OVX cluster, and only the application itself is then streamed to the client. The Omniverse Cloud streaming service enables the streaming extension which captures the application window.
2. Development Considerations for Omniverse Cloud
Linux Compatibility
Omniverse Cloud operates on a Linux-based computing environment. Ensure your kit-based application is Linux-compatible and avoid Windows-specific commands or Python modules.
Highly-Secure
Omniverse Cloud prioritizes security. Network traffic into and out of your Omniverse Cloud instance is restricted. Connecting to external services may require collaboration between your IT, security teams, and the Omniverse Cloud team.
Python Libraries & Binaries
For security reasons, compiled binaries are not accepted, and only standard Python modules are accessible. Any non-standard Python modules, including popular OSS ones, should be packaged along with your Application
Application Streaming
Omniverse Cloud applications are pixel-streamed to users, usually in a web browser. Input commands are relayed back to the application. Users interact only with the application window, without access to the base computing environment unless granted by your application.
Ephemeral Environment
The host environment is ephemeral. It’s created when the stream begins and deleted once the stream concludes. Do not assume persistent local storage or that an end-user will operate on a consistent system.
3. Building an Application for Omniverse Cloud
Omniverse Cloud Specific Application kit File
Along with your standard application kit file, you’ll need an Omniverse Cloud specific one to ensure proper functioning and to fine-tune settings. This file should have an .ovc suffix added to your application name. For instance, if your app is named my_app
, you’ll have my_app.kit
as your main kit file and my_app.ovc.kit
for Omniverse Cloud.
Since most kit settings are unchanged for Omniverse Cloud, we recommend importing your main .kit file into the .ovc.kit one. This lets you focus on adding only Omniverse Cloud required settings and overrides, such as disabling certain system operations.
Below is a sample from the omni.usd_explorer.ovc.kit
file from the kit-app-template repository, annotated for clarity:
[dependencies] # Items listed in this section are dependencies that this OV application requires. # This is the main USD Explorer kit file. All of the settings and dependencies in there are also dependencies # for this cloud based version of the application. "omni.usd_explorer" = {} # This extension controls what occurs when a scene is loaded on a streaming instances of USD Explorer "omni.cloud.open_stage" = {} [settings.app] # Allows the client application to determine streaming resolution. livestream.allowResize = true livestream.webrtcEtli = true # Only log error or critical level issues. livestream.logLevel = "error"
For ease:
Download the
omni.usd_explorer.ovc.kit
file into your project.Rename it based on your application name.
Review the values and modify or delete any as needed.
Add any additional Application specific settings
Creating an .ovc.kit
build target
To go along with your .ovc.kit
file, you need to create a corresponding build target. If you are using the standard repo-tools and project structure, this involves the following steps.
Open
.\premake5.lua
Find the section
-- Apps:
Make sure there is an entry for your main app
define_app("my_app")
Add an entry for the
.ovc.kit
app:define_app("my_app.ovc")
Comment-out any other applications
You also need to add my_app.ovc.kit
to .\repo.toml
for precaching
Open
.\repo.toml
Find the section
[repo_precache_exts]
Find the
apps
listMake sure the base application
"${root}/source/apps/my_app.kit",
is included.Add an entry for the
.ovc.kit
app:"${root}/source/apps/my_app.ovc.kit",
Comment-out any other applications.
Performing the Build
In order to build a kit application to run on an Omniverse Cloud Instance, you must do so from Linux. We recommend running on Ubuntu 20 or 22.
Build your application and verify that it runs correctly.
$ /build.sh
Once you are satisfied everything is working properly, do a final clean release build of just the applications you want to publish/deploy and precache the extensions.
$ /build.sh -c
$ /build.sh -r
$ ./repo.sh precache_exts -u
4. Packaging your Application for Omniverse Cloud Deployment
Packaging for Omniverse Cloud requires only a few things.
Start from a clean release linux build of your application with pre-cached extensions (see above)
An Omniverse Cloud application icon
.\source\launcher\icon_ovc.[png|svg]
. This is used by the Omniverse Cloud Web Launcher and can be either a 128x128 PNG or an SVG file.Verify that the information in
./source/launcher/launcher.toml
is correct, with entry-points for yourmyapp.ovc
application.Confirm the information in
./source/launcher/description.toml
Create a Fat application package
For further information on how to package your application, refer to the packaging guide