UE5 Matrix Awakens 開発 技術トーク 世界の創造
マトリックスの目覚め:世界の創造|テックトーク|マトリックスの目覚め:世界の創造|テックトーク|
The Matrix Awakens- Creating a World – Tech Talk – State of Unreal 2022 – YouTube
www.youtube.com/watch?v=xLVJP-o0g28
このテクニカルトークでは、「The Matrix Awakens:Unreal Engine 5 Experience」デモの環境の背後にあるインスピレーションについて学び、Epicの特別プロジェクトチームがUE5を活用してアクションが行われる都市を作成した方法を学びます。トピックには、建物の作成に対するモジュール式の手続き型アプローチの詳細が含まれます。
オープンワールドワークフロー(アクターごとに1つのファイル、データレイヤー、HLOD、レベルインスタンス化); マテリアルとテクスチャリングのlookdevの内訳。UE5グローバルイルミネーションおよびリフレクションシステムであるLumenの改善に関する最新情報。
EpicGamesのSpecialProjectsGroupのシニアテクニカルアーティスト Votch Levi
これだけのディテールを持つ建物を単一のスタティックメッシュとして作るのはとても大変です.トライアングルの数がとてつもなく多くなってしまのです
また トライアングルの数はNaniteで対応できますが単一のスタティックメッシュでは建物のバリエーションに限界があります
建物を作るのに必要なモジュールを定義し始めました
1つのレベル内のモジュールはすべてまったく同じ高さになります
しかし 実は同じように見えるモジュールでも幅が何フィートも違うものが多いのです
どの建物も統一したグリッドに合うベースモジュールサイズを持っていませんでした
できる限り倍幅のモジュールを作ったりしました
ディテールの多様性とサイズと形状の不一致があるからこそこれらの参考建物がおもしろく見えるのだと思いました
Creating ModulesCreating Modules
ビルディングスタイルのモジュール形状を全て定義したら専用のモジュールテンプレートジェネレーターを使って各モジュールのプロキシバージョンを作成しました。
また、テンプレートジェネレータではモジュール名、バリエーション、フロア寸法などモジュールの追加メタデータを定義することもできるようにしました。
全てのモジュールテンプレートは建物を再現するために必要な全てのモジュールを表すビルディングキットにまとめられています。
このテンプレートを起点に各ビルディングスタイルを作成し、プロシージャルビルディングのプロトタイピングを始めました
Mayaでテンプレートモジュールを元にハイモデルを作りました
テンプレートは必ずしもモジュールのバウンディングボックスを表しているとは限りません。
モジュールの寸法はテンプレートモジュールから得た寸法を使用しています
多くの建物には何百ものテンプレートモジュールと何百もの高解像度モジュールがあります。アセットの統一とチームが困らないようにカスタムインポータを開発してビルディングモジュールのバッチインポートをしました。
必要なフォルダ構造の作成および各モジュールのマテリアルインスタンスの作成と割当を行いました。
このツールの詳細についてはビルディングルックデベロップメントの講演をご覧下さい。
合計で 2,333個のユニークな高解像度メッシュ
2,558個のユニークなテクスチャおよび5,707個のユニークなマテリアルインスタンスを組み合わせた24棟のユニークな建物を作成しました。膨大なデータです
そして そのすべてを整理しておく方法が必要でした
これは すべてのビルディングモジュールを整理するための場所でモジュールのジオメトリやルックデベロップメントを確認しすべてのピースがどのようにフィットして建物が作られるか確認する簡単な方法です
Module DescriptionModule Description
Corner ModulesCorner Modules
Shape Grammer についてはプロシージャルテクニックの講演をご覧ください
ピボットはモジュールの左側壁面の前方先端エッジに合わせて配置することにしました壁にピボットを合わせることで壁面のどこが壁なのか 常に把握できます.
しかし その分 課題も出てきました
また 奥まった入口や後ろに下がった壁など前向きの壁がないモジュールについては幻の壁があったはずのところにピボットを配置しました
Creating BiomesCreating Biomes
Packed Blueprint で作成
Open WorldOpen World
Alembicファイルには 建物 道路コリジョンオブジェクトを作成するために必要な点情報とプロシージャルに生成されたジオメトリのみが含まれているためPBCと呼んでいますAlembicファイルには 建物 道路コリジョンオブジェクトを作成するために必要な点情報とプロシージャルに生成されたジオメトリのみが含まれているためPBCと呼んでいます
Rule Processorを使用して都市をスポーンします
サブレベルや複雑なロジックが不要になります
データレイヤーは共通のラベルでコンテンツをグループ化する方法
インスタンス数は855万
World Partitionはメイングリッド(128m)とHLOD0(256m)で構成
HLOD1は常にロード
ストリーミングレシピ – ワールドセットアップとHLODストリーミングレシピ – ワールドセットアップとHLOD
青色で示されているHLOD0は128mから768mまでのグリッド範囲です
データレイヤーに関してHLOD0をロードします
赤色で示されているHLOD1は768mを越えて表示されており常にメモリにロードされています
HLOD1はセル内のすべてのスタティックメッシュを1つのNaniteメッシュに統合します
HLOD0と同様メイングリッドが変更された場合HLOD1の再生成が必要となります
手作業で作られた建物もプロシージャルに生成された建物もすべてInstanced Static Mesh(ISM)のコンポーネントを使って作られています
これにより 都市内のアクタ数が減りストリーミングのパフォーマンスが向上しました
ISMコンポーネント内でモジュールと一緒にインスタンス化されます
Rule Processor
Rule Processor はAlembicファイル経由でポイントデータをインポートするためのツールセットです
高速に動作する
このポイントデータは任意のソースから得られます
各ポイントに対してアクタを1つ生成することや複雑になることもあります
生成されたアクタを記録し古いアクタを自動的に整理します
また Rule Processorはメタデータのキー値を検索し、そのデータをアクタに属性オーバーライドとして適用することができます
これはメッシュデカールやコリジョンオブジェクトなど特定のニーズがあるアクタを設定するのに便利でした
インテリアウィンドウの設定に必要なメタデータもプロシージャルに生成し
インスタンス単位のプリミティブデータとしてアクタに設定しました
都市がスポーンされゲームプレイの準備が整いました