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).
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.
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.
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.
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:
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.
For a beginner-friendly introduction to application development using the Omniverse Kit SDK, see the NVIDIA DLI course:
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.
- Overview
- Prerequisites and Environment Setup
- Repository Structure
- Quick Start
- Templates
- Tools
- License
- Additional Resources
- Contributing
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.
-
Git: For version control and repository management
-
Git LFS: For managing large files within the repository
-
(Windows - C++ Only) Microsoft Visual Studio (2019 or 2022): You can install the latest version from Visual Studio Downloads. Ensure that the Desktop development with C++ workload is selected. Additional information on Windows development configuration
-
(Windows - C++ Only) Windows SDK: Install this alongside MSVC. You can find it as part of the Visual Studio Installer. Additional information on Windows development configuration
-
(Linux) build-essentials: A package that includes
make
and other essential tools for building applications. For Ubuntu, install withsudo apt-get install build-essential
-
(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
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 |
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.
Begin by cloning the kit-app-template
to your local workspace:
git clone https://github.com/NVIDIA-Omniverse/kit-app-template.git
cd kit-app-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
• .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.
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.
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]
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
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.
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.
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
andlink_host_toolchain
within therepo.toml
file be set totrue
. For additional C++ configuration information see here.
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:
- Omniverse Kit App Streaming : A reference implementation on GPU-enabled Kubernetes clusters for complete control over infrastructure and scalability.
-
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
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 launch
or.\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.
The software and materials are governed by the NVIDIA Software License Agreement and the Product-Specific Terms for NVIDIA Omniverse.
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.
We provide this source code as-is and are currently not accepting outside contributions.