はじめに
デジタルツイン分野において、リアルタイム3Dグラフィックス共同開発プラットフォームとして知名度を上げている NVIDIA Omniverse (以降、Omniverse と記載) というものが存在します。(詳細は 弊社コラム: デジタルツインの概要と現状の課題 にて解説しています)
Omniverse は、NVIDIA RTX GPU を使用したリアルタイムレンダリングによる高品質な3D表現や、物理シミュレーション、および Nucleus という中央サーバを介した複数アプリケーションとのリアルタイムコラボレーションに強みがあります。また、拡張機能(Extension)を自由に開発・利用できることによって、活用の領域を拡大することができます。(Extensionを利用した例は、NVIDIA Omniverse(デジタルツインPF) と Cesium(3D地図PF) を連携させて出来ること (基本編) で記事にしています)
2025年2月現在、Omniverseは提供形態を大きく変えることを明確にしており、2025年10月には完全に置き換わる予定です。それに伴って利用方法も大きく変わるため、本記事では「Omniverse提供形態変更の内容」「新しい提供形態におけるOmniverseの利用方法」を解説します。
Omniverse提供形態変更の内容
(注:本記事の主旨に沿うようにOmniverseアーキテクチャから一部コンポーネントやフローを省略しています)
旧提供形態
以前は、Omniverse LauncherというGUIアプリケーションから、NVIDIAが提供するサンプルアプリケーション(USD Composerなど)をインストールして使い始めることが基本でした。Google Chromeを利用するときと同じように、拡張機能(Extension)を追加していくことで機能を拡張したり、SDKを用いて自分でExtension開発して利用していました。SDKを用いて自分で1からアプリケーションを作ることも可能でしたが、NVIDIAの提供するサンプルアプリケーションをインストールしてから、そこに機能を拡張していくといった使い方が主流でした。
現在Omniverse Launcherを起動すると、上図のように、下部に "2025年10月1日に廃止される予定" という表示が出るようになっています。
新提供形態
新提供形態において、NVIDIAからサンプルアプリケーションは基本的に提供されなくなりました。代わりに同等の機能をもつアプリケーションをビルドするための「テンプレート」(Kit App Template)が用意されるようになりました。これを用いてアプリケーションをビルドしてから使い始めることになります。
オンプレ・クラウド分散配置を想定するようになり、NVIDIAのサポート注力領域がアプリケーションからSDKになったといえます。より開発者向けになったことで、開発者は Kit App Template を使って、ベースアプリケーションをビルドし、そこに必要なExtensionを追加・作成したりして独自のアプリケーションをビルド・パッケージングし、ユーザが目的に応じて各アプリケーションを利用していくといった使い方が基本になります。
新しい提供形態におけるOmniverseの利用方法(Kit App Template使用方法)
前述のとおり、新提供形態において Kit App Template を使用します。こちらを利用して、以下を順番に実現していくフローを解説していきます。
- ベースアプリケーションをビルド&起動
- 独自Extensionの作成・アプリケーションへの組み込み
- 全ユーザがすぐに使えるようパッケージング
本記事では Windows 環境を前提に解説していきます (Linux環境の場合は、コマンド実行時に repo.bat
を repo.sh
に置き換えて実行してください)
1. ベースアプリケーションをビルド&起動
-
任意のディレクトリにProject用のフォルダを作成します
- 今回は
testProject
フォルダを作成 - Projectごとにフォルダを切って下記手順を実行していくことを推奨
- 今回は
-
testProjectディレクトリに移動し、kit-app-templateをcloneします:
git clone https://github.com/NVIDIA-Omniverse/kit-app-template.git
- 本記事では標準のコマンドプロンプトを使用
C:\Users\s-kos\Omniverse\NewSDK>cd testProject C:\Users\s-kos\Omniverse\NewSDK\testProject>git clone https://github.com/NVIDIA-Omniverse/kit-app-template.git
- 本記事では標準のコマンドプロンプトを使用
-
kit-app-templateディレクトリに移動して、
.\repo.bat template new
コマンドを実行します。以下項目が問われるので入力していきます- Do you accept the EULA (End User License Agreement)?:Yes を選択
- Select with arrow keys what you want to create:Application を選択
- Select with arrow keys your desired template:ベーステンプレートを選択。今回は USD Composer を選択 (標準で必要十分な機能を搭載しているテンプレートであるため)
- Enter name of application .kit file:アプリケーションを管理するファイル名を入力 (自由:今回は
test.test_peoject
と入力) - Enter application_display_name:アプリケーション名(ウィンドウタイトルに出す名前)を入力 (自由:今回は
Test Application
と入力) - Enter version:アプリケーションのバージョンを入力(自由)
-- - Enter name of extension:テンプレートに付属するExtensionを続けてセットアップしていきます。Extension名を入力します (自由)
- Enter extension_display_name:Extensionの表示名を入力(自由)
- Enter version:Extensionのバージョンを入力(自由)
C:\Users\s-kos\Omniverse\NewSDK\testProject>cd kit-app-template C:\Users\s-kos\Omniverse\NewSDK\testProject\kit-app-template>.\repo.bat template new ~~~(略)~~~ ? Do you accept the EULA (End User License Agreement)? Yes [ctrl+c to Exit] ? Select with arrow keys what you want to create: Application> ? Select with arrow keys your desired template: [omni_usd_composer]: USD Composer ? Enter name of application .kit file [name-spaced, lowercase, alphanumeric]: test.test_peoject ? Enter application_display_name: Test Application ? Enter version: 0.1.0 The application template you have selected requires a setup extension. Setup Extension -> omni_usd_composer_setup Configuring extension template: Omni USD Composer Setup ? Enter name of extension [name-spaced, lowercase, alphanumeric]: test_project.my_usd_composer_setup_extension ? Enter extension_display_name: My USD Composer Setup Extension for Test Project ? Enter version: 0.1.0 Extension 'test_project.my_usd_composer_setup_extension' created successfully in C:\Users\s-kos\Omniverse\NewSDK\testProject\kit-app-template\source\extensions\test_project.my_usd_composer_setup_extension Application 'test.test_peoject' created successfully in C:\Users\s-kos\Omniverse\NewSDK\testProject\kit-app-template\source\apps\test.test_peoject.kit
-
.\repo.bat build
コマンドを実行してビルドしますC:\Users\s-kos\Omniverse\NewSDK\testProject\kit-app-template>.\repo.bat build ~~~(略)~~~ BUILD (RELEASE) SUCCEEDED (Took 38.63 seconds)
-
.\repo.bat launch
コマンドを実行してアプリケーションを起動します- 従来の Extension Manager や Command Debug 機能などが使えるように
-d
オプションを付加することを推奨 -
Select with arrow keys which App you would like to launch
と聞かれるので、上記Enter name of application .kit file
で入力した名前のものを選択する(基本デフォルトで選択されているもので問題ないです)
C:\Users\s-kos\Omniverse\NewSDK\testProject\kit-app-template>.\repo.bat launch -d [ctrl+c to Exit] ? Select with arrow keys which App you would like to launch: test.test_peoject.kit launching test.test_peoject.kit!
- 従来の Extension Manager や Command Debug 機能などが使えるように
しばらく待って、以下のようにアプリケーションが起動したら完了です。従来のOmniverse Launcherからアプリケーションインストールまでの工程がここまでで完了したことになります。
2. 独自Extensionの作成・アプリケーションへの組み込み
次に、独自Extensionを作成し、1.で起動したアプリケーションに組み込む方法について解説します。
-
.\repo.bat template new
コマンドを実行して新規Extensionを作成します。以下項目が問われるので入力していきます- Select with arrow keys what you want to create: Extension を選択
- Select with arrow keys your desired template:Basic Python Extension を選択
- Enter name of extension:Extension名を入力(自由)
- Enter extension_display_name:Extension表示名を入力(自由)
- Enter version:Extensionのバージョンを入力(自由)
C:\Users\s-kos\Omniverse\NewSDK\testProject\kit-app-template>.\repo.bat template new [ctrl+c to Exit] ? Select with arrow keys what you want to create: Extension> ? Select with arrow keys your desired template: [basic_python_extension]: Basic Python Extension ? Enter name of extension [name-spaced, lowercase, alphanumeric]: test.test_extension ? Enter extension_display_name: Test Extension ? Enter version: 0.1.0 Extension 'test.test_extension' created successfully in C:\Users\s-kos\Omniverse\NewSDK\testProject\kit-app-template\source\extensions\test.test_extension
以下のように、VSCodeなどで確認すると、kit-app-template/source/extensions
内に先ほど作成したExtension実行ファイル群が格納されています。Extensionの構造についてOmniverse提供形態に伴う変更はないため、既に作成済みのExtensionがあれば、このディレクトリに配置して後述の手順でアプリケーションに組み込み、動作確認すると良いでしょう。
- ここでは、
kit-app-template/source/extensions/<作成したExtension名のフォルダ>/
内のextension.py
を編集して、「Hello, Digital Twin!」メッセージが表示されるようにしてみます-
本記事ではExtension開発の詳細は割愛します。初めての方は、Extensions in-depth - Ommiverse Docs などを参照ください
import omni.ext import omni.ui as ui class MyExtension(omni.ext.IExt): def on_startup(self, _ext_id): """Extensionが起動される度に実行されます""" print("[test.test_extension] Extension startup") # ウィンドウを生成して、「Hello, Digital Twin!」と表示する self._window = ui.Window("Test Extension", width=600, height=300) with self._window.frame: with ui.VStack(): ui.Label("Hello, Digital Twin!", style={"font_size": 40.0}) def on_shutdown(self): """Extensionが終了される度に実行されます(クリーンアップ処理など実装します)""" print("[test.test_extension] Extension shutdown") # 生成されたウィンドウを削除する if self._window: self._window.destroy() self._window = None
-
-
作成したExtensionをアプリケーションに組み込みます。
kit-app-template/source/apps
内の、アプリケーション作成時に名前をつけた.kitファイルを開きます。Enter name of application .kit file:アプリケーションを管理するファイル名を入力 (自由:今回は
test.test_peoject
と入力) -
[dependencies]
を探し、"<Extension名>" = {}
を追記して保存します[dependencies] "test.test_extension" = {}
-
.\repo.bat build
コマンドを実行してビルドしますC:\Users\s-kos\Omniverse\NewSDK\testProject\kit-app-template>.\repo.bat build ~~~(略)~~~ BUILD (RELEASE) SUCCEEDED (Took 5.98 seconds)
-
.\repo.bat launch
コマンドを実行してアプリケーションを起動しますC:\Users\s-kos\Omniverse\NewSDK\testProject\kit-app-template>.\repo.bat launch -d [ctrl+c to Exit] ? Select with arrow keys which App you would like to launch: test.test_peoject.kit launching test.test_peoject.kit!
アプリケーション起動と同時に、「Hello, Digital Twin!」メッセージが表示されるようになりました。以上で、Extensionの作成・アプリケーションへの組み込みが完了です。
3. パッケージング
最後に、ここまでで作成したExtension+アプリケーションを全ユーザが実行できるようにパッケージングしてみます。
-
.\repo.bat package
コマンドを実行する- 特に初回は、パッケージングに必要なライブラリのダウンロード処理などが入るため時間がかかります
C:\Users\s-kos\Omniverse\NewSDK\testProject\kit-app-template>.\repo.bat package Packaging app (fat package)... ~~~(略)~~~ Total of 347.56 seconds Output size: 2.466 GiB (Compressed to 48.1% of input size) Package Created: C:/Users/s-kos/Omniverse/NewSDK/testProject/kit-app-template/_build/packages\kit-app-template-fat@106.5+main.0.5e2cadc6.local.windows-x86_64.release.zip (Took 547.03 seconds)
kit-app-template/_build/packages
内にzip形式でパッケージングされます。
zipを展開し、<アプリケーション作成時に名前をつけた.kitファイル名>.bat
ファイルをダブルクリックすることで、アプリケーションが起動します。ユーザに配布する際はこのようにパッケージングしてから行うとよいでしょう。
まとめ
本記事では、Omniverse提供形態変更の内容、そして新しい提供形態におけるOmniverseの利用方法を具体的に解説しました。より開発者向けとなったことで、以前と比べて導入のハードルが高く感じてしまうかもしれませんが、GUIからCUIベースになっただけで導入自体はスムーズに進みます。特に、Kit(SDK)のバージョンアップに応じて迅速に独自アプリケーションを対応させることができるというメリットがあります。
一方で、ベーステンプレートをもとにビルドされるアプリケーションは、Omniverse Launcherからインストールできたものより同梱されているExtensionが少ないため、場合によっては必要なExtensionを調査してビルドし直すなどの手間が発生しているのが現状です。
Omniverseは過渡期であり、今回の提供形態の変更は大きめの環境変化と言えます。今後の動向も継続的にチェックしていこうと思います。