Skip to content

NVIDIA-Omniverse/kit-app-template

Repository files navigation

Omniverse Kit App Template

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 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 20.04/22.04 recommended)

  • GPU: NVIDIA RTX capable GPU (Turing or newer 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 with arrow keys what you want to create: Application
  • ? Select with arrow keys your desired template: 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]

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

Launch with Developer Bundle (Alternative): Instead of running the default launch command, developers might prefer to include the developer bundle for access to developer-specific extensions, such as the Script Editor, Extension Manager, and more.

To launch with the developer bundle, use the --dev-bundle or -d flag:

Linux:

./repo.sh launch -d

Windows:

.\repo.bat launch -d

For more information on the extensions available in the developer bundle, see the Developer Bundle Extensions document.

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.

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

    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.

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

Tools

The kit-app-template 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 App Template 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.

License

Development using the Omniverse Kit SDK is subject to the licensing terms detailed here.

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.