Skip to content

NVIDIA-Omniverse/kit-app-template

Repository files navigation

Omniverse Kit App Template

📝 Feature Branch Information

This repository is based on a Feature Branch of the Omniverse Kit SDK. Feature Branches are regularly updated and best suited for testing and prototyping. For stable, production-oriented development, please use the Production Branch of the Kit SDK on NVIDIA GPU Cloud (NGC).

Omniverse Release Information

Overview

Welcome to kit-app-template, a toolkit designed for developers interested in GPU-accelerated application development within the NVIDIA Omniverse ecosystem. This repository offers streamlined tools and templates to simplify creating high-performance, OpenUSD-based desktop or cloud streaming applications using the Omniverse Kit SDK.

About Omniverse Kit SDK

The Omniverse Kit SDK enables developers to build immersive 3D applications. Key features include:

  • Language Support: Develop with either Python or C++, offering flexibility for various developer preferences.
  • OpenUSD Foundation: Utilize the robust Open Universal Scene Description (OpenUSD) for creating, manipulating, and rendering rich 3D content.
  • GPU Acceleration: Leverage GPU-accelerated capabilities for high-fidelity visualization and simulation.
  • Extensibility: Create specialized extensions that provide dynamic user interfaces, integrate with various systems, and offer direct control over OpenUSD data, making the Omniverse Kit SDK versatile for numerous applications.

Applications and Use Cases

The kit-app-template repository enables developers to create cross-platform applications (Windows and Linux) optimized for desktop use and cloud streaming. Potential use cases include designing and simulating expansive virtual environments, producing high-quality synthetic data for AI training, and building advanced tools for technical analysis and insights. Whether you're crafting engaging virtual worlds, developing comprehensive analysis tools, or creating simulations, this repository, along with the Kit SDK, provides the foundational components required to begin development.

A Deeper Understanding

The kit-app-template repository is designed to abstract complexity, jumpstarting your development with pre-configured templates, tools, and essential boilerplate. For those seeking a deeper understanding of the application and extension creation process, we have provided the following resources:

Companion Tutorial

Explore the Kit SDK Companion Tutorial: This tutorial offers detailed insights into the underlying structure and mechanisms, providing a thorough grasp of both the Kit SDK and the development process.

New Developers

For a beginner-friendly introduction to application development using the Omniverse Kit SDK, see the NVIDIA DLI course:

Beginner Tutorial

Developing an Omniverse Kit-Based Application: This course offers an accessible introduction to application development (account and login required).

These resources empower developers at all experience levels to fully utilize the kit-app-template repository and the Omniverse Kit SDK.

Table of Contents

Prerequisites and Environment Setup

Ensure your system is set up with the following to work with Omniverse Applications and Extensions:

  • Operating System: Windows 10/11 or Linux (Ubuntu 22.04 or newer)

  • GPU: NVIDIA RTX capable GPU (RTX 3070 or Better recommended)

  • Driver: Minimum and recommended - 537.58. Newer versions may work but are not equally validated.

  • Internet Access: Required for downloading the Omniverse Kit SDK, extensions, and tools.

Required Software Dependencies

Recommended Software

  • (Linux) Docker: For containerized development and deployment. Ensure non-root users have Docker permissions.

  • (Linux) NVIDIA Container Toolkit: For GPU-accelerated containerized development and deployment. Installation and Configuring Docker steps are required.

  • VSCode (or your preferred IDE): For code editing and development

Repository Structure

Directory Item Purpose
.vscode VS Code configuration details and helper tasks
readme-assets/ Images and additional repository documentation
templates/ Template Applications and Extensions.
tools/ Tooling settings and repository specific (local) tools
.editorconfig EditorConfig file.
.gitattributes Git configuration.
.gitignore Git configuration.
LICENSE License for the repo.
README.md Project information.
premake5.lua Build configuration - such as what apps to build.
repo.bat Windows repo tool entry point.
repo.sh Linux repo tool entry point.
repo.toml Top level configuration of repo tools.
repo_tools.toml Setup of local, repository specific tools

Quick Start

This section guides you through creating your first Kit SDK-based Application using the kit-app-template repository. For a more comprehensive explanation of functionality previewed here, reference the following Tutorial for an in-depth exploration.

1. Clone the Repository

Begin by cloning the kit-app-template to your local workspace:

1a. Clone

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

1b. Navigate to Cloned Directory

cd kit-app-template

2. Create and Configure New Application From Template

Run the following command to initiate the configuration wizard:

Linux:

./repo.sh template new

Windows:

.\repo.bat template new

NOTE: If this is your first time running the template new tool, you'll be prompted to accept the Omniverse Licensing Terms.

Follow the prompt instructions:

  • ? Select what you want to create with arrow keys ↑↓: Application

  • ? Select desired template with arrow keys ↑↓: Kit Base Editor

  • ? Enter name of application .kit file [name-spaced, lowercase, alphanumeric]: [set application name]

  • ? Enter application_display_name: [set application display name]

  • ? Enter version: [set application version]

    Application [application name] created successfully in [path to project]/source/apps/[application name]

  • ? Do you want to add application layers? No

Explanation of Example Selections

.kit file name: This file defines the application according to Kit SDK guidelines. The file name should be lowercase and alphanumeric to remain compatible with Kit’s conventions.

display name: This is the application name users will see. It can be any descriptive text.

version: The version number of the application. While you can use any format, semantic versioning (e.g., 0.1.0) is recommended for clarity and consistency.

application layers: These optional layers add functionality for features such as streaming to web browsers. For this quick-start, we skip adding layers, but choosing “yes” would let you enable and configure streaming capabilities.

3. Build

Build your new application with the following command:

Linux:

./repo.sh build

Windows:

.\repo.bat build

A successful build will result in the following message:

BUILD (RELEASE) SUCCEEDED (Took XX.XX seconds)

If you experience issues related to build, please see the Usage and Troubleshooting section for additional information.

4. Launch

Initiate your newly created application using:

Linux:

./repo.sh launch

Windows:

.\repo.bat launch

? Select with arrow keys which App would you like to launch: [Select the created editor application]

Kit Base Editor Image

NOTE: The initial startup may take 5 to 8 minutes as shaders compile for the first time. After initial shader compilation, startup time will reduce dramatically

Templates

kit-app-template features an array of configurable templates for Extensions and Applications, catering to a range of desired development starting points from minimal to feature rich.

Applications

Begin constructing Omniverse Applications using these templates

  • Kit Service: The minimal definition of an Omniverse Kit SDK based service. This template is useful for creating headless services leveraging Omniverse Kit functionality.

  • Kit Base Editor: A minimal template application for loading, manipulating and rendering OpenUSD content from a graphical interface.

  • USD Composer: A template application for authoring complex OpenUSD scenes, such as configurators.

  • USD Explorer: A template application for exploring and collaborating on large Open USD scenes.

  • USD Viewer: A viewport-only template application that can be easily streamed and interacted with remotely, well-suited for streaming content to web pages.

Extensions

Enhance Omniverse capabilities with extension templates:

  • Basic Python: The minimal definition of an Omniverse Python Extension.

  • Python UI: An extension that provides an easily extendable Python-based user interface.

  • Basic C++: The minimal definition of an Omniverse C++ Extension.

  • Basic C++ w/ Python Bindings: The minimal definition of an Omniverse C++ Extension that also exposes a Python interface via Pybind11.

    Note for Windows C++ Developers : This template requires "platform:windows-x86_64".enabled and link_host_toolchain within the repo.toml file be set to true. For additional C++ configuration information see here.

Application Streaming

The Omniverse Platform supports streaming Kit-based applications directly to a web browser. You can either manage your own deployment or use an NVIDIA-managed service:

Self-Managed

  • Omniverse Kit App Streaming : A reference implementation on GPU-enabled Kubernetes clusters for complete control over infrastructure and scalability.

NVIDIA-Managed

  • Omniverse Cloud (OVC): Offloads hardware, streaming, and network complexities for secure, large scale deployments.

  • Graphics Delivery Network (GDN): Streams high-fidelity 3D content worldwide with just a shared URL.

Configuring and packaging streaming-ready Kit applications

Tools

The Kit SDK includes a suite of tools to aid in the development, testing, and deployment of your projects. For a more detailed overview of available tooling, see the Kit SDK Tooling Guide.

Here's a brief overview of some key tools:

  • Help (./repo.sh -h or .\repo.bat -h): Provides a list of available tools and their descriptions.

  • Template Creation (./repo.sh template or .\repo.bat template): Assists in starting a new project by generating a scaffold from a template application or extension.

  • Build (./repo.sh build or .\repo.bat build): Compiles your applications and extensions, preparing them for launch.

  • Launch (./repo.sh launchor.\repo.bat launch): Starts your compiled application or extension.

  • Testing (./repo.sh test or .\repo.bat test): Facilitates the execution of test suites for your extensions, ensuring code quality and functionality.

  • Packaging (./repo.sh package or .\repo.bat package): Aids in packaging your application for distribution, making it easier to share or deploy in cloud environments.

Governing Terms

The software and materials are governed by the NVIDIA Software License Agreement and the Product-Specific Terms for NVIDIA Omniverse.

Data Collection

The Omniverse Kit SDK collects anonymous usage data to help improve software performance and aid in diagnostic purposes. Rest assured, no personal information such as user email, name or any other field is collected.

To learn more about what data is collected, how we use it and how you can change the data collection setting see details page.

Additional Resources

Contributing

We provide this source code as-is and are currently not accepting outside contributions.