最新技術の先取りチェック:Python x Blueprint による新しいデータ準備処理ワークフロー
2017年11月15日

最新技術の先取りチェック:Python x Blueprint による新しいデータ準備処理ワークフロー

作成 Ken Pimentel

私達は CAD データをアンリアル エンジンに組みこむという難しい問題の解決策を研究してきました。先日開催された Autodesk University において、この研究について発表する機会がありました。簡単ではありましたが、これまで私達が取り組んできた Datasmith 開発の大きな足掛かりとなりました。 

Datasmith の現状

Datasmith ワークフローはアンリアル エンジンへのデータ移行を可能な限り滑らかに行うツールキットで、現在ベータ版です。ジオメトリ、テクスチャ、マテリアル、ライト、カメラなどの一般的なシーン アセットを、人気の DCC と CAD アプリケーションからアンリアル エンジンへ高忠実度で変換します。登録者数は 8000 名を超え、実際にベータ版を使用したユーザーからも貴重なフィードバックが提供されたことで、私達はリアルタイムで使用するデータ準備の工数を短縮するワークフローの開発を一気に推し進めることができました。

目標を達成するためのステップ

円滑なワークフローを実現するには、リアルタイムで使用するデータの自動化および準備プロセスに関する問題を解決しなければなりません。プッシュしたデータを必ず「完璧にレンダリング」または「最適化」するように Datasmith に求めることはできないからです。つまり、非破壊的な解決策 (既に行った処理を繰り返さずにアップストリーム データを簡単に変更できる方法) を私達自身が編み出さなければならないのです。

 PythonInUnreal_1.jpg
一般的にアンリアル エンジン用に準備されたデータを取得するワークフローは、データを最適化する別のツールに依存しています。

計画の一部を初公開

先日の Autodesk University において、アンリアル エンジンにおける Python とブループリントを使ったデータ準備処理の早期プレビューを初披露しました。
 
PythonInUnreal_2.jpg
 これからのデータ準備プロセス ワークフローで活躍が期待される Datasmith x アンリアル エンジン ベースのツール

私達はデモの中で、Python x エピック ゲームズのブループリント ビジュアル スクリプトの組み合わせによろう最新のデータ準備プロセスツールを使って、ユーザーがどのようにシーンデータを最適化できるようになるのか説明しました。我々が開発中のデータ準備関数には、「1 立法メートル未満のオブジェクトをすべて見つけて取り除くこと」および「これらのオブジェクトを見つけて自動的に修理すること (悪いトポロジー、ギャップ、オーバーラップの修正)」などがあります。

PythonInUnreal_3.jpg
 こちらのバイクは、より最適化されたバージョンを作成するシンプルなルールで処理されています。

Audodesk Universtiy 向けに用意したサンプル プロジェクトは 3ds Max ファイル形式ですが、Datasmith がネイティブ サポートを提供するファイル形式ならどれでも大丈夫です。20 種類以上の形式に対応しているので (今度さらに増える予定)、ご使用の形式が対応している可能性はかなり高いと思います。ファイルをインポートしたら、一般的なタスクが一通り実行されます。

PythonInUnreal_4_V2.jpg
 シンプルな Python スクリプトがデータをロードします (このデータは Datasmith がサポートする 20 以上のフォーマットの 1 つです)。

モデルの中には、目に見えない、あるいは作成中の視覚体験とは関係のないディテールが含まれている場合がほとんどです。そこで、特定のインスタンスに対するメタデータを検索し、それらを削除または最適化できるようにしました。さらに、目に見えないオブジェクトもすべて見つける方法を提供する予定です。関連性はあっても削除可能な内部ディテールなどに使える、とても便利な手法です。関連性のないアセットを見つけたり、それらを簡素化 / 削除する技法はどんどん増やす予定です。
 
PythonInUnreal_5.jpg
 メタデータからある名前を探してそれらを削除するシンプルな Python スクリプト

複雑なメッシュを処理する技法の 1 つは、簡素化バージョンを作ることです。Datasmith またはアンリアル エンジンという 2 通りの方法を検討してみてください。Datasmith は Catia、Creo、NX、SW、JT、Rhino からの BREP データのインポートをサポートしているので、テッセレーションと粗いパラメータを使うことで簡素化メッシュを取得することもできます。アンリアル エンジンにも LOD を作成する Quadric Mesh Optimizer が付いています。いずれの方法も、目に見えるジオメトリを最適化して、目標とする体験パフォーマンスに近づけることができます。

PythonInUnreal_6.jpg
 複雑なシートのメッシュを受け取り、ビルトインされているアンリアル エンジンの最適化ツールを使って LOD を構築している Python スクリプト。

シーンの構成を操作すると一般的にパフォーマンスがあがりますし、アセットも再整理すると使いやすくなります。リアルタイム エンジンはすべて、制限されたオブジェクト数しかリアルタイム速度で処理することができません。たとえば、iPad 上では、AR 用に 60fps で動かすことができるのは、オブジェクト ターゲット 1000 個とポリゴン ターゲット 1000000 個です。パワフルなデスクトップ マシンであれば、VR 用に 90fps で 2 回実施できるでしょう。複雑で数も多い CAD ファイルに 5000 以上のオブジェクトが含まれている場合、描画コール数を減らすためにデータの整理方法を検討しなければなりません。

PythonInUnreal_7.jpg
 多数の個々のエンティティを受け取り、ひとつのエンティティにスクリプト

Datasmith は V-Ray、Corona、Mental Ray その他のマテリアルを自動変換してくれますが、自分が欲しいマテリアルがすべて見つかるとは限りません。最適化済みの UE4 マテリアルのマイ ライブラリをお持ちの方もいるでしょう。また、CAD の世界ではマテリアルが後知恵の産物であることが多いです。このようなケースでは、既存マテリアルを見つけて UE4 で最適化したマテリアルに置き換える手法があると助かります。この新しい Python ツールを使えば、見つけるマテリアルと置き換えるマテリアルの関係性を 1:1 にしたシンプルなテキスト ファイルで置き換えが可能になります。
 シンプル テキスト ファイル ベースでの、マテリアルの検索と置換ストラテジーを用いたスクリプト

Datasmith には Python とブループリントの両方のインターフェースが付いているので、ユーザーはどちらのスクリプト パラダイムを使用するか選ぶことができます。つまり Datasmith ユーザーはこの新しいワークフローを使用すれば、特別の目的のために作られた非常にパワフルな幾何学処理ツールを作成 (および共有) することができます。 

PythonInUnreal_9.jpg
さらに、ブループリントのビジュアル スクリプティング インターフェースでも、エクスポートされた Python ツールを使えば同じタスクを実行することができます。

データ処理と最適化処理をアンリアル エンジンで行うことになるので、自動化と非破壊的なワークフローへの対応も良くなります。アップストリーム データが変更された場合 (しかも常に起こりますね)、スクリプトを使用すれば手作業で修正しなくてもダウンストリームのアセットを再処理することが可能になります。

滑らかなデータのインポートとパワフルなデータ準備処理ツールを組み合わせることで、アンリアル エンジン ユーザーは最小限の努力で CAD アセットを本物のような仮想体験に変換することができます。 

これは今後の計画のほんの一部に過ぎません。次回の Datasmith ベータ版リリースで、新しい Python ベースのツールを発表します。ぜひ www.unrealengine.com/betaに登録しましょう!

これからもアンリアル エンジンの最新技術を先取りチェックして、みなさまにお伝えしていきたいと思います。どうぞお楽しみに!