UE5にフォトグラメトリモデルを読み込む


早期アクセスが始まったUnrealEngine5。 さまざま機能が注目される中で、ここでは数千万ものポリゴン数のジオメトリが扱える仮想化マイクロポリゴンシステムNaniteを使ったフォトグラメトリのハイポリゴンモデルを読み込んでみようと思います。

フォトグラメトリモデルを準備する

今回は先日EpicGamesに買収されたRealityCaptureを使用しています。 UE5が正式リリースされた暁には MegaScanの様にボタン一つでモデルが持っていける日が。もしかしたら来るかも…?

通常フォトグラメトリモデルを他のコンテンツで使用する場合には、大まかな手順として

  • ポリゴンリダクション・デシメーション(必要があればモデル修正)
  • UV展開
  • テクスチャ生成

と言う作業を行います。

しかし今回はこの作業をすべて行わず、ハイポリゴンのままUE5に持っていきます。 ちなみにこのモデルのポリゴン数は、28.9M trisつまり2890万ポリゴンあります。

モデルの書き出し

UE5ではOBJ、FBXどちらも扱えますが、今回はFBXで書き出します。 その際、Export Vertex colorsをYesにします。 これは、テクスチャを使用しない代わりに頂点カラーを使用するためです。

UE5に読み込む

UE4からUIが一新されたUE5ですが、基本操作はほぼ変わりません。

モデルをインポートする際にはコンテンツブラウザ、UE5からはコンテンツドロワーに放り込みます。 モデルのデータが重いとしばらく待ちますが、インポートオプションが出てくるまで辛抱強く待ちます。

インポートオプションが表示されたら、Build NaniteをチェックボックスをオンにしNaniteを有効にします。 さらにVertex Color Import OptionをReplaceにし、頂点カラーが読み込まれるようにします。

そうすると、無事に2890万ポリゴンのモデルが読み込まれました。 なお、読み込み後でもインポートオプションからNaniteの有効化や頂点カラーの読み込み設定が可能なので、モデルの改めて放り込んで読み込む必要はありません。

ただ、頂点カラーを読み込む設定をしたのに反映されていないように見えます。 頂点カラーを反映させるにはマテリアル設定が必要になりますが、作業はシンプルでベースカラーにVertex colorのノードを繋ぐ事だけで表示できます。

マテリアルのを割り当てて頂点カラーが表示されました。

おまけ

今回のUE5早期アクセスで注目されているのはこのハイポリゴンを扱えるNaniteと、Lumenという動的GIが主だと思います。 その2つの機能を使った動画も作成しました。

https://twitter.com/tasklong/status/1397818759969087491?s=20

ライトベイク無しのリアルタイムでこの日照を表現できるのはUE5すごい…!

問題点

そもそもなんでテクスチャではなく頂点カラーで色を表現しているのかと言うと、2890万ものハイポリゴンをUV展開してテクスチャを生成するという事が、PCのパフォーマンス的に現実的ではない(時間が掛かる、小さいポリゴンが分散する事でテクスチャのクオリティが下がる)と言う理由があります。 なのでテクスチャを加工したり修正したりという事が出来ず撮った写真に写り込んだものが色として絶対な物になってしまうので、UE5が正式リリース後、ハイポリゴンのアセットどう制作していく事になるのか気になるところです。 もう一つ、いくら2890万ポリゴンのハイポリゴンとは言ってもディテールを表現するのに頂点カラーだけでは表現力が足りないように見えるので、やはりテクスチャの表現力は必要なのでは

メモ

  • OBJだと頂点カラーが読み込まれない
  • RealityCaptureからの書き出し時にスケールが小さすぎるとUE5でメッシュが正しく表示されない
  • 1000万クラスのハイポリゴンをNaniteにチェックを入れずに読み込もうとするとUE5が落ちる