2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NVIDIA Omniverse の提供形態変更に伴う新しい利用方法(Kit App Template使用方法) 解説

Last updated at Posted at 2025-02-12

はじめに

デジタルツイン分野において、リアルタイム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アーキテクチャから一部コンポーネントやフローを省略しています)

旧提供形態

スクリーンショット 2025-02-08 162105.png

以前は、Omniverse LauncherというGUIアプリケーションから、NVIDIAが提供するサンプルアプリケーション(USD Composerなど)をインストールして使い始めることが基本でした。Google Chromeを利用するときと同じように、拡張機能(Extension)を追加していくことで機能を拡張したり、SDKを用いて自分でExtension開発して利用していました。SDKを用いて自分で1からアプリケーションを作ることも可能でしたが、NVIDIAの提供するサンプルアプリケーションをインストールしてから、そこに機能を拡張していくといった使い方が主流でした。

スクリーンショット 2025-02-08 162123.png

現在Omniverse Launcherを起動すると、上図のように、下部に "2025年10月1日に廃止される予定" という表示が出るようになっています。

新提供形態

スクリーンショット 2025-02-08 162255.png

新提供形態において、NVIDIAからサンプルアプリケーションは基本的に提供されなくなりました。代わりに同等の機能をもつアプリケーションをビルドするための「テンプレート」(Kit App Template)が用意されるようになりました。これを用いてアプリケーションをビルドしてから使い始めることになります。

オンプレ・クラウド分散配置を想定するようになり、NVIDIAのサポート注力領域がアプリケーションからSDKになったといえます。より開発者向けになったことで、開発者は Kit App Template を使って、ベースアプリケーションをビルドし、そこに必要なExtensionを追加・作成したりして独自のアプリケーションをビルド・パッケージングし、ユーザが目的に応じて各アプリケーションを利用していくといった使い方が基本になります。

新しい提供形態におけるOmniverseの利用方法(Kit App Template使用方法)

前述のとおり、新提供形態において Kit App Template を使用します。こちらを利用して、以下を順番に実現していくフローを解説していきます。

  1. ベースアプリケーションをビルド&起動
  2. 独自Extensionの作成・アプリケーションへの組み込み
  3. 全ユーザがすぐに使えるようパッケージング

本記事では Windows 環境を前提に解説していきます (Linux環境の場合は、コマンド実行時に repo.batrepo.sh に置き換えて実行してください)

1. ベースアプリケーションをビルド&起動

  • 事前に VSCodeGit をインストールしておきます

  • 任意のディレクトリに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!
    

しばらく待って、以下のようにアプリケーションが起動したら完了です。従来のOmniverse Launcherからアプリケーションインストールまでの工程がここまでで完了したことになります。
スクリーンショット 2025-02-11 161532.png

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があれば、このディレクトリに配置して後述の手順でアプリケーションに組み込み、動作確認すると良いでしょう。
スクリーンショット 2025-02-11 163255.png

  • ここでは、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
      

スクリーンショット 2025-02-11 164854.png

  • 作成したExtensionをアプリケーションに組み込みます。kit-app-template/source/apps 内の、アプリケーション作成時に名前をつけた.kitファイルを開きます。

    Enter name of application .kit file:アプリケーションを管理するファイル名を入力 (自由:今回は test.test_peoject と入力)

  • [dependencies] を探し、"<Extension名>" = {} を追記して保存します

    [dependencies]
    "test.test_extension" = {}
    

スクリーンショット 2025-02-11 165725.png

  • .\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の作成・アプリケーションへの組み込みが完了です。
スクリーンショット 2025-02-11 170436.png

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形式でパッケージングされます。
スクリーンショット 2025-02-11 172020.png

zipを展開し、<アプリケーション作成時に名前をつけた.kitファイル名>.bat ファイルをダブルクリックすることで、アプリケーションが起動します。ユーザに配布する際はこのようにパッケージングしてから行うとよいでしょう。
スクリーンショット 2025-02-11 17283911.png

まとめ

本記事では、Omniverse提供形態変更の内容、そして新しい提供形態におけるOmniverseの利用方法を具体的に解説しました。より開発者向けとなったことで、以前と比べて導入のハードルが高く感じてしまうかもしれませんが、GUIからCUIベースになっただけで導入自体はスムーズに進みます。特に、Kit(SDK)のバージョンアップに応じて迅速に独自アプリケーションを対応させることができるというメリットがあります。
一方で、ベーステンプレートをもとにビルドされるアプリケーションは、Omniverse Launcherからインストールできたものより同梱されているExtensionが少ないため、場合によっては必要なExtensionを調査してビルドし直すなどの手間が発生しているのが現状です。
Omniverseは過渡期であり、今回の提供形態の変更は大きめの環境変化と言えます。今後の動向も継続的にチェックしていこうと思います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?