NVIDIA Omniverse Kit App Template
repository·main·Indexed 22 days ago
https://github.com/nvidia-omniverse/kit-app-templateA toolkit for developing high-performance, OpenUSD-based desktop or cloud streaming applications using the NVIDIA Omniverse Kit SDK. It provides pre-configured templates for applications (Kit Service, Kit Base Editor, USD Composer, USD Explorer, and USD Viewer) and extensions (Python, C++, and C++ with Python bindings), along with CLI tools for scaffolding, building, launching, testing, and packaging.
What's inside kit-app-template
- The C++ with Python Bindings Extension Template is a scaffold for building high-performance extensions for the NVIDIA Omniverse ecosystem. It uses Pybind11 to bridge C++ logic with a Python-friendly interface, allowing developers to leverage C++ performance while maintaining the ease of Python scripting. This template is designed to integrate seamlessly with the Omniverse Kit SDK and follows best practices for build, test, and packaging within the repository's tooling.
Overview of Kit SDK Tools
mainThe
kit-app-templaterepository provides a suite of command-line tools to manage the lifecycle of Omniverse Kit applications and extensions. These tools are accessed via./repo.sh(Linux) or. epo.bat(Windows).Available Tools:
template: Scaffolds new projects or modifies existing ones using predefined templates.build: Compiles project files and resources from thesource/directory.launch: Starts a built application for live testing.test: Executes automated tests for applications and extensions.package: Prepares the application for distribution or deployment.
Overview of the Python UI Extension Template
mainThe Python UI Extension Template provides a foundation for building Python-based extensions with performant User Interfaces using the Omni UI framework. It is designed to integrate seamlessly with the Omniverse Kit SDK and follows the build, test, and packaging patterns established in this repository.Overview of the Basic C++ Extension Template
mainThis template provides a simple example of an Omniverse extension designed to load a C++ plugin. It serves as a foundational structure for developers who need to integrate high-performance C++ logic into an Omniverse Kit-based application via the extension system.Overview of Developer Bundle Extensions
mainThe
omni.kit.developer.bundlecontains several specialized extensions to assist with application and extension development:- Extension Management:
omni.kit.window.extensionsprovides access to the extension registry and local extensions to manage dependencies. - Command History:
omni.kit.window.commandscaptures commands executed within the running application, useful for auditing UI interactions. - Scripting:
omni.kit.window.script_editorallows for running short Python code snippets and sample scripts live within the application. - VS Code Debugging:
omni.kit.debug.vscodeprovides a window for VS Code Python debugger support, enabling stepping through code in VS Code while the application is running. - Configuration:
omni.kit.debug.settingsprovides a detailed view of configurable settings for all extensions currently in the application.
- Extension Management:
Overview of the USD Explorer App Template
mainThe USD Explorer App Template is a specialized starting point for developing applications that visualize and interact with large-scale OpenUSD (Universal Scene Description) environments, such as factories or warehouses. It is optimized for high-performance rendering and scene management of complex 3D scenes.
Core Capabilities:
- Scene Management: Aggregates multiple USD files into a single unified scene.
- Dual-Mode UI: Provides a simplified interface for novices and an advanced interface for power users requiring detailed manipulation.
- Collaboration: Supports real-time live collaboration and integrated annotation/commenting tools for scene review.
- Asset Integration: Includes a CAD converter for importing CAD files to OpenUSD and a content library for materials and assets.
Overview of the USD Composer App Template
mainThe USD Composer App Template is a specialized starting point for developing complex OpenUSD scenes, specifically optimized for configurator applications. It provides a refined set of extensions focused on essential scene editing components.
Key technical optimizations include:
- Fabric Scene Delegate: Enhanced performance for scene management.
- AXF sourced MDL support: Improved handling of materials.
- Variant Tools: Robust support for interacting with USD Variants.
This template is designed to help developers author high-quality assets that can later be packaged and deployed to end-users via the USD Viewer kit-app-template.
Use the Service Setup Extension Template for headless services
mainThe Service Setup Extension Template is a specialized component designed to configure and set up headless services that leverage the Omniverse Kit SDK.
Note: This extension is not intended to be used as a generic, standalone extension. Instead, it is designed to function as a specific component within a larger application architecture.
Use Cases
- Building headless services that require Kit SDK functionalities.
Key Features
- Includes a sample
ServiceAPIRoutersetup. - Provides a sample endpoint to demonstrate interaction patterns between the service Kit SDK and OpenUSD.
Available Extension Templates
mainUse these templates to extend Omniverse capabilities:
- Basic Python: Minimal Omniverse Python Extension.
- Python UI: An extension providing an extendable Python-based user interface.
- Basic C++: Minimal Omniverse C++ Extension.
- Basic C++ w/ Python Bindings: A C++ Extension that exposes a Python interface via Pybind11.
Windows C++ Requirement: For the C++ templates on Windows, you must set
"platform:windows-x86_64".enabledandlink_host_toolchaintotruewithin yourrepo.tomlfile.Understand the kit-app-template Repository Structure
mainThe repository is organized as follows:
Directory Item Purpose .vscodeVS Code configuration details and helper tasks templates/Template Applications and Extensions. tools/Tooling settings and repository specific (local) tools premake5.luaBuild configuration (e.g., what apps to build) repo.batWindows repository tool entry point. repo.shLinux repository tool entry point. repo.tomlTop-level configuration of repository tools. repo_tools.tomlSetup of local, repository-specific tools Understand the USD Explorer Setup Extension Template
mainThe
usd_explorer.setupextension is a specialized configuration layer designed specifically for the USD Explorer Template application. Its primary purpose is to ensure that all necessary components, extensions, and custom configurations required for the USD Explorer application are properly integrated and initialized.Developers can use this extension as a reference to learn how to perform advanced application customization and configuration using the Kit SDK and Omniverse Extensions.
Available Application Templates
mainThe
kit-app-templateprovides several pre-configured templates for building Omniverse Applications depending on your use case:- Kit Service: A minimal headless service based on the Omniverse Kit SDK.
- Kit Base Editor: A minimal graphical interface for loading, manipulating, and rendering OpenUSD content.
- USD Composer: A template for authoring complex OpenUSD scenes (e.g., configurators).
- USD Explorer: A template for exploring and collaborating on large Open USD scenes.
- USD Viewer: A viewport-only application optimized for remote streaming to web pages.