トレンドコラム

性能検証

【後編】NVIDIA Omniverse™にPLATEAUデータを取り込んでみた

2022.11.29

サービスクリエーション本部 GPUエンジニア 岡本 朋之

サービスクリエーション本部
GPUエンジニア
岡本 朋之

【前編】NVIDIA Omniverse™にPLATEAUデータを取り込んでみた

はじめに

前回の記事では、3D都市モデル「PLATEAU(プラトー)」のデータを、手動でOmniverse™に取り込む方法について紹介しました。しかし、手動の取り込みについては1個1個のモデルをUSD変換し、サイズを調整して・・と手間がかかってしまいます。狭い範囲を取り込むならそれほど苦労はしませんが、例えば複数の市区町村を取り込みたい場合などは結構な時間がかかってしまいます。
これを回避するために、Omniverse™のスクリプト機能を活用する方法を紹介します。

PLATEAU読み込みスクリプトについて

今回利用するスクリプトについては、ft-labさまがGitHub上に公開されているスクリプトを利用します。
こちらのGitHubには基本的な手順やスクリプトの解説が詳しく掲載されておりますので、本記事については手順をなぞりつつ、弊社環境で引っかかったポイントや、クラウド利用を前提とした環境への展開などを紹介します。
※ なお、本記事は作成(2022年10月19日)時点の最新版である2022/7/11リリーススクリプトを利用しております。

今回利用するVDI環境について

この記事を作成する少し前に、弊社の新サービスVDIクラウドforデジタルツイン(以下VDIクラウド)がリリースされました! 前編ではInnovation LAB環境(VMware)を使いましたが、せっかくなので今回は本サービスのVDIクラウド環境(Nutanix × Citrix)で試してみます。
今回利用するVDIのスペックは以下の通りです。

OS Windows 10 Enterprise
Create(利用ソフトウェア)
バージョン
2022.2.2 Beta
仮想CPU Intel(R) Xeon(R) Platinum 8358 @2.60Ghz(割当コア数:32コア)
メモリー 48GB
ストレージ 300GB
仮想GPU NVIDIA A40-24Q (A40 1/2枚相当。GPUメモリー24GB)

※ 検証用環境のため、商用サービスとは提供スペックが異なる場合もございます
※ 本サービスはCitrixを利用しておりますが、本記事の内容はOmniverse™が利用可能な環境(オンプレミスやその他クラウド環境等)であれば差分はございません。

本サービスについてはナレッジサイトもございますので、お申込みや初期セットアップのイメージを掴みたい方はぜひ参照ください。

サービスの初期開通オーダーが完了すると、お客さまごとにStoreFrontと呼ばれるVDIアクセス用のポータルサイトが払い出されます。

ナレッジサイト内の記事を参考にして初期セットアップを完了すると、StoreFrontからVDIへアクセスできるようになります。

PLATEAU都市データをスクリプトでOmniverse™上に展開する

1. 準備

本手順ではCreate標準のスクリプトエディタを利用します。「Window」→「Script Editor」でスクリプトエディタが立ち上がります。

スクリプトエディタのウィンドウはドラッグ&ドロップで任意の箇所に移動できます。

次に今回利用するPLATEAUデータを準備します。前回記事やft-labさまの記事と同じく東京23区のデータを取り込んでみます。

なお、今回はft-labさまが用意されたスクリプトのうち、3Dモデルデータの取り込み用(import_PLATEAU_tokyo23ku_obj.py)のスクリプトと、地形データへの衛星写真貼り付け用(divide_GeoTiff_images.py)スクリプトの2つを利用します。

まずは次のサイトからOBJ形式の3Dモデルデータをダウンロードします。
https://www.geospatial.jp/ckan/dataset/plateau-tokyo23ku

同じページから、GeoTIFF形式のオルソ写真データをダウンロードします。
※ 圧縮データですが容量が5GB程度ございますのでご注意ください

ダウンロードしたデータを解凍し、作業用フォルダーに保存します。なお、フォルダーパスに日本語が含まれている場合は、スクリプトが正常に動作しない可能性があるとのことなのでご注意ください。

2. オルソ写真データの分割スクリプト実行

前項でダウンロードしたオルソ写真データをスクリプトにより分割します。
まずft-labさまが提供されているGitHubにアクセスします。
https://github.com/ft-lab/Omniverse_sample_scripts/tree/main/PLATEAU

上記ページにあるdivide_GeoTiff_images.pyを開き、スクリプトの内容をコピーしてCreateのスクリプトエディタへ貼り付けます。
この時、次の箇所をご自身が作業されている環境に合わせて書き換えます。

  • 18行目:先程保存したオルソ写真データのフォルダーパスへ書き換え
  • 21行目:作業フォルダー下に作った分割データフォルダーパスへ書き換え(本記事ではdivide_images)

※注意※
Windowsエクスプローラーから取得したフォルダーパス形式ではスクリプトが動作しません。必ずスクリプト記載のパス形式(c:\\folder_1\\folder_2~)に合わせて書き換えてください。

フォルダーパスを書き換えたら、「Run(Ctrl + Enter)」ボタンを押してスクリプトを実行します。(本処理には時間がかかります)
処理完了後、結果画面に”Save success!!” と表示されたら成功です。分割データフォルダーを確認し、データが保存されていることを確認してください。

3. 3Dモデルデータ読み込みスクリプト実行

前項と同じように、以下GitHubからスクリプトをコピーして利用します。

https://github.com/ft-lab/Omniverse_sample_scripts/tree/main/PLATEAU
上記ページにあるimport_PLATEAU_tokyo23ku_obj.pyを開き、スクリプトの内容をコピーしてCreateのスクリプトエディタへ貼り付けます。(先程の分割スクリプトは消してください)
先程と同じく、次の箇所をご自身が作業されている環境に合わせて書き換えます。

  • 30行目:先程保存した3Dモデルデータのフォルダーパスへ書き換え
  • 34行目:先程作成したオルソ写真分割データのフォルダーパスへ書き換え
  • 38行目:Nucleus上にあるフォルダーへ書き換え(作成後のUSDファイル保存場所)

※注意※
作成後のデータを複数人および複数端末で編集することを想定する場合、Nucleusを全作業端末からアクセス可能なクラウドサーバー等にインストールし、38行目にはNucleusサーバーのIPアドレスを指定してください。なお、VDIクラウド for デジタルツインでは共用Nucleusサーバーをオプションにて提供しております。

以下の項目は取り込むデータのオプション値となります。必要に応じてTrue/Falseを書き換えてください。

  • 48行目:LOD2モデルを取り込む※ /取り込まない
    ※ LOD2モデルが存在しないエリアの建物データはLOD1モデルを取り込みます
  • 51行目:LOD1,2モデル両方を取り込む※ /取り込まない
    ※ 同じ建物データでLOD1/LOD2の両モデルを取り込むようになります。一部エリアではLOD2モデルでは建物数が少なく表示されるため、エリア内のLOD1も同時に表示させることで建物数を増やすことが可能です。ただし、LOD2モデルのテクスチャーがLOD1モデルと重なって表示される場合があります。

※注意※
LOD2モデルを利用する場合はGPUやメモリーのリソース消費が大きくなります。スクリプトの実行中や実行後にCreateが落ちる場合などは、LOD1モデルを利用してください。

  • 54行目:オルソ写真データを地面モデルのテクスチャーとして利用する/しない
  • 57行目:橋梁モデルを取り込む/取り込まない
  • 59行目:交通路モデルを取り込む/取り込まない

以下項目では取り込むエリアの2次メッシュを指定します。

  • 63行目:取り込むエリアの選択

※注意※
エリア数が多い場合、処理中にCreateが落ちる場合があります。マシンスペックにもよりますが、1度に取り込むエリアは2~3を目処とし、エリアを変更しつつ複数回スクリプトを回すことで23区全体の取り込みは可能です。

パラメーター編集が終わりましたら、「Run(Ctrl + Enter)」ボタンを押してスクリプトを実行します。(本処理には時間がかかります)
処理完了後、結果画面に”Save success!!” と表示されたら成功です。

※注意※
本スクリプトは現在開いているStageに書き込みますので、実行前に「File」→「New」から新規Stageを立ち上げてください。(エリアを変更して複数回スクリプトを回す場合は、前回スクリプト実行完了時点のStageから変えないでください)
また、スペックが足りない場合は処理中にCreateが落ちる場合があります。この場合は「取り込むモデルをLOD1に限定」「橋梁や交通路モデルを除外」「対象エリアを絞る」などの調整をしてください。

取り込み結果を確認します。視点をモデルの近くに移動したいので、Stageで適当な建物モデル郡を選択してFキーを押します。

東京都の湾岸エリア付近が表示されました。川や緑地に注目すると地面データのテクスチャーにオルソ写真データが反映されていることが分かります。

続けて別エリア取得のためにスクリプトを再実行する場合は、実行前にNucleus上の任意フォルダーへ保存してください。

実際にスクリプトを複数回実行し、全エリアを取り込んだらどうなるかを検証してみました。

1回のスクリプトで取り込むエリア数を2~3に絞る必要はありましたが、何とか全エリアの取り込みに成功しました。
しかしながらファイル保存や読み込みに相当な時間がかかるなど、現スペックではギリギリ動くといった具合です・・・(GPUメモリー、ホストメモリー共に半分以上を消費しています)
快適に利用するためには、対象エリアの限定化やスペックの見直しなどの調整が必要かと思われます。

終わりに

ft-labさまの作成したスクリプトにより、前編よりも遥かに簡単かつ短時間で3Dモデルデータの取り込みに成功しました!なお、ft-labさまの記事には取り込んだデータを用いた日照シミュレーションの実行方法なども掲載されておりますので、あわせて確認ください。

また後編では新サービス「VDIクラウド」を用いて検証を行いました。画面描写はもたつかずキビキビと動き、リモートセッション自体は落ちることも一切ありませんでした。検証環境でありますが、オンプレ環境と比較しても遜色ない操作性や快適性だったと感じます。

記事中にも紹介した通り、本サービスではNucleusサーバーをオプションにて用意します。また、Omniverse™環境がすぐ使えるように、VDIにOmniverse™ Lancherをプリインストールしてお渡しすることも可能です。ご興味のあるかたは公式サイトを確認ください。

今後も、Omniverse™やVDIクラウドに関する検証結果を記事化していく予定ですので、どうぞご期待ください!