Create a Project

../../_images/dev_guide_create_banner.png

Before development can begin, you must first create a new Project. There are many ways to create an Omniverse Project, and the method you choose depends on what you intend to build and how you prefer to work. Projects tend to align within distinct categories, yet there remains remarkable flexibility within each category to help you address the needs of the user.

Here we will give instructions on how to begin the most common types of Projects using the Omniverse platform.

Extensions

../../_images/extend-ov-banner.png

Extensions are a common development path within Omniverse and they serve as the fundamental building blocks of Applications and Services. In effect, all user-facing elements in an Omniverse Application are created using Extensions. Extensions such as the Content Browser, Viewport and Stage elements are used by the Omniverse USD Composer and Omniverse USD Presenter Applications among many others. Extensions are persistent within Applications so long as they are configured as an application dependency or they are set to load in the Extension Manager.

In creating Omniverse Extensions, multiple options are available:

  • One powerful and flexible technique involves cloning our template from Github, which can be discovered under the Automated (Repo Tool) tab above.

  • For a simpler route, we offer a method via the UI (Extension Manager) tab. This provides a straightforward UI workflow to create your extension in another application, such as Omniverse Code.

Requirements: Git, Command-Line

Optional: VS Code

A template for Omniverse Project development can be accessed via the following GitHub repository:

Below we describe the procedure to create an Extension development Project using this template.

  1. Fork and/or Clone the Kit App Template repository link into a local directory using Git. The Windows/Linux command-line might resemble:

From the chosen local directory:

git clone https://github.com/NVIDIA-Omniverse/kit-app-template

This command will generate a subfolder named kit-app-template with multiple files and folders designed to help you customize your Omniverse Project including sample Extension and Application files.

  1. Navigate to the newly created ‘kit-app-template’:

cd kit-app-template

optional If you have VS Code installed, you can now open the Project template in VSCode:

code .

Once completed, you should have a folder structure which looks like this.

../../_images/dev_guide_create_advanced_template_folders.png
  1. From either the integrated terminal in VSCode or from the command line, create a new Extension:

repo template new

This action will trigger a sequence of options. Make the following selections:

  • What do you want to add : extension

  • Choose a template : python-extension-window

  • Enter a name: my_company.my_app.extension_name

  • Select a version, for instance: 0.1.0

The newly created Extension is located at:

kit-app-template/source/extensions/my_company.my_app.extension_name

You have now created an Extension template and are ready to begin development.

Additional information

  • The ‘repo’ command is a useful tool within an Omniverse Project. This command is both configurable and customizable to suit your requirements. To review the tools accessible within any Project, enter the following command:

    repo -h
    

    More details on this tool can be found in the Repo Tools Documentation.

  • If you prefer a comprehensive tutorial that guides you through Application and Extension development see the Kit App Template Tutorial.

With the Extension Manager UI, you have the ability to quickly create an extension directly within an existing application. Step-by-step instructions on creating an extension this way are available under Getting Started with Extensions in the Kit Manual .

You have now created an Extension template and are ready to begin development.

Apps

../../_images/build-apps-banner.png

Omniverse Applications are simply a collection of Extensions. By configuring these collections, you can create high-performance, custom solutions suited to your organization’s needs without necessarily writing any code. NVIDIA develops and maintains a suite of Omniverse Applications to demonstrate what possible solutions you can create from these collections.

An Omniverse Application is a .kit configuration file that instructs the Kit executable to load a predetermined set of Extensions. Either a .bat file (for Windows) or a .sh file (for Linux) is employed to launch your Application, by passing your Application .kit file to the Kit executable.

Applications serve as an ideal option when you need tailor-made software with a unique layout and features. Omniverse Applications offer the flexibility to select from existing Extensions or create novel ones to add desired functionality.

For inspiration, you can reference additional applications on the Omniverse Launcher. Download those which appeal to you and explore their installation folders and related .kit files.

Requirements: Git, Command-Line

Optional: VS Code

A template for Omniverse Project development can be accessed via the following GitHub repository:

Below we describe the procedure to create an Extension development Project using this template.

  1. Fork and/or Clone the Kit App Template repository link into a local directory using Git. The Windows/Linux command-line might resemble:

From the chosen local directory:

git clone https://github.com/NVIDIA-Omniverse/kit-app-template

This command will generate a subfolder named kit-app-template with multiple files and folders designed to help you customize your Omniverse Project including sample Extension and Application files.

  1. Navigate to the newly created ‘kit-app-template’:

cd kit-app-template

optional If you have VS Code installed, you can now open the Project template in VSCode:

code .

Once completed, you should have a folder structure which looks like this.

../../_images/dev_guide_create_advanced_template_folders.png
  1. Navigate to /source/apps folder and examine the sample .kit files found there.

You have now created an Application template and are ready to begin development and learn to manipulate your .kit files.

Additional information

  • If you prefer a comprehensive tutorial that guides you through Application and Extension development see the Kit App Template Tutorial.

Connectors

../../_images/connectors-banner.png

Omniverse Connectors serve as middleware, enabling communication between Omniverse and various software applications. They allow for the import and export of 3D assets, data, and models between different workflows and tools through the use of Universal Scene Description (OpenUSD) as the interchange format.

Creating a Connector can be beneficial when connecting a third-party application to Omniverse, providing the ability to import, export, and synchronize 3D data via the USD format. A practical use case of this could involve generating a 3D model in Maya, then exporting it to an Omniverse Application like Omniverse USD Composer for rendering with our photo-realistic RTX or Path Tracing renderers.

To equip you with an understanding of creating Omniverse Connectors, we’ve compiled some beneficial resources below:

Video Overview

Gain insight into Omniverse Connectors with this concise overview. This video helps you understand the basics of Connectors and the unique value they bring.

Documentation

Learn about what you can create with Connectors following our samples using OpenUSD and Omniverse Client Library APIs

Video Tutorial

Learn how to connect with the Omniverse platform by syncing data to it via OpenUSD. Establish a live sync session and get an OpenUSD 101 overview to get you started.

Services

../../_images/services-banner.png

Omniverse offers a Services framework based on its foundational Kit SDK. This framework is designed to simplify the construction of Services that can leverage the capabilities of custom Extensions.

Developers can choose to run their Services in various settings, such as local machines, virtual machines, or in the cloud. The framework is flexible, allowing Services to be migrated to different infrastructures easily without changing the Service’s code.

The framework promotes loose coupling, with its components serving as building blocks that foster scalability and resilience. These reusable components help accelerate the development of your tools and features for databases, logging, metrics collection, and progress monitoring.

Creating a Service project employs the same tools used for Extensions, with a similar development process. However, certain aspects, such as configuration and dependencies, are unique to Services. More information is available here

Requirements: Git, Command-Line

Optional: VS Code

A template for Omniverse Project development can be accessed via the following GitHub repository:

Below we describe the procedure to create an Extension development Project using this template.

  1. Fork and/or Clone the Kit App Template repository link into a local directory using Git. The Windows/Linux command-line might resemble:

From the chosen local directory:

git clone https://github.com/NVIDIA-Omniverse/kit-app-template

This command will generate a subfolder named kit-app-template with multiple files and folders designed to help you customize your Omniverse Project including sample Extension and Application files.

  1. Navigate to the newly created ‘kit-app-template’:

cd kit-app-template

optional If you have VS Code installed, you can now open the Project template in VSCode:

code .

Once completed, you should have a folder structure which looks like this.

../../_images/dev_guide_create_advanced_template_folders.png
  1. From either integrated terminal in VSCode or from the command line, create a new Extension:

repo template new

This action will trigger a sequence of options. Make the following selections:

  • What do you want to add : extension

  • Choose a template : python-extension-main

  • Enter a name: my_company.my_app.extension_name

  • Select a version, for instance: 0.1.0

The newly created Extension is located at:

kit-app-template/source/extensions/my_company.my_app.extension_name

You have now created an Extension template and are ready to begin development of your Service.

Additional information

  • The ‘repo’ command is a useful tool within an Omniverse Project. This command is both configurable and customizable to suit your requirements. To review the tools accessible within any Project, enter the following command:

    repo -h
    

    More details on this tool can be found in the Repo Tools Documentation.

  • If you prefer a comprehensive tutorial that guides you through Application and Extension development see the Kit App Template Tutorial.

With the Extension Manager UI, you have the ability to quickly create an extension directly within an existing application. Step-by-step instructions on creating an extension this way are available under Getting Started with Extensions in the Kit Manual .

You have now created an Extension template and are ready to begin development of your Service.