Getting started

Let’s get started by forking a copy of the Kit extension template repository, available on GitHub.

This repository comes already bundled with configuration samples and best practices for developing Omniverse extensions, which will additionally strengthen our confidence that the feature will behave similarly in any Omniverse application Users may be tempted to deploy the feature. By building the service using only the public Kit SDK and the open-source APIs and frameworks it comes bundled with, this means we will be able to enable the extension in USD Composer, Kit, USD Presenter, Isaac Sim or any other Omniverse application.

Notice that the repository already contains instructions about getting set up with a development environment for Omniverse. Succinctly, these include:

  1. Install the Omniverse Launcher for either Windows or Linux.

  2. Install one of the Omniverse applications available from the Launcher, which will be used to present a viewport from which we’ll capture a frame. For convenience, we recommend using Omniverse Code, as it comes with a number of developer tools and tutorials which may be useful to you during the development process of the service.

  3. From the forked GitHub repository, copy the omni.hello.world as the extension we will soon be implementing, omni.services.example.viewport_capture.core.

Before moving ahead, let’s confirm we have all elements in place and configured as expected.

Open a terminal from the location where Omniverse Code was installed from the Omniverse Launcher, and use it to map and enable the prototype of our new extension.

On Windows:

1kit.exe ^
2    ./apps/omni.code.kit ^
3    --ext-folder <path of the "/exts" folder of the forked the Kit template repository> ^
4    --enable omni.services.example.viewport_capture.core

On Linux:

1./kit \
2    ./apps/omni.code.kit \
3    --ext-folder <path of the "/exts" folder of the forked the Kit template repository> \
4    --enable omni.services.example.viewport_capture.core \
5    --allow-root

Note

Despite the few distinctions between the Windows (batch) and Linux (bash) examples shown above, both platforms differ on very few points.

For convenience, we will continue our series using bash examples, as it tends to make code more portable across platforms and simplify some workflows such as containerisation. Rest assured, however, that our implementation will otherwise remain independent from the platform on which you choose to develop your prototype.

If everything was set correctly, you should see the omni.services.example.viewport_capture.core extension being listed as enabled in the console of the Omniverse Code session that was just launched. This should take the form of a message formatted in the following manner in the terminal, indicating that our extension was successfully enabled:

# [...]
[14.197s] [ext: omni.services.example.viewport_capture.core-1.0.0] startup
# [...]
 
« Previous section: Introduction Next section: Implementing the service »