[Omniverse] Collect Asset : 参照ファイルを相対パスに変換

  • by

Omniverseでローカルのusdファイルを作成する場合、以下(他にもあるとは思いますが)を参照の形にできます。

  • USDファイル
  • 画像ファイル
  • Audioファイル
  • MDLファイル

以下は、現在開いているStageから別のUSDを参照しています。

以下は、マテリアルでテクスチャファイルを参照しています。

このときのファイルパスは、絶対パス/相対パスで指定されます。
もしくは、Nucleus上やネットワーク上の参照を行っているかもしれません。

他の環境に移す場合は、参照しているそれぞれのパスをカレントのStageがあるUSDファイルからの相対パスに置き換える必要があります。
それを行うのが「Collect Asset」という機能です。

Omniverse Create 2022.1.3で確認しました。

Collect Assetの参考(動画)

https://docs.omniverse.nvidia.com/app_create/prod_extensions/ext_collect.html

Collect Assetの使い方

対象のUSDファイルをいったんファイルに保存しておく必要があります。
Contentウィンドウで対象のUSDファイルを右クリックしてポップアップメニューを表示。
ポップアップメニューから「Collect Asset」を選択します。

Collection Optionsダイアログボックスが表示されます。
「Colection Path」に出力先のフォルダを指定します。

Nucleus上を指定することもできます。
すべてのチェックボックスをOffにしました(デフォルト)。
「Collect」ボタンを押すと変換処理が開始されます。

処理が終わると以下のようにファイルが出力されました。

ルートのUSDから、フォルダ内に各参照ファイルが展開されています。
AWS上のファイルはネットワーク上にありますが、これもダウンロードされました。

この変換されたUSDファイルを開いてみます。
Stageの階層構造はオリジナルのファイルと同じ構造で読み込まれました。

USDのファイルとしての格納の階層はまとめられて変化しますが、Stageの構造は同じです。
USDの参照を見ると「./Modeling/PLATEAU/Tokyo_23ku/xxx.usd」のように相対パスとなっています。

マテリアルのテクスチャの参照も「./Modeling/PLATEAU/Tokyo_23ku/xxx.jpg」のように相対パスとなっています。

すべての参照がルートのUSDから子のフォルダとなっているため、
ここからNucleusや他のPCにアップロードする場合はそのままこのファイルをまとめて転送すればよいということになります。
もしくはCollect Assetの「Colection Path」にNucleus上のパスを指定すると、そのままNucleusにアップロードされます。

注意点

確認したところ、以下は正しくCollect Assetで転送されませんでした。

  • USDから参照される、objファイルのマテリアルファイル(mtl)とテクスチャ

Collect Assetを使用する場合は、参照されるアセットファイルはusdに統一するほうがよさそうです。
未確認ですが、日本語フォルダ名/ファイル名がある場合も正しく処理されないと思われます。

今回はここまでです。