[Omniverse] Omniverse Appのビルド (2024.8)

  • by

Omniverse App(USD ComposerやKitをベースにしたアプリ)や開発で必要なリソースが2024年の半ばにGitHub上に移行されましたので、そのビルド方法を記載します。
このバージョンはKit 106.0.2を使用しています。
なお、Omniverse Launcherは2024年末までのサポートになるとのことでした。

https://www.nvidia.com/ja-jp/omniverse/

よりダウンロードに移行すると(フォームへの入力が必要)その説明がありました。
方針としては開発にシフトした感じですね。
アクセス先は今後はLauncherではなく、GitHub上のレポジトリになる点に注意する必要がありそうです。
大きな転換と思われるため、あらためてOmniverseについてまとめます。

Omniverseとは ?

https://www.nvidia.com/ja-jp/omniverse/

NVIDIA Omniverse

産業のデジタル化と生成物理 AI のための OpenUSD アプリケーションを開発するためのプラットフォームです。

OpenUSD ( https://openusd.org/docs/index.html )は、Pixar社が提供している3Dデータを管理するプラットフォームです。
usdというファイルフォーマットの作成や管理をはじめとして、データの受け渡しのイベント処理、パイプラインも提供しています。
ファイルフォーマットだけではありません。
USD = OpenUSDと考えていいと思います。オープンソースです。

OmniverseはOpenUSDをベースとしてアプリケーションや開発ツール、サービスを総合的に扱う「環境」(プラットフォーム)です。
さまざまな機能の集合体になります。
コア部分は大きく以下のものがあります(これ以外にもたくさんある)。

  • ベースのデータ構造はUSDを使用
  • RTXを使ったリアルタイムレイトレーシング
  • PhysXを使った物理シミュレーション
  • Python/C++での開発

これにアプリケーションや機能拡張を行い、サービス化していくことになります。
開発者でなくてもOmniverse Launcherから「Omniverse Foundation App」(USD Composer, USD Presenterなど)をインストールすることである程度は触ることができるようになっていました。
これがGitHubからのビルドに変わっています。

Omniverseでの開発

Developer Guide Overview
https://docs.omniverse.nvidia.com/dev-guide/latest/index.html

中程の図に以下の3つがあります。

  • Kit SDK
  • Repo Tools
  • Connect SDK

Kit SDK

「Omniverse Kit」をベースとして、UIが含まれるアプリケーションを開発することができます。
Kitに「Extension」(PythonもしくはC++を使用)を使って拡張していき独自のアプリケーションを構築するという流れです。
このKitの開発環境がGitHubで用意されました。
今回はこの内容について書きます。

https://github.com/NVIDIA-Omniverse/kit-app-template

ドキュメント : https://docs.omniverse.nvidia.com/kit/docs/kit-app-template/latest/docs/intro.html

Repo Tools

Repo ToolsについてはGitHubやGitLabなどでレポジトリを管理する場合に便利な機能群です。
パッケージ(Packman)の作成やダウンロードなどの管理を行います。

https://docs.omniverse.nvidia.com/kit/docs/repo_man/latest/docs/overview.html

GitHubで提供されているOmniverseのプロジェクトのほとんど(すべて?)はこれを使用していると思います。
これは複雑なので、今はそういうものがあるという認識でOKです。

Connect SDK

Connect SDKはUSDをエクスポート/インポートしたり、Live Syncでの同期処理を行う機能を開発するためのSDKです。
C++またはPythonで開発できます。
USD APIもこれに含まれます。
DCCツールからUSDを扱いたい場合はこれを使います。
開発のほとんどはUSDをいじることが中心になります(そのため、USDを開発できる知識が必要)。
Omniverseに関することはわずかです。というよりもUSDに関することがあまりにも多いです。

GitHubからアクセスします。connect samplesレポジトリからConnect SDKのパッケージがダウンロードされます。

https://github.com/NVIDIA-Omniverse/connect-samples

Connect SDKを使うようになったため、過去のLauncherからインストールできた「connect sample」とは書き方が変わった点も結構あります(開発は楽にはなりました)。
これは別でブログに書く予定です。

Omniverse Kit App Template

https://github.com/NVIDIA-Omniverse/kit-app-template

Kitベースのアプリをビルドします。
手順はこのレポジトリに書いてますが、改めて。
ちなみに、このOmniverse KitはGitHubにあるためオープンソースかというとそうではない点に注意してください。
個々のパッケージはpackmanからダウンロードされ、それらはバイナリで提供されています。

Windows/Linuxに対応しています。
ここではWindows 11で試しました。

コマンドプロンプト(cmd.exe)でビルドを行います。
あらかじめgit( https://gitforwindows.org/ )はインストールして検索パスを通しておいてください。

"C:/Omniverse"にインストールするとします。

git clone

cd C:\Omniverse
git clone https://github.com/NVIDIA-Omniverse/kit-app-template.git

テンプレートの設定

どのタイプのKitを使うかを指定します。
まずはカラのアプリケーションを作成します。

cd kit-app-template
.\repo.bat template new

入力または選択を順番に選んで行きます。
なお、この1つのレポジトリで複数のテンプレートを作成し起動時に選択することができます。

Select with arrow keys what you want to create

ここではアプリを作るので、
"Application"を選択してEnter。

Select with arrow keys your desired template

以下のどちらかを選択してEnter。

  • [kit_base_editor]: Kit Base Editor
    Kitアプリを一から作りたい場合はこれを選択。
  • [omni_usd_composer]: USD Composer
    USD Composerベースで作りたい場合はこれを選択。ただし、LauncherからインストールできたUSD Composer 2023.2.5に比べてExtensionは大きく削減されています。

Enter name of application .kit file

アプリケーション名を指定。
ここでは、"ft_lab.test_app"としました。
半角の小文字英字、半角数字、アンダーバー、"."のみ使用できます。

Enter application_display_name

アプリケーション名を指定。
デフォルトそのまま、"My Editor"としました。

Enter version

アプリケーションのバージョンを指定。
デフォルトそのまま、"0.1.0"としました。

これでKitのアプリケーションの設定が完了です。
次にビルドに進みます。

ビルド

.\repo.bat build

パッケージのダウンロードが行われるため、時間がかかります。

起動

.\repo.bat launch

ただし、この場合はExtensionは無視されます。
Extensionを扱う場合は後述します。

起動時はどのKitアプリを起動するか選択する必要があります。
選択後にEnterキーで確定してください。

複数のアプリがあると以下のように選択できます。

[ctrl+c to Exit]
? Select with arrow keys which App you would like to launch:
  ApplicationTemplate
########################################################################
❯ ft_lab.test_app.kit
  ft_lab.usd_composer.kit

ApplicationLayerTemplate
########################################################################
  ft_lab.test_app_streaming.kit
  ft_lab.usd_composer_streaming.kit

ApplicationTemplateの"ft_lab.test_app.kit"を選択しました。
はじめの起動は少し時間がかかります。

以下のように起動できました。

USDを読み込んだ場合。

ただ、Script Editorが存在しなかったりExtensionsをメニューから選択できません。
Extensionsが存在しない件は、USD Composerをベースにした場合でも同じです。

Extentionを指定できるようにする

launch時に"–dev-bundle"オプションをつけて起動します。

.\repo.bat launch --dev-bundle 

メニューのDeveloperでExtensionsやScript Editorを確認できました。

再度ビルドを行う

何らかのエラーが出て再ビルドしたい場合は、buildで"-x"オプションを指定します。

.\repo.bat build -x

USD Composerベース

LayerウィンドウやLive Syncなど、いくつかの機能はUSD Composerベースでないと使用できません。
".\repo.bat template new"でUSD Composerベースのアプリを作成 → ビルド → 起動しました。

これでScript EditorやLayerウィンドウは標準で扱えます。
Extensionsウィンドウはlaunch時に"–dev-bundle"オプションを指定した起動が必要です。

起動時にエラーがずっと出続ける

複数のテンプレートを用いた場合、以下のエラーが出続ける場合がありました。

c:/omniverse/kit-app-template/_build/windows-x86_64/release/extscache/omni.kit.manipulator.camera-105.0.5+36286b8b/omni/kit/manipulator/camera/animation.py(52): __on_event

ビューポート左上のアイコンを選択し、Navigation – Gamepad Camera Controlを無効にすると治りました。

メニューからPhysics関連の追加はできなくなった ?

Physics関連は、メインメニューやStageウィンドウのポップアップメニューから消えたようです。

ただ、USDとしてPhysicsは使えます。

Play時にPhysicsのモーションが再生できない

メニューの Edit – Preferences
Preferencesウィンドウの"Rendering"で"Enable Fabric delegate"を無効にします。

これでPhysicsのモーションが再生できます。

Tablet ARは ?→ 起動しなかった

USD Composerベースにて。
launch時に"–dev-bundle"オプションをつけて起動。
Developer – Extensionsから"AR TABLET EXPERIENCE"(omni.kit.xr.profile.tabletar)をインストールし起動します。

ただしiPadのクライアントをつないだところ、

 [omni.kit.xr.system.cloudxr.plugin] [CloudXR] [FrameServer] The client version 66 is older than the server version 100.

というエラーが出て起動しませんでした。

アプリの実体は ?

ビルドしたレポジトリの"_build/windows-x86_64/release"が実際のアプリの実ファイルになります。
kitやapps、PACKAGE-LICENSESフォルダはリンクになっており、kitについては"C:/packman-repo/chk/kit-kernel"が実体です。

ログファイルはどこ ?

ビルドしたレポジトリの"_build/windows-x86_64/release/logs"

新しいサービスも含めた個人的な所感

今までのLauncherのUSD Composerと比べて、リッチな部分(Extensionで拡張していた)は削除され開発向けに整理した感じがしました。
Extensionを開発して拡張していき独自アプリにする流れは同じ。

Omniverseでは別途、新しいサービスとして以下がアナウンスされています。
https://www.nvidia.com/ja-jp/omniverse/
より。

これを見ると、Cloud側にOmniverseを構築してストリーミングする、AIによるサービスも考慮、など
APIを提供する形になり、UIについてはWebブラウザ上で構築できる道が用意される感じですね。
Omniverse KitのようなUIが提供されるという意味ではなく、WebブラウザですでにあまたのUIの機能はオープンソースで提供されているため、それを利用して実装するという流れです。
Omniverseでは得意なRTXレンダリングのストリーミングと、Cloud APIの提供に絞ってる。
レイトレーシングのレンダリングはGPUをぶん回しますし、AIも考慮するとGPUの計算負荷は結構ありそうです。
それも考えると、Cloudを視野に入れるのは妥当な選択なように思います。

ということで今回は新しいOmniverse Kitの入手と使用方法について、でした。