This project contains everything necessary to develop extensions that contain C++ code, along with a number of examples demonstrating best practices for creating them.
While an extension can consist of a single extension.toml
file, most contain Python code, C++ code, or a mixture of both:
Kit
|
___________________________________|___________________________________
| | |
Python Only C++ Only Mixed
(eg. omni.example.python.hello_world) (eg. omni.example.cpp.hello_world) (eg. omni.example.cpp.pybind)
Extensive documentation detailing what extensions are and how they work can be found here.
build.bat
to bootstrap your dev environment and build the example extensions._build\{platform}\release\omni.app.example.extension_browser.bat
to open an example kit application.
omni.app.example.viewport.bat
instead if you want the renderer and main viewport to be enabled.omni.app.kit.dev.bat
instead if you want the full kit developer experience to be enabled.Window->Extensions
to open the extension browser window.omni.example.cpp
in the search bar at the top of the extension browser window to view the example extensions included with this repo.build.bat
(if you haven't already) to generate the solution file._compiler\vs2019\kit-extension-template-cpp.sln
using Visual Studio 2019.omni.app.example.extension_browser
as the startup project (if it isn't already).
omni.app.example.viewport
instead if you want the renderer and main viewport to be enabled.omni.app.kit.dev
instead if you want the full kit developer experience to be enabled.source/extensions
folder.
config/extension.toml
file as necessary.premake5.lua
file as necessary.plugins
folder as necessary.python
folder as necessary.bindings
folder as necessary.docs
folder as necessary.build.bat
to build your new extension.repo.bat docs
to generate the documentation for the repo, including all extensions it contains.
repo.bat docs -p {extension_name}
_build/docs/kit-extension-template-cpp/latest/index.html
to view the generated documentation.Developers can publish publicly hosted extensions to the community extension registry using the following steps:
Tag the GitHub repository with the omniverse-kit-extension tag.
Create a GitHub release.
Upload the packaged extension archives, created with ./repo.bat package
on Windows or ./repo.sh package
on Linux, to the GitHub release. You must rename the packaged extension archive to match the following convention:
{github-namespace}-{github-repository}-linux-x86_64-{github-release-tag}.zip
{github-namespace}-{github-repository}-windows-x86_64-{github-release-tag}.zip
For example, the v0.0.2 release of the extension at https://github.com/jshrake-nvidia/kit-community-release-test/releases/tag/v0.0.2 has archives named jshrake-nvidia-kit-community-release-test-linux-x86_64-v0.0.2.zip
and jshrake-nvidia-kit-community-release-test-windows-x86_64-v0.0.2.zip
for Linux and Windows, respectively.
Our publishing pipeline runs nightly and discovers any publicly hosted GitHub repository with the omniverse-kit-extension
tag. The published extensions should be visible in the community registry the day following the creation of a GitHub release.
Refer to the kit extension documentation for how to specify the Kit version compatibility for your extension. This ensures that the correct version of your extension is listed in any given Kit application.
The source code for this repository is provided as-is and we are not accepting outside contributions.