サンフランシスコで2023年3月20日から開催されたゲーム開発者向けのイベント「Game Developers Conference 2023」(GDC 2023)で、Unreal Engine 5.2に実装予定の新機能群についての発表が行われた。
本記事では、新機能群が紹介されたセッション「New Tools for Building Photoreal Worlds in Unreal Engine 5.2」の情報をもとに、プロシージャル3Dモデル生成分野、物理分野に関する新機能を詳しく紹介していく。なお、マテリアル分野については別記事で詳細を説明する。そちらも要チェックだ。
本セッションでは4名のスピーカーが、Unreal Engine 5.2発表基調講演のデモである「Electric Dream」の映像をもとに各機能の詳細を説明した。

新機能の概要
まずは、新機能郡のおおまかな説明から行っていく。
今回発表されたグラフィックに関する機能アップデートはプロシージャル3Dモデル生成、物理、マテリアルの3分野あり、細かい機能別に見ると、PCG Framework、Chaos Vehicle physics、Niagara Fluid、Tetrahedral Solver、Substrateの5つの機能が紹介された。
さっそく、今回紹介された5つの機能を見ていこう。
- 1.PCG Framework
プロシージャル3Dモデル生成システム
- 2.Chaos Vehicle physics
スケルタルベースの車両の制御機能
- 3.Niagara Fluid
流体シミュレーションシステム
- 4.Tetrahedral Solver
ソフトボディの変形シミュレーション
- 5.Substrate
次世代型物理ベースマテリアル
1 .PCG Framework
Electric Dreamsのデモで作成された壮大な背景CGは、手作業で大量の背景素材を並べたものではなく、UE5.2からの新機能PCG Frameworkのノードによって手続き的に自動配置されたものである。
今回のデモでは、地面、森、山、霧など8種類のタイプのプロシージャル処理が組み合わさっている。

今までは、大規模背景の作成には、Foliage機能での散布などのいくつかの背景制作の機能や、HoudiniEngineが使用されてきたが、今回のPCG Frameworkではノード制御により自由に背景素材を散布したり、スプラインに沿って配置したりと、背景生成がより自由にコントロールできるようになった。
また、Houdini Engineは自由度が高く、最先端のワークフローだったが、一般的にはランタイムでの実行ができないことが最大の欠点であった。しかし、今回提供されたPCG Frameworkはランタイムで実行できることが最大の特徴で、実行ファイルとして書き出した後でも、3Dモデルをプロシージャルに変形することが可能だ。
また、PCG Frameworkは、マテリアルエディタに似たノードグラフエディタを備えており、ジオメトリツールやQuixel Megascansのような他のシステムとの相互運用が可能で、ライブ編集、マルチスレッド、キャッシング、拡張性をサポートしている。
2.Chaos Vehicle
デモにおいて、ジャングルの中を走破していく姿が印象的だった電動ピックアップトラックが、Rivian社の R1T electric truckである。今回Unreal Engine内で実車と同じトルク挙動やサスペンション特性を再現するために、Chaos Vehicle プラグインが使用された。
Chaos Vehicle プラグインは、UE5.0から搭載されている車の挙動を制御するための機能で、UE5のマトリックスのシティデモでも使用されている。UE5.2で使用できる最新のChaos Vehicleプラグインに実装されている車両システムでは、スケルタルメッシュベースの車両セットアップが可能で、車輪の位置から路面の状態を参照して現実の世界と近いトルク挙動やサスペンション特性を再現することができる。

3.Niagara Fluid

今回紹介されたElectric Dreamsのデモには、トラックが池の水を跳ね飛ばしながら進んでいく演出が登場した。これは、UE5.0から登場したNiagaraFluidを改良した、リアルタイム流体シミュレーションシステムを使用している。
アーティスト向けにわかりやすい制御方法で、2Dと3Dの水やガスのシミュレーションをサポートしており、シミュレーション結果をキャッシュしシーケンサー上で再生することも可能だ。
4.Tetrahedral Solver
今回紹介されたElectric Dreamsのデモでは、岩や泥の上を走るときに車両のタイヤが変形するシミュレーションが紹介された。これは、UE5.2からChaosPhysicsに搭載された新機能のTetrahedral Solverにより実現した。

Tetrahedral Solverは、日本語に翻訳すると四面体分析機のような意味合いで、ソフトボディダイナミクスを数式モデル化し、体積を保持したまま外的環境との衝突による形状変化のシミュレーションをCPUベースで行うことができる。

5. Substrate
Substrate は、Unreal Engine ユーザーがオブジェクトの外観や質感をより自由にコントロールできるようにする、マテリアルの新しいオーサリング方式だ。
異なるシェーディングモデルを合成してレイヤー化することでこれまでリアルタイムでは不可能だったビジュアルを実現することができる。
今回発表されたグラフィックスに関する機能は、プロシージャル3Dモデル生成分野と、物理分野、マテリアル分野と3種類に分類できる。
マテリアルの新機能であるSubstrateに関しては、関連記事にて詳しく特集しているため、別記事を参照していただくとして、ここからは、ジェネレーターとフィジックスの2種類の機能について詳しく解説していく。
プロシージャル3Dモデル生成編(前篇)
この章では、PCG Frameworkについて詳しく触れていく。
PCG(Procedural Content Generation=プロシージャルコンテンツ生成)フレームワークは、アーティストがルールとパラメータを定義して、広大で非常に詳細なワールドをすばやく作成できるようにするためのツールセットである。
2021年に発表された技術デモ「Matrix Awakens」では大量のアセットをプロシージャルに配置し、広大な都市シーンが構築されたのだが、製作上の課題が多く残り、より改良されたワークフローを提供すべく開発されたものだという。
Unreal Engine開発元のEpic Gamesが運営する Fortniteでも、世界的に高まるメタバース特需の文脈でUGC(ゲーム内でユーザーが自由にコンテンツを作成運用できる機能)が注目されており、UE5.2と同時にFortnite用のユーザーコンテンツ制作ツール「Unreal Editor for Fortnite」 (UEFN) が提供された。これにより、多くのユーザーによるワールド作成をサポートする必要が出てきたこともノードでの背景制作ツールの開発を後押ししている。
将来的にFortniteにPCG Frameworkを搭載することで、外部処理に依存せずエディタ内で完結し高速かつ非破壊的にアセットの配置や編集を行う狙いがあるようだ。ゲーム内コンテンツをプレイヤーが自由に作れるようになることで、コンテンツ開発の支援者からの資金援助やコンテンツの売買が生じることで、新しいメタバース経済圏が発展することが期待されている。
PCGグラフエディタ

PCG作成ツールのコンセプトは既存のマテリアルエディタに似ており、ノードベースでロジックを記述する「PCGグラフ」と、マテリアルインスタンスに相当する「PCGコンポーネント」が存在する。
シーン内のアセットやアクタにPCGコンポーネントをアタッチしてパラメータを調整することで、植物を森のように配置したり個々の形状を調整したりといったことが可能になる。


PCGグラフによって配置されたポイント群。ランドスケープツールで地形が変わってもリアルタイムに追従する。盛り上がって地面に対して急な勾配になったポイントからは木が生えていない。
PCGグラフはマテリアルやブループリントグラフとほぼ同じ使い勝手をしており、ビューポート上に配置されるPCGコンテンツの「発生源」となるポイントの挙動を確認しながらパラメータを操作できるようになっている。
このポイントにトランスフォームや密度などのメタデータを与えて生成されるアセットの分布やサイズなどをコントロールしていく。Houdiniで頂点やパーティクルに属性を与えて変形や配置をするのに似た感覚だ。
ポイントが持っているデータはProbability Density Functions(確率密度関数)と呼ばれ、数学的なアプローチによって、交差、結合、差分、補間を行うことができるという。
さらに発生源と同じ場所にあるランドスケープメッシュの属性、レイキャストによる地面形状の判定、スプラインに沿っているかどうか、ボリュームやコリジョンの接触判定など多数のデータを参照して最終的にどのようにアセットが配置されるかが決定される。
これらはリアルタイムで最終結果をプレビューすることが可能だ。ノードを置いたりパラメータを変えた瞬間に結果が表示される。

また、マテリアルグラフと同じようにPCGグラフ用の新しいノードを作成する事もできる。ネイティブコードでもブループリントでも作成する事ができるが、ブループリント用には高速で反復処理が行えるようにマルチスレッド化、ループ処理、キャッシュ機能がサポートされている。
キャッシュ処理が行われた場合、グラフの一部を変更してもその部分だけが再計算されるため高速に検証が行えるとのことだ。Julien氏ら開発チームは今後も可能な限りツールをシンプルなものに保ちつつUIやAPIの改良に取り組んでいくとのことである。
PCGグラフエディタ作例の紹介
続いてJean Sebastien Guay氏によるPCGフレームワーク開発初期段階におけるプロトタイプ作成の事例が紹介された。
PCGフレームワークの開発は1年前からスタートし、「Electric Dream」デモを完成させる過程でPCGツールをテストするために、チームはUE5の公式サンプルプロジェクトである「Lyra Sample Game」をベースにした2つの簡単なプロトタイプを作りそれぞれ異なるバリエーションを用意した。




「Infinite Runner」はプレイヤーはゴールへ向けて走ってゆき、1エリアを越えるごとに地形密度と難易度が上がっていく。
実は、この複数のプロトタイプは、たった2人のテクニカルアーティストによって、2週間以内に作られたという。このおかげでPCGフレームワークが実際のゲームプレイ中ランタイムで動作するかが検証できたそうだ。
続いて大規模なワールドのプロトタイプが紹介された。使用されたのはFortniteとシティサンプル、そしてQuixelのアセットだ。PCGのルールに基づきFortniteのマップのバリエーションがランタイムで生成される様子が紹介された。



エリアは2km四方だが、殆ど一瞬で景色が切り替わっていた。プレイヤーの向きとカメラからの距離を元にLODを設定するために、ブループリントによるカスタム階層生成ロジックが構築された。これは近い将来フレームワークにネイティブ実装される予定だという。事前生成を一切行わずにランタイムで生成処理が行われている。
ワールド構築のための地形生成ツールや建物生成ツールのプロトタイプも紹介された。


オープンなフレームワークとして、アーティストやデザイナーが自分たちのプロジェクトのために独自のツールを作成できるような設計を目指しているとの事だ。

「ビルディングジェネレーター」は既存のジオメトリツールやNaniteモジュールとも互換性があり相互運用が可能とのことだ。「Matrix awekend」で使われた建物の作成をプロシージャル手法で再現することを目指しているという。
PCGアセンブリ
PCGフレームワーク内でポイントごとに配置されるPCGリソースの単位を「PCGアセンブリ」と呼ぶ。
PCGノードのインスタンスとして機能し、メッシュやトランスフォームなどのメタデータ付きのポイントとして保存される。基本的にはフォリッジツールで扱うような樹木などのアセットのひと固まりだ。これらがポイントやスプラインに沿ってルールにのっとり配置されていく。

「Electric Dream」を構成する8種類のPCGアセンブリ


最初の4つは近景用のPCGアセンブリ群で、大型と小型の植生、地面、崖である。
PCGアセンブリ同士を隣り合わせに配置する際も、相互に影響しあい、大きな木のアセンブリから小さな木のアセンブリのほうへ倒木を発生させることもできる。


大型の木が生えているエリアとスプラインに沿って作られた地面が接する場所は崖となり高低差が生じる。このような場合崖から木が生えないようにし、代わりに木が低い位置のアセンブリのほうへ倒れこむようにもできる。青い線は倒木が発生する可能性があるエリアを示している。
地面のエリアには木は生えず、代わりに完全に朽ちた倒木が発生するようになる。



遠距離背景用の4つの要素は森、岩山、霧、遠景である。最も複雑なのが森で、大型の木や岩が1次アセンブリとして配置され、その周囲に小さなアセンブリが配置されていく。霧カードはプレイエリアであるワールドの中心を向くように配置され、太陽の向きに応じて苔などが自動で配置されていく。

遠景と近景の間を森アセットで自動的に埋めているところ。各ポイントがそれぞれ森用アセンブリに置き換えられる。
物理編(後編)
ここからは「Electric Dreams」で使われたEVピックアップトラック、R1Tを再現するために使われたUnreal Engine5.2の物理シミュレーション機能を紹介していく。
Chaos Vehicle Plugin

Chaos Vehicle Pluginは、「Matrix Aweakn」デモで街の中を走る大量の車両の挙動を制御するために使用された機能で、運転中ぶつけるたびにだんだん破壊されていく破壊シミュレーション機能を備えている。
最新のバージョンでは、スケルタルメッシュベースの車両セットアップが可能で、トルクモデルを提供して、典型的なトランスミッションベースのドライブトレインを再現することができる。

今回のデモでは、Rivian社のピックアップトラックR1Tをモデル化するにあたって、実車と同じ挙動を再現するためにタイヤ1つにつき1つのモーター駆動のエミュレーションが行われている。
R1Tに存在するオフロード用のモード「ロッククローリングモード」を再現するためにRivian社のエンジニアと協力し、車両の駆動系が実車と同じ挙動をするようにしたという。
・ダイナミックサスペンションが路面の高低差に合わせて上下し車両を安定させる
・路面から浮いたホイールは過回転しないよう空転速度が落ちる
・摩擦係数が最も高いホイールにトルクが集中する
・既存のエンジンブレーキ状態のパラメータを流用しての低速状態の車両コントロール
などの挙動の再現が行われている。
Niagara Fruid

デモで見られたホイールからしぶきが飛び散る様子。Niagaraの事前シミュレーションの結果をホイールの付近で再生して表示している。
Unreal EngineのNiagaraベースの流体システムはアーティストやエンドユーザーにインタラクティブでリアルタイムの水シミュレーションを提供し、2Dおよび3Dのガスと水のシミュレーションをサポートしている。

Niagaraの液体ソルバーはグリッドベースのアルゴリズムであるFluid Implicit Particle Method(通称FLIP)をベースにしている。
シミュレーション結果をキャッシュしてシーケンサーで再生することができるため、リアルタイムコンテンツでも水しぶきや爆発をエフェクトとして活用することができる。
今回のデモではあらかじめ水面とホイールにSDF(符号付き距離フィールド)が作成され、タイヤの周囲のSDFの範囲内に水しぶきと波紋のエフェクトが発生するようになっている。また乾いた岩の上のタイヤの轍はウェットマップが設定され濡れた状態になる。
Tetrahedral


最大の特徴は四面体シミュレーションによって、中身の詰まったソフトボディメッシュの体積を維持したままの変形を可能にしたことだ。
ターゲットアプリケーションに応じて精度とスピードをコントロールするオプションがあるが、あまりに過密なメッシュだとシミュレーション反復回数が足りずノイズが出てしまうのが課題だという。
今回はそれなりのスペックのPCで動作するようバランスを調整した。

路面状態はレイキャストで衝突判定を行い、凹凸に応じた変形が起きる。
計算は低解像度のシミュレーションメッシュを使いCPUベースで行われるためGPUのボトルネックになることはないという。

最後にシミュレーションメッシュの変形結果を、より高解像度のサーフェスに転送してレンダリングする。この方法はNaniteとスケルタルメッシュの両方のジオメトリタイプをターゲットにすることができる。
最終結果では100万ポリゴンを超えるNaniteメッシュのタイヤをリアルタイムで変形させており、この結果もキャッシュしシーケンサーで再生することが可能だ。
Chaos Flesh

実験的機能として人体の筋肉のシミュレーションを行うChaos Fleshも紹介された。まだランタイムで動作はできず結果をキャッシュして再生する形になるが、Metahumanフレームワーク上で利用できるようになる予定だという。


R1Tの外見がクリアコート状に変化する演出で使用されたのが新機能のSubstrateマテリアルだ。これについては別記事で詳しく掘り下げているのでそちらを参照してほしい。
UE5.2の新機能が導く未来
アーティストが簡単に触ることができ、ランタイムで可変するプロシージャル生成機能の発明は、恐らく業界初となる快挙だろう。
これにより、アーティストが規則的な背景の制作に費やす時間が減り、ユニークなキャラクターや背景オブジェクトの制作に集中できるだけではなく、今まで気軽に作れなかったタイプの、キャラクターのアクションでフィールドが変化したり、ランダムに地形が生成される、大規模なゲーム作品を簡単に作成できる時代が訪れる。
また、既存のゲームエンジンの枠を超えた高度な物理シミュレーションにより、外部の専門的なソフトウェアや、専用のレンダラーなしに映画クオリティの映像作品がゲームエンジンでリアルタイムに作れる時代が近づいたといえるだろう。
TEXT_Kerorin4410/ますく(KATASHIRO+)
EDIT_山下一貴 / Itsuki Yamashita(CGWORLD)