NVIDIA-Omniverse / kit-app-template

Omniverse Kit App Template

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Omniverse Kit App Template

⚠️ BETA Release Information

This branch is for the Omniverse Kit 106 BETA. It includes BETA versions of the Kit SDK, associated development tools, and templates. For the latest stable release, see the 105.1 branch.

Overview

Welcome to kit-app-template, an essential toolkit for developers diving into GPU-accelerated application development within the NVIDIA Omniverse ecosystem. This repository provides streamlined templates and tools designed to simplify the creation of high-performance OpenUSD-based applications powered by the Omniverse Kit SDK.

About Omniverse Kit SDK

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

  • Language Support: Develop in Python or C++, offering flexibility and power to a wide range of developers.
  • OpenUSD Foundation: Utilize 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: Easily build specialized Extensions that provide dynamic user interfaces, integration with various systems, and provide direct control over OpenUSD data, making it versatile for numerous applications.

Applications and Use Cases

The kit-app-template enables developers to create cross-platform (Windows and Linux) accelerated applications, equipped with tooling to streamline packaging for easier deployment. This covers a broad range of use cases, from simulating real-world systems to generating photorealistic synthetic data for AI training. Whether your focus is on creating engaging virtual worlds, developing tools for data analysis, or crafting simulations, the combination of this repository and the Kit SDK provides the foundation you need.

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've provided a companion tutorial. Explore the tutorial here—it offers detailed insights into the underlying structure and mechanisms, enabling a thorough grasp of both Kit and the development process.

New Developers

For a beginner-friendly introduction to application development using the Omniverse Kit SDK, see the NVIDIA DLI course Developing an Omniverse Kit-Based Application (account and login required)

Table of Contents

Prerequisites and Environment Setup

To kickstart your development journey with Omniverse Applications and Extensions, your system should adhere to the following specifications:

  • Operating System: Windows 10/11 or Linux (Ubuntu 20.04/22.04 recommended)
  • GPU: NVIDIA RTX capable GPU (Turing or newer recommended)
  • Driver: Latest NVIDIA driver compatible with your GPU
  • Internet Access: Required for downloading the Omniverse Kit SDK, extensions, and tools.
  • Software Dependencies:
    • Required : Git
    • Recommended : Docker
    • Recommended : VSCode (or your preferred IDE)

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

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]

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 Service Application. This template is useful for creating headless services leveraging Omniverse Kit functionality.

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

  • USD Explorer: A full featured application for managing, collaborating on, and exploring large Open USD scenes.

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.

  • 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. 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.

For a more detailed overview of available tooling see the Kit App Template Tooling Guide or execute the help command specific to the tool your are interested in (e.g. ./repo.sh template -h or .\repo.bat template -h).

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.

About

Omniverse Kit App Template

License:Other


Languages

Language:Python 65.0%Language:Kit 17.3%Language:PowerShell 7.5%Language:Batchfile 4.2%Language:Shell 3.0%Language:Lua 1.5%Language:C++ 0.9%Language:Jinja 0.6%