Omniverse を体験する(2): コラボレーション
こんにちは、技術統括部 技術第3部(グラフィックス)の成(Seong)です。前回の記事では、Omniverseの環境構築について説明しました。今回はその続編として、Omniverseのコラボレーション機能について説明していきます。
Omniverseでのコミュニケーション
前回の記事の中でも言及しましたが、Omniverseはコラボレーション・プラットフォームとしての側面も持ちます。以下のNVIDIAのYoutubeの動画では、具体的な機能が簡潔に説明されています。🔗: 動画リンク
動画を要約すると、Omniverseでは以下のようなコラボレーションを実現できるということができそうです。
1.複数のDCCツールのコラボレーション
2.大規模なチーム、地理的に離れたチームのためのコラボレーション
3.複雑化する3Dワークフローを改善するためのコラボレーション
具体例を挙げて一つずつ見ていきましょう。
複数のDCCツール間でのコラボレーションとは、Unreal Engine やMaya, RevitなどのDCCツールを用いた編集作業のことです。Omniverseを用いることで、これらのツールをシームレスに連携することができます。誤解を恐れずに言えば、一つのファイルを編集する手段として、様々なDCCツールを選択することができます。
Omniverseは、ユースケースやチームの人数に応じて拡張することができます。この拡張性の高さから、個人向けの開発環境や複数台のPCを組み合わせた大人数の作業向けの環境まで構築することができます。また、Omniverseはリアルタイムでの共同編集・
同時編集も可能なため、チームのメンバーが地理的に離れた場所にいても、ツール上でコミュニケーションをとりながら作業を行えます。
Omniverseはリアルタイムでの同時編集やUSDファイルの特徴を生かした編集をサポートしています。これによって、従来のウォーターフォール型の3Dパイプラインを改善することができます。 例えば、VRやARで作業過程を確認しながら編集することによって、レビューによって得られたフィードバックを即座に反映することができます。加えて、USDが持つ非破壊のワークフローの特徴を生かした編集作業を可能とします。
ここからは、Unreal EngineとOmniverse Createを用いて、リアルタイムでの同時編集までを行う手順を説明します。後半では、実現している技術について少し説明を補足します。できる限り手順を飛ばさずに説明するため、少々くどくなるかと思いますが最後までお付き合いください。
今回構築する環境は、以下のようになります。

2台のPCを用いてコラボレーション環境を構築してみます。以下ではそれぞれのPCをPC1, PC2 と表記します。
PCを2台準備できないという方も大丈夫です。上記の画像の★印のプロセスのみを行うことで、今回のゴール(Unreal Engine とOmniverse Create のリアルタイムでの同時編集) を達成することができます。
ただし、一つのPC上で二つのアプリケーションが動作するため、相応のスペックが求められます。
PC1, PC2ともにOmniverseのインストールと、同じLANに接続されている必要があります。また、PC2にはUnreal Engineのインストールが必要です。
PC1の設定
PC
1で http://loclahost:3080にアクセスし、Enable Sharing をON にします

次に、PC2でログインする用のアカウントを作成します。Omniverse のランチャーに戻り、左の一番下の👤のマークをクリックします。(👤マークが表示されない方は、localhostの部分を一度クリックしてください)

Add Userをクリックして、Userを作成します。

作成したユーザーのパスワードを設定します。

ここで準備はほとんど完了です。最後に、PC1のIPアドレスを記録しておきます。IPアドレスは、Windowsの設定から確認できます。コマンドプロンプトでipconfig コマンドを実行して確認するのも良いでしょう。
PC2の設定
こちらは比較的容易です。Omniverse ランチャーのNucleusのタブから、Add serverをクリックします。先ほど控えたIPアドレスを入力し、作成したユーザ名を入力します。
うまくいけば、localhostの下に先ほどのIPアドレスのサーバーが追加されるはずです。

これで接続ができました。次に Unreal Engineを接続してみます。まずは、Omniverse ランチャー の更新タブ → コネクタ → Epic Games Unreal Engine コネクタをダウンロードします。
ダウンロードするバージョンは、使用しているUnreal Engineのバージョンに合わせてください。
次にUnreal Engine を開きます
Unreal Engineのコネクタがダウンロードされていれば、写真のようにOmniverse のアイコンが表示されているはずです。Add Serverをクリックし、先ほど入力したIPアドレスを入力します。

Unreal Engineのコンテンツブラウザから、Nucleus上のファイルをブラウズできます。Unreal Engine 上でUSDを開きます。

さて、ここからOmniverseとCreateで双方向の編集を行っていきます。
Omniverseの拡張 → Live Session をクリックし、ライブセッションを作成します。


ライブセッションを作成できたら、PC2 での作業は終了です。
OmniLiveを用いたリアルタイム同時編集
続いてCreateからUnreal Engineで開いたUSDファイルを開き、LIVEボタンからUnreal Engineで作成したライブセッションに参加します。
うまく接続できれば、下記のような図になります。

それではいろいろ試してみましょう。Unreal EngineとOmniverse Createの編集が同期されていることがわかります。
これでHands Onの部分は終了です。まだまだたくさんの機能があるので、ぜひ作成した環境で試してみてください。
ライブセッションの部分について少し補足します。Omniverseはコラボレーションの為の様々な機能を提供しています。これらをうまく用いることで、コラボレーション環境としての真価を発揮します。
OmniLiveは、セッション管理のための機能です。この機能は、リアルタイムでの共同編集・同時編集の際に役立ちます。Nucleusの構成からこの機能の利点を説明したいと思います。
Omniverseでは、Nucleusにデータがただ一つ存在します。Single Source of Truth(SSOT)と言われる構造です。これによって、複数のDCCツール間でのファイルのやり取りが不要となり、ファイルのコピーなどによって生じるコストを削減できます。一方で、デメリットも存在します。例えば、Nucleus上に存在するデータに破壊的な変更が加われば、そのファイルを参照しているすべてのツールにその影響が波及してしまいます。さらに、編集中のファイルが他人によって上書されてしまう、誰が何を編集しているのかわからないといった問題が発生することがあります。
セッションは、誰がどのようなツールで編集をしているかを把握することができ、さらにセッション内で生じた編集をまとめて管理することを可能とする機能です。この機能だけで上記の問題をすべて解決することはできませんが、下記のメリットがあります。
具体的には、セッションごとに、そのセッション内で行われた編集をマージする・しないを選択することができます。セッションごとに管理することで、意図しない変更による作業の後戻りを軽減することができます。 これによって、DCCツールは、データの同期のタイミングを気にせずに、自由にセッションに参加・離脱することができます。
さて、今回の記事ではコラボレーションを実現する方法と、そのための機能を(セッション)説明しました。今回説明した機能はOmniverseの機能のほんの一部です。実際には、USD(Omniverseの標準のファイル形式)の特徴などを考慮する必要があります。
次回は、Omniverseのコネクタや、データの変換などに焦点をあてた内容の記事を執筆予定です。ご期待ください。