City Sample プロジェクトは、デザイナーやデベロッパーなどが、新しいシステムや更新/改善されたシステムを自由に試せるプレイグラウンドです。これらを組み合わせることで、拡張可能でエンゲージメントの高い環境が実現します。 このサンプルは、PlayStation 5 および Xbox Series S|X ハードウェアでリリースされた The Matrix Awakens: An Unreal Engine 5 Experience テクニカル デモと同じアセットおよびデザイン技術を使用してビルドされています。
Unreal Engine 5 の新しい機能と改善された機能により、大規模で高精細なワールドをビルドして、Mass AI と完全に動的なライティングを通じてより現実味を帯びたものにできます。 City Sample はルール プロセッサを使ったプロシージャル生成を通じて設計およびビルドされています。
このサンプル プロジェクトでは次の機能が使用されています。
ワールド パーティションと One File Per Actor を組み合わせることで、レベル ストリーミングとエディタ ワークフローの効率が改善されています。
Nanite により、忠実度の高い仮想化マイクロポリゴン ジオメトリを使用できます。
Lumen により、ハードウェア レイトレーシングを使って動的グローバル イルミネーションと反射が生成されます。
仮想シャドウ マップ システムにより、街に一貫した高解像度のシャドウイングが提供されます。
Mass AI により、交通と群衆の動作とビジュアライゼーションが MetaHuman ライブラリに基づいて管理されます。
車両システムと破壊システムはケイオス物理で駆動します。
街の音は MetaSounds によって追加されます。
パーティクル システムには Niagara が使用されています。
その他多数!
City Sample プロジェクトにアクセスする
City サンプル プロジェクトを使用してプロジェクトを作成するには、次の手順を実行します。
Fab から City サンプルにアクセスし、ライブラリに追加をクリックすると、プロジェクト ファイルが Epic Games Launcher に表示されます。
または、Launcher 版 Fab または UE の Fab プラグインを使用してサンプル プロジェクトを検索できます。
Epic Games Launcher から、[Unreal Engine] > [ライブラリ] > [Fab ライブラリ] の順に移動して、プロジェクトにアクセスします。
サンプル プロジェクトは、互換性のあるバージョンのエンジンをインストールした場合にのみ Fab ライブラリに表示されます。
プロジェクトを作成をクリックし、画面に表示される手順に従ってサンプルをダウンロードし、新規プロジェクトを開始します。
Fab のサンプル コンテンツにアクセスする方法の詳細については、「サンプルとチュートリアル」を参照してください。
推奨システム スペック
City Sample プロジェクトはグラフィックを多用しているため、安定したフレームレートで動作させるには、高性能のビデオ カードとシステムが必要です。 このプロジェクトをソリッド ステート ドライブ (SSD) にインストールすることを推奨します。Nanite と 仮想シャドウ マップのパフォーマンスは処理スピードに依存します。
DirectX 12 のサポートを備えた Windows 10
12-core CPU、3.4 GHz
64 GB のシステム RAM
GeForce RTX-2080 / AMD Radeon 6000 以上
少なくとも 8 GB の VRAM
このサンプル プロジェクトでは、最新のグラフィック ドライバと DirectX 12 を備えたマシンが必要です。 Nanite およびバーチャル シャドウ マップには DirectX 12 が必要です。
City Sample プロジェクトをナビゲートする
街サンプルを開くと、最初にスタートアップ マップが表示されます。このマップでは、このサンプル プロジェクトの使用や推奨されるシステム要件などの情報が画面上に表示されます。 このプロジェクトには、Big City と Small City という 2 つのマップが含まれています。 コンテンツ ブラウザで、[コンテンツ] > [マップ] フォルダからこれらのマップのいずれかを選択します。
Big City (Big_City_LLV) マップは、The Matrix Awakens テクニカル デモ用に生成されたものと同じです。 このマップはリソースを大量に消費するため、推奨スペックよりも低いマシンではパフォーマンスが低下する可能性があります。 このマップのサイズは約 4 キロメートル x 4 キロメートルです。
Small City (Small_City_LVL) は、Big City と同じアセットと設定を使って生成された縮小バージョンです。 Big City で使用されているレンダリング、物理、AI、サウンド、ゲームプレイのすべての機能をユーザーにお見せできるようデザインされています。
City Sample は、ワールド パーティションとデータ レイヤーを使ったワールドの開発とデザインを紹介するものです。 Unreal Engine 4 とは異なり、オブジェクトのロードに従来使用されていたサブレベルは存在せず、 代わりにワールド パーティションによってオブジェクトがオンデマンドでロードされ、シーンが編集可能なそれぞれのパーツに分割されます。
いずれかの街レベルをロードすると、World Partition ウィンドウがエディタ ビューポートの右側にドッキングされており、ワールドの簡素化されたマップが表示されます。
World Partition ツールの 1 つに、シーンを構成するオブジェクトを含むデータレイヤーのリストを提供するデータ レイヤー アウトライナーがあります。 データ レイヤー アウトライナーは、メイン メニューの [ウィンドウ] > [World Partition] > [データ レイヤー アウトライナー] から開くことができます。
データ レイヤーは、このウィンドウから必要に応じて無効にもできます。 リストされているレイヤーの隣にある可視性 (眼) のアイコンを使用して、そのレイヤーのレンダリングを停止するか、チェックボックスを使用してそのレイヤーを完全に無効にできます。
データ レイヤーを選択すると、ウィンドウ下部にそのプロパティが表示されます。
Small City は、最初に開いた際にもすべてのアセットがロードされており、すぐに使用できる準備が整っています。 ただし、Big City を開いた場合、セルはまったくロードされないため、 そうするには、エディタの [World Partition] ウィンドウを使用する必要があります。 セルの一つを右クリックするか、左クリックしてドラッグすることで複数のセルを選択して右クリックし、 選択したセルをロードを選択します
[World Partition] ウィンドウで任意のセルをダブルクリックし、マップ上のその位置にカメラを移動することで、マップ内を簡単にナビゲートできます。
City Sample のゲーム内コントロール
City Sample は、プレイヤーが街の中を歩いたり、運転したり、さらには飛び回ったりすることのできるプレイ エクスペリエンスを提供します。 操作にはキーボードやマウス、またはゲームパッドを使用できます。 それぞれのコントロールを以下に示します。
歩行コントロール
| アイテム名 | コントローラー | キーボードとマウス |
|---|---|---|
前方に移動 | 左ジョイスティック | W |
後方に移動 | 左ジョイスティック | S |
左に移動 | 左ジョイスティック | A |
右に移動 | 左ジョイスティック | D |
注視 | 右ジョイスティック | マウスを移動 |
メニュー | Start (スタート) ボタンまたは Options (オプション) ボタン | O |
飛行モードを有効化 | Y | X |
ダッシュ | 右バンパー | Left ⁺ Shift または L ⁺ Shift |
コントロールを却下 | X | Z |
運転コントロール
| アイテム名 | コントローラー | キーボードとマウス |
|---|---|---|
スロットル | 右トリガー | W |
ブレーキ/バック | 左トリガー | S |
左に曲がる | 左ジョイスティック | A |
右に曲がる | 左ジョイスティック | D |
注視 | 右ジョイスティック | マウスを移動 |
ハンドブレーキ | B | スペースキー |
乗り物の乗降 | A | C |
メニュー | Start (スタート) ボタンまたは Options (オプション) メニュー | O |
コントロールを却下 | X | Z |
飛行コントロール
| アイテム名 | コントローラー | キーボードとマウス |
|---|---|---|
前方に移動 | 左ジョイスティック | W |
後方に移動 | 左ジョイスティック | S |
左に移動 | 左ジョイスティック | A |
右に移動 | 左ジョイスティック | D |
注視 | 右ジョイスティック | マウスを移動 |
高度上昇 | 右トリガー | E |
高度下降 | 左トリガー | Q |
Speed Up | 右バンパー | F |
Speed Down | 左バンパー | R |
メニュー | Start (スタート) ボタンまたは Options (オプション) ボタン | O |
歩行モードを有効化 | Y | X |
コントロールを却下 | X | Z |
メニュー ナビゲーション コントロール
| アイテム名 | コントローラー | キーボードとマウス |
|---|---|---|
メニュー ナビゲーション | 左バンパーおよび右バンパー | [ および ] キー |
メニュー アイテム ナビゲーション上 | D-Pad 上 | 上矢印キー |
メニュー アイテム ナビゲーション下 | D-Pad 下 | 下矢印キー |
設定を調整 | D-Pad 左と D-Pad 右 | 左矢印キーと右矢印キー |
フォト モード コントロール
| アイテム名 | コントローラー | キーボードとマウス |
|---|---|---|
前方に移動 | 左ジョイスティック | W |
後方に移動 | 左ジョイスティック | S |
左に移動 | 左ジョイスティック | A |
右に移動 | 左ジョイスティック | D |
注視 | 右ジョイスティック | マウスを移動 |
高度上昇 | 右トリガー | E |
高度下降 | 左トリガー | Q |
カメラをリセット | Y | - |
オートフォーカス (保持) | A | X |
メニューを閉じる | Start (スタート) ボタンまたは Options (オプション) ボタン | O |
ユーザー インターフェースを非表示 | X | Z |
City Sample のゲーム内メニュー オプション
ゲーム内メニューを開くと、画面右下隅にユーザー インターフェースが表示されます。 これには、ライティング、群衆と交通の密度、Nanite などの機能のビジュアライゼーション オプションを有効にするオプションが含まれています。 また、露出や開口/絞り、被写界深度 (DOF) の設定などの一般的なカメラ機能を備えたフォト専用モードも含まれています。
メニューのナビゲーションにはキーボードの左または右の角かっこキーか、コントローラーの左/右バンパーを使用します。 ゲーム内では以下のメニューを使用できます。
[Photo Mode] メニュー
写真モード メニューには、露出、絞り、フォーカスを設定するための [カメラ] 設定と [フォーカス] 設定が含まれています。
| メニュー設定 | 説明 |
|---|---|
| カメラ | |
Exposure Compensation | レンダリングするフレームの露出の明暗を調整します。 |
絞り値 | カメラ レンズの開口部のサイズを変更します。 F 値を低くすると、レンズの開口部に入るライトの量が増え、フォーカスが高まって被写界深度が形成されます。 |
焦点距離 | カメラで使用される画角を設定します。 焦点距離が大きいとキャプチャされるシーンは狭くなりますが、遠距離のオブジェクトが大きく表示されて被写界深度が増えます。 焦点距離が小さいとキャプチャされるシーンが広がりますが、生じる被写界深度が少なくなります。 |
| カメラ | |
焦点距離 | レンズが画像に焦点を合わせることができる最短距離を設定します。 |
[World Settings] メニュー
ワールド セッティングメニューには、ライティングや、群衆、交通、駐車中の車両の密度、そして多様なビジュアライゼーション オプションに影響を及ぼすさまざまな設定が含まれています。
| メニュー設定 | 説明 |
|---|---|
| シミュレーション | |
夜間モード | 昼間と夜間のライティングを切り替えます。 |
太陽の回転 | 太陽の角度を設定します。 |
| 密度 | |
群衆 | 街の通りを埋める群衆の密度を設定します。 |
交通量 | 街の通りを埋める交通の密度を設定します。 |
駐車中の車両 | 街の通りに駐車している車両の密度を設定します。 |
| ビジュアライゼーション | |
群衆と交通量 | 駐車中の車両 (青色)、走行中の車両 (緑色)、群衆にまぎれた人々 (白色) を置き換えるビジュアライゼーション モードを切り替えます。 |
ポストプロセス フィルター | 「Matrix: Awakens」テクニカル デモで使用されているようなポストプロセス フィルターを切り替えます。 |
Nanite ビュー | Nanite の異なるビジュアライゼーション モードを切り替えます。
|
[Controller Settings] メニュー
コントローラー設定メニューには、歩行、運転、ドローン、フォトの各モードのコントローラー ボタン マッピングが表示されます。 また、このメニューには、資格感度を使ったカメラ制御の設定と、縦軸を反転させる設定も含まれています。
| メニュー設定 | 説明 |
|---|---|
| Camera Control (カメラ制御) | |
ハプティック フィードバック | プレイ中にハプティック フィードバックのバイブレーションを切り替えます。 |
垂直軸を反転 | 動きの縦軸を反転します。 |
注視感度 | 見渡す際に、カメラの動きに適用される感度の度合いを調整します。 |
これらの設定に変更を加えると、キーボードとマウスにも影響が及びます。
ハイエンドなビジュアル要素
City サンプル デモには、大規模なオープン ワールドの構築に向けた Unreal Engine 5 のハイエンドなビジュアル要素がふんだんに盛り込まれています。
そのため、City Sample では DirectX 12 が必要になります。 このプロジェクトの推奨システム仕様を満たしていないシステムでは、一部の機能が限定されるか、まったく機能しません。
Lumen の動的グローバル イルミネーションおよび反射
街の動的グローバル イルミネーションと反射には Lumen が使用されています。 Lumen により、間接的に照らされる多くの領域を含むシーンで、動的でフォトリアルなライティングが実現します。 Lumen は直接ライティングやジオメトリの変化に適応し、新旧の技術を組み合わせることで、リアルタイムの割り当て内で高質の結果を達成します。
Lumen は、次世代コンソールと高性能 PC を前提にビルドされています。
City サンプルでは、スキンメッシュなどの幅広いジオメトリ型をサポートするハードウェア レイ トレーシングを使用しています。 また、ハードウェア レイトレーシングはジオメトリの実際の三角ポリゴンと交差し、低品質のサーフェス キャッシュの代わりに、当たった光線のライティングを評価するオプションが含まれるため、品質をよりうまく、さらに高めることができます。
Nanite を使用するスタティック メッシュの場合、ハードウェア レイ トレーシングは、スタティック メッシュ エディタの Nanite のフォールバックの三角ポ形比率から生成されたフォールバック メッシュ上でのみ動作できます。 Nanite でレンダリングされたフル三角ポリゴン メッシュと、Lumen でレイトレースされたフォールバック メッシュとの間の不一致の対応には、画面トレースが使用されます。
Lumen は、光源としてのエミッシブ マテリアルを含むすべての可動光源で機能します。 スカイライティングでは、Lumen のファイナル ギャザーを使用してスカイ シャドウイングを行います。スカイ シャドウイングでは、屋内領域を屋外よりもはるかに暗くできるため、より多くのライトを反射する明るい色のサーフェスを作り出す際に役立ちます。 City サンプルは、サーフェスからのディレクショナル ライト、スカイ ライトおよびエミッシブ マテリアルのみによって照らされています。
ゲーム内で街を散策する際は、メニューを使ってワールド セッティングにアクセスし、太陽の回転を調整できます。 または、エディタでの作業中にキーボード ショートカットの右 Ctrl + L を使用してマウスをドラッグし、ディレクショナル ライトを移動させることもできます。
この機能の詳細と詳しい仕組みについては、「 Lumen の動的グローバル イルミネーションおよび反射」および「 Lumen の技術的詳細」を参照してください。
Nanite 仮想化ジオメトリ
City サンプルのすべてのスタティックメッシュには Nanite 仮想化ジオメトリが使用されており、従来のレベルの詳細度は使用されていません。 Nanite では、知覚可能なディテールだけをインテリジェントに処理することで、ピクセル スケールのディテールをレンダリングして多くのオブジェクトを処理します。 Nanite は、バーチャル テクスチャリングがテクスチャ ディテールに対して行う操作をジオメトリに対して行います。
Nanite の内部メッシュ形式とレンダリング技術により、ユーザーがワールド内を移動するにつれてその表現が動的に変更され、詳細レベルが瞬時に更新されて、画面にレンダリングされない部分がカリングされます。 プレイヤー カメラにより近いオブジェクトはより詳細に描かれ、遠距離にあるオブジェクトの詳細度は低くなり、画面上のすべての詳細度が均一に保たれます。
City Sample は、ワールド全体に配置された数万にも及ぶオブジェクトの数十億ものポリゴンで構成されています。 Nanite により、スタティック メッシュで Nanite を有効にするだけで、最小限の追加手順、または追加手順なしで、映画品質のアセットをリアルタイムで使用できるようになります。 また、高ポリゴンの ZBrush スカルプトをゲーム内に直接ドロップすることも可能です。
Nanite で可能なビジュアライゼーション モードのいずれかを使用して、シーンでどのようにレンダリングされるかを確認できます。 表示モード メニューの「Nanite ビジュアライゼーション」セクションのビジュアライゼーション リストから選択できます。
プロジェクトでの Nanite の使用と設定方法については、「Nanite 仮想化ジオメトリ」ドキュメントを参照してください。
テンポラルスーパー解像度
数千から数百万に及ぶインスタンスの数十億ものポリゴンを含む大規模なオープン ワールドに必要なジオメトリック ディテールと忠実度により、次世代コンソールや高性能 PC 向けのゲームに対する需要が高まっています。 そのようなレベルの忠実度を実現するために、ゲームではネイティブ 4K 解像度でフレームをレンダリングする前にも、膨大なパフォーマンス バジェットを消費する場合があります。
Temporal Super Resolution (TSR) とは、高密度でオブジェクトが配置された大規模ワールドで必要とされる忠実度を実現するために組み込まれたアンチエイリアス手法です。 テンポラル スーパー解像度では、低入力解像度を受け取り、4K 解像度に近い品質で各フレームをレンダリングすることで、プラットフォームに依存しない一時的なアップスケール アルゴリズムを使用します。 これは、実際にネイティブ 4K をレンダリングすることなく、パフォーマンスを向上しながら、低解像度でレンダリングされたものから 4K に近い品質を取得できることを意味します。
次の比較画像は、ネイティブ 4K でレンダリングされたフレームと、1080p でレンダリングされて 4K にアップスケールされたフレームをキャプチャして、品質とパフォーナンスの違いを示したものです。 この City Sample のショットでは、テンポラル スーパー解像度により、GPU フレーム時間を半分近くに削減しながら、ネイティブ 4K 解像度に近い品質の画像を得ています。
品質の同等性をさらに確認するには、比較スライダーを使ってそれぞれの画像をフル解像度にし、右クリックして各画像を保存できます。
仮想シャドウ マップ
バーチャル シャドウ マップ (VSM) は、Unreal Engine 5 の新しいシャドウ マッピング メソッドで、映画品質のアセットと、Nanite、Lumen、World Partition の各機能を使用する動的ライティングのオープン ワールドで機能する、一貫性のある高解像度シャドウイングを実現するために使用されます。
従来の動的シャドウイング技法は中小規模のワールドのみに限定されることが多かったため、デザイナーやアーティストはパフォーマンスのために品質を犠牲にすることを余儀なくされることがありました。 それとは対照的に、仮想シャドウ マップでは、必要な品質を自動的に適用する、統合された単一のシャドウイング方法が提供されます。 つまり、これまで以上に長い距離で、小さなオブジェクトと大きなオブジェクトの両方に対して、現実味のあるソフトな半影と強調されたコンタクト シャドウにより、シャドウイングの品質を均一に保てるようになります。
街並みを見下ろす次の比較画像では、仮想シャドウ マップとカスケード シャドウ マップとの間の品質と一貫性の違いを示しています。 仮想シャドウ マップでは、大きなディテールから小さなものまで、街全体に一貫してシャドウがかかっています。 尖塔や屋上にある機材など、建物の小さなパーツが細かなディテールでキャプチャされており、遠く離れた場所にある車や大きなオブジェクトにもシャドウがかかっています。
これを、そのようなディテールを持たせる場所をシーン内で選択する必要のあるカスケード シャドウ マップと比較します。 シャドウ マップは、大幅なパフォーマンス コストを回避しつつ、大規模な領域で高忠実度のディテールを実現したい場合には適していません。 遠距離にあるシャドウがシャープでないことと、地面のシャドウが個別のオブジェクトではなく、すべてをシェーディングするように表示されていることに注意してください。
プロジェクトでの使用と設定方法については、バーチャル シャドウ マップに関するドキュメントを参照してください。
ポストプロセス ローカル露出
ローカル露出とは Unreal Engine 5 向けに開発された新たな技法で、アーティストが制御可能なパラメータの範囲内で、ローカルな調整を露出に自動的に適用します。これにより、既存のグローバル露出システムに加えて、ハイライトとシャドウの両方のディテールが維持されます。 動的ライティングを使ったハイ ダイナミック レンジを含むシーンでは、単一のグローバル露出調整を適用するだけでは、ハイライトの白飛びや真っ暗なシャドウを回避するのに十分ではないことがあります。
時刻の変化を表す動的な時間帯システムを含むゲームや、動的にライティングを変更できる City Sample のようなゲームでは、シーン内で、レンダリングされた映像の各部の露出に過不足が生じやすくなります。 例として次の画像を見ると、太陽に照らされた領域は非常に明るくなっており、橋の下の領域にはローカル露出の調整が適用されておらず、多くのシャドウがかかっています。 ローカル露出は、例えばプレイヤーが自由に環境内を探索できる City Sample のように、シーンごとに細かなライティング調整ができない場合に、より一貫性のある結果を得る上で役立つ機能です。
プロシージャルに生成されてオブジェクトが追加された街
City サンプル プロジェクトの街は、SideFX の Houdini ソフトウェアを幅広く使用したプロシージャル生成によって設計および作成されており、街の島の形状から、道路や高速道路、建物、歩道にあるすべての部分に至るまで、街のあらゆる側面が構築されています。公共の標識などがあります 街の「生成」は、カスタム ツールとユーザー提供の入力を使って Houdini 内のみで行われます。
その結果である巨大な点群は、Houdini からエクスポートされ、Unreal Engine 5 にインポートされます。Unreal Engine 5 では、このプロジェクトのために開発された Unreal Engine ツールである Rule Processor により、点群が数千にも及ぶインスタンスに変換されます。
Epic Games での「The Matrix Awakens」の制作時には、完全な詳細度と大規模スケールを必要とするオープン ワールドの街になるプロジェクトとして知られていました。 このプロジェクトは Unreal Engine 5 に装備された多数の新機能を使用しており、制作時には、他の多くの部署がコンテンツを作成して、これらを同時に機能させる必要があると考えられていました。 比較的小さな環境チームと、プロジェクトのターゲットとなるディテールの量は、Nanite のおかげで典型的なポリゴン バジェットの制限が取り除かれ、ワールド内でインスタンス化を数千回行うことができるモジュラー アセットが必要でした。
街の形状、道路網、高速道路の接続、建物の配置を生成するための準備作業は Houdini によって処理され、Unreal Engine 5 で最終的な街のプロシージャル生成に使用できる大量のメタデータが提供されます。 Houdini でこれらのツールを使用することで、デザイナーは短期間で無数の異なる街を生成できるようになりました。
生成された街のデータには、交通と群衆のシミュレーションを駆動する AI システムなど、Unreal Engine 5 の他のツールで使用可能なあらゆるタイプのメタデータが含まれます。 建物はボリュームから構築されています。 Building Generator では、形状文法言語 (Shape Grammar Language) を使って建物のボリュームをスタイリングします。 異なる建物スタイルには、それぞれ異なる一連のルールが適用されています。 また、特定のボリュームを 2 つの異なるスタイル (建物の下部用と残りの上部セクション用) に分割することもできます。
City Sample プロジェクトには、Houdini と Houdini Engine を使って独自の街をプロシージャルに生成するために必要なソース ファイルが含まれています。 City Building Generator アセットをエンジン内で Houdini とともに使用するには、SideFX からのライセンス許諾が必要になります。 Houdini ソース ファイルは、CitySample のルート フォルダにあり、CitySample_HoudiniFiles.zip という名前が付いています。
City Sample は次のバージョンを使って開発されています。
Houdini: 18.5.532
Houdini Engine: 3.5.2
これらのファイルを使って道路や高速道路網を含む独自の街を生成するためのウォークスルー ガイドは近日公開予定です。
Houdini では、上から下に流れるノード グラフが使用されています。 それぞれのノードは、ちょうど Unreal Engine マテリアル グラフのように、その入力でタスクを実行し、他のノードに渡される結果を出力するプログラムです。 メインの街並みは、次の構造に従った各ステージでビルドされています。
街のレイアウト
道路
高速道路
区画と歩道
交通、建物、地面
公共物 (標識など)、デカール、オーディオ
各パーツは順序依存性に従ってビルドされています。例えば、高速道路は道路網に依存しており、建物を配置する際は、建物を高速道路の上に配置してしまわないように、まず高速道路を構築する必要があります。
街をビルドして、プロシージャルに生成された、ワールドを構成するすべてのインスタンスをサポートするには、Nanite を最大限に活用する必要があります。 つまり、インスタンスを使ってこれを行うために、メガ メッシュを作成できます。また、それが必要になる場合もあります。 街中の各建物は数百ものインスタンスによって構成されており、標識やデカール、ゴミ箱などの道路上にあるすべての公共物は Nanite を使用しています。 街中で使用されているカスタム ジオメトリはほとんどなく、これにより、プロジェクトのメモリ使用量が、設定されたバジェット内に確実に維持されています。
ただし、ある程度の量のカスタム ジオメトリはどうしても必要になります。 コリジョン、交通道路デック、道路標識、非矩形の建物のカスタム屋上には、カスタム メッシュが使用されています。
コラボレーションを通じて大規模ワールドを構築する
Unreal Engine 5 では、プロジェクト内でのアセットとシーンの管理および編集を共同で行いやすい環境が提供されます。
One File Per Actor
City サンプルのワールド全体で One File Per Actor (OFPA) システムが使用されています。 このシステムでは、データを単一のマップ ファイルに書き込むのではなく、レベル内に配置されたアクタの独自のインスタンスごとに個別のファイルを作成します。
レベル エディタで作業するデベロッパーのワークフローは変わりません。 以前と同様に、単一のマップ ファイルを開いて変更することでレベルを編集できます。 ただし、バージョン管理システムを使って共同作業を行う場合は、基盤となるシステムが各アクタを個別のファイルとして追跡するようになったため、デザイナーやアーティストは、変更のコミット時に競合を引き起こすことなく、同じレベルの異なるオブジェクトやレイヤーを編集できます。
プロジェクトでのこの機能の設定と使用については、「One File Per Actor」を参照してください。
World Partition
大規模なオープン ワールドを想定したゲームの開発では、マップを分割し、マップを進むごとにロード/アンロード可能な多数の小さなセクションに分ける必要があります。 数キロメートルに及ぶ領域を一度にロードしてオブジェクトを追加することが常に可能なわけではありません。 従来の開発ツールでは、デベロッパーはレベルを手動でサブレベルに分割して、これらのストリーミング入出力時には慎重に管理する必要がありました。 また、ワールドの各セクションを相互に関連付けて表示することも困難でした。
World Partition システムではこの問題を解決し、レベル内のオブジェクトをグリッド位置に基づいて各セルに分割することで、プロセスを簡素化します。 各セルではそれぞれに含まれるコンテンツが管理され、オブジェクトの追加と削除に応じて調整されるため、デベロッパーはアセットを手動で管理する必要がありません。 ゲームプレイ時は、プレイヤーがワールド内を移動するにつれて、ワールド パーティションによってセルが自動的にロード/アンロードされます。
オープン ワールド プロジェクトでのこのシステムの設定と使用については、World Partition を参照してください。
データレイヤー
ワールド パーティション システムでは、自由にロード/アンロード可能なセルにレベルが分割されます。データ レイヤーは、ワールド パーティション内のシステムで、必要に応じてロード/アンロード可能なレイヤーにオブジェクトを分類するものです。 データ レイヤーは、コンテンツ管理にデベロッパーによる多くのキュレーションを必要とした Unreal Engine 4 の旧レイヤー システムを置き換えるものです。
City Sample では、プロシージャルなものや屋上のプロップ、高速道路など、ワールド内の異なる一連のオブジェクトにデータ レイヤーを分類して使用しています。 データ レイヤー アウトライナには、シーン内のオブジェクトを含むすべてのレイヤーのリストが含まれます。 ここで、これらのレイヤーを使ってオブジェクトを追加または削除したり、可視性を設定したりできます。
レイヤーを設定し、シーン内のオブジェクトの整理に使用する方法については、「World Partition - データ レイヤー」を参照してください。
現実世界のシステムをシミュレートする
MetaHumans
City Sample には、MetaHuman とアクセサリのサブセットから取り入れた数千体にも及ぶデジタル ヒューマン キャラクターが含まれています。 MetaHuman キャラクターは MetaHuman Creator を使用して生成されています。 MetaHuman Creator を使用することで、一定の品質で、多様でありながらそれぞれ固有のフォトリアルなキャラクターを多数生成することができます。
MetaHuman Creator を使用すると、プレイ可能なキャラクターとプレイ不可のキャラクター (NPC) として使用可能な映画品質のキャラクターをデザインして開発できます。 例えば次の画像では、背景の NPC が、プレイ可能なヒーロー キャラクター IO と同じ品質で描写されていることがわかります。
MetaHuman キャラクターは完全にリギング済みで、アニメートする準備が整っています。 また、MetaHuman キャラクターには品質とパフォーマンスのバランスを取るための独自の詳細度 (LOD) も含まれており、アニメートされた映画品質のキャラクターで街を埋め尽くすことが可能になります。
ゲーム内でドローン モードを使用すると、数百もの群衆キャラクターを見ることができます。 最も近いものは完全にリギングされてアニメートされた MetaHuman キャラクターで、より遠い距離にあるものは、MetaHuman からカスタム生成されて頂点アニメート化されたスタティック メッシュです。
映画品質のデジタル ヒューマンを独自に作成するには、MetaHuman Creator を使用してください。 MetaHuman Creator の詳細と、MetaHuman を独自の Unreal Engine 5 プロジェクトで使用する方法については、MetaHuman のドキュメントを参照してください。
AI (人工知能) システム
Unreal Engine 5 の人工知能機能により、街とワールドにさらなるリアリズムを加えることができます。 これらの多くはエンジンの新機能であり、現時点では実験段階の機能です。 このプロジェクトにおける AI 機能の動作については、City Sample を探索して試してください。
Unreal Engine 5 向けに開発されたこれらの機能と、City サンプルでの使用の詳細については、人口知能に関するドキュメントを参照してください。
MassEntity
MassEntity は、シーン内での数千もの AI エージェントのシミュレーションなど、パフォーマンスがカギとなるケース (AI ドメインには限定されない) において役立つデータ指向の計算のフレームワークを提供するものです。 また、これによってワールド内の各エンティティの持続性も確実になります。 このシステムは、City Sample の交通 (Traffic) と群衆 (Crowd) の両システムで使用されています。
Mass Spawner は、ワールドに Mass Entity を取り込むためのエントリ ポイントとなるものです。 Mass スポナーは、スポーンされるエンティティの型と、スポーンされる場所の 2 つのことを指示します。 City Sample では複数のスポナーが使用されており、群衆、交差点、交通、駐車中の車両のそれぞれに向けて一つずつ用意されています。
レベル内に配置されているいずれかの Mass スポナー アクタを選択すると、詳細パネルには対象のエンティティの使用に関する情報が表示されます。 エンティティ タイプ (1) ではスポーンされるエンティティのタイプを指定し、スポーン データ ジェネレータ (2) ではワールド内のスポーン位置を指定します。
Mass スポナーによってスポーンするものを指定する際には、Mass Entity の定義という新しいアセット型を作成してください。 これにより、ビジュアル要素や詳細度 (LOD)、動作など、スポーンされるエンティティの「特徴」が定義されます。
Mass スポナーは、スポーンするものを指定するために、新しい Mass Entity の定義データ アセット タイプを使用します。 このデータ アセットは、特徴、動作やビジュアル要素、詳細度 (レベル) など、スポーンされるエンティティの特徴を定義します。
エンティティのスポーン位置を定義する際は、使用する群衆と交通の両システムに向けて、ZoneGraph に沿ったスポーン ポイントを生成するために、Houdini から得たプロシージャル データを介して提供される ZoneGraph (次のセクションを参照) に沿った分布が使用されます。
スポナーを使った駐車中の車両については、プロシージャル データから場所の点群が街路に沿って生成されます。
Mass Spawner では、ワールド内のエンティティに向けた多くの分布可能性をサポートしています。 次の例では、ワールド全体を通じてスポーンされた交通システムと群衆システムのビジュアライゼーションを示しています。 緑色は運転中の車、青色は駐車中の車、白色は群衆を表しています。
この機能の詳細については、Unreal Engine 5 ドキュメントの「MassEntity」を参照してください。
ZoneGraph
ZoneGraph は、ポイントバイポイントの廊下構造に従う AI 向けの軽量なデザイン駆動型フローです。 これには、AI 動作に利用可能な意義のある静的および動的タグを格納できます。
ゾーン形状コンポーネントはアクタを配置パネルからワールドに追加できます。 Big City レベルの World Outliner で「Zone Shapes」フォルダを見ると、これらがどのように使用されているかを確認できます。
StateTree
StateTree は、決定木構造に直感的なユーザー インターフェースが表示される汎用的な新しいステート マシンです。 StatTree によって群衆 (Crowd) の動作が定義されます。 StateTree アセットは、Crowd の Mass Entity Definition データ アセットに直接リンクされています。
これらの StateTree アセットは、各 Crowd の Mass Entity Definition データ アセットで指定されています。 交通 (Traffic) システムは StateTree の動作上では実行されません。 たとえば、Content/AI フォルダにある CrowdStateTree という名前のデータ アセットを参照してください。
この機能の詳細については、Unreal Engine 5 ドキュメントの「StateTree」を参照してください。
スマートオブジェクト
スマート オブジェクトとは、レベル内に配置された、AI エージェントおよびプレイヤーとのインタラクションが可能なアクタのコレクションです。このシステムは独自に構成可能で、今までにないインタラクティブ性をシーンにもたらすものです。
これらは開発済みの街の一部としてはシッピングされませんでしたが、サンプル プロジェクトに含まれる MassCrowd テスト マップで、これらを探索することができます。
この機能の詳細については、Unreal Engine 5 ドキュメントの「スマート オブジェクト」を参照してください。
Chaosビークル
City サンプルの車両は Chaos ビークル システムによって駆動されます。 この物理ベースのシステムにより、アーケード レースや、よりリアルなハンドル操作を必要とするゲームなど、さまざまなゲームプレイに向けたスタイルの車を設定することができます。
また、City Sample では、プレイヤーはさまざまな四輪車を運転することができ、それぞれの車のハンドル操作には独自の物理設定を施すことができます。
Chaos Vehicle システムではコントロールリグを使った堅牢な変形システムをサポートしており、それぞれの車両に特有の変形を適用することができます。
Unreal Engine 5 での車両の設定と使用については、「Chaos ビークル」を参照してください。
車のハンドル操作を調整する
それぞれのビークル ブループリントには、エンジン トルク、トランスミッション、ギアリング、質量、重心など、ビークルの物理的および力学的プロパティを定義する ビークル移動コンポーネントが含まれています。 ビークル移動コンポーネントには、前輪と後輪用の、データのみのホイール ブループリントの配列も含まれています。 ホイール ブループリントでは、車両のハンドル操作とブレーキに関連する多くのプロパティのほか、タイヤ摩擦やサスペンション、ブレーキ トルクなどの設定を制御します。
各車両のビークル データ ブループリントは、Content/Vehicles/[Vehicle_Name] フォルダにあります。 例: Content/Vehicle/vehCar_vehicle02。
運転可能な車両のブループリントの名前の末尾に「_Sandbox」が付いています (例: BP_vehCar_vehicle02_Sandbox)。これらの車両は、レベル内に配置して運転することができます。
動的なビークル変形
City サンプルの車両は、Chaos ビークル システムとコントロール リグを活用して、各車両に固有の変形を適用します。 これは、車両のドライビング ダイナミクスを活用することで、それぞれのクラッシュが動的に作成されることを意味しています。 コリジョンは車両の本体周辺に配置された複数の物理本体を使用して検出され、コンストレイント可塑性によって、指定されたしきい値を超えた場合に、物理コンストレイントによる永続的な変形が可能になります。
車両のコントロールリグには、単一の軸に沿って固定された可動コンストレイントが含まれます。 その軸に沿ってコンストレイントが移動すると、コンストレイントによって車のボディ パーツが変形します。 City Sample では、動的な変形を適用するために、運転可能なすべての車両に単一のコントロールリグが使われています。 これは CR_Frame_Destructible という名前で、コンテンツ ブラウザの Content/Vehicle/Animation フォルダにあります。
すべての車両に単一のコントロール リグが使用されているため、運転可能な異なる車両を切り替えて、その変形をプレビューするには、プレビュー メッシュ割り当てスロットを使用することをお勧めします。
プロシージャル オーディオおよび MetaSound
Unreal Engine 5 では、ビジュアル要素、ゲーム メカニクス、オープン ワールドの構築を自由に行えるツールに加えて、MetaSounds によってゲームのオーディオをより細かく制御することができます。
MetaSounds を使用すると、オーディオ デザイナーは、完全な機能を備えたデジタル信号処理 (DSP) グラフと、事前に設計されたサウンドの再生でも、リアルタイムでの合成でも、サウンドモジュレーションとイベントのサンプルアキュレートなコントロールを利用できます。これらの機能はすべて、ゲームデータ(コードとブループリントの両方)に反応するための堅牢なインターフェースによって実現されています。
MetaSounds は、デザイナーによる MetaSound グラフの定義と再利用を可能にするプリセット システムやコンポジション システムなどのプロダクション効率性ツールを通じて、デザイナーを支援します。 また、これによってチーム間で MetaSounds にアクセスできるようになると同時に、ワークフローの合理化が可能な、強力でカスタマイズされた MetaSound ノードのライブラリを構築できるようになります。
開発済みの MetaSounds システムに加えて、City Sample には、プロシージャル生成されたワールドにサウンドを通じてさらなるリアリズムを加えるための、実験段階のデザイン、ツール、システムが含まれています。
このシステムの詳細については、Unreal Engine 5 ドキュメントの「MetaSounds」を参照してください。
車両のオーディオ
運転可能な車両
City サンプルの運転可能な車両では、MotoSynth と呼ばれる実験的機能を使用しています。 これは、車の加速音と減速音のレコーディングを活用し、加速と減速の動きをリアルタイムで細やかに再合成するグラニュラー ベースのエンジン シミュレーション ツールです。 さらに、運転可能な車両では MetaSounds を使って、アイドル音のループやドリフトの音、RPM の限界音などの装飾的なエンジン サウンドを再現します。
NPC 車両
NPC (プレイ不可のキャラクター) 車両も MetaSounds によって全体的に強化されています。 これらは、シードされたランダム化のプロシージャル オーディオ生成機能を活用するものです。 従来のピッチ ブレンドされたエンジン ループ、合成されてフィルターされたノイズ、合成されたサブトーンのプロシージャルにランダム化されたミックスは、NPC車両のスピードに応じて動的に調整されます。
音楽の再デザイン
MetaSounds は強力なデザイン環境であり、デザイナーは既存のサウンドと音楽マテリアルをキットバッシュして再使用できます。City Sample では、デモのために作成された元の音楽ステムを再使用して 2 つのリミックス バリエーションが作成されており、クラブ ミュージックを連想させるナイトモード バリアントなど、まったく新しいバリエーションとなっています。
街のサウンドスケープとプロシージャルなオーディオ生成
ワールド オーディオ データ システムと Houdini での作業
World オーディオ データ システムは実験段階にある一連のツールで、プロシージャル データの伝播と設計を扱う際の中心的な機能です。 これには、Houdini の点群メタデータを変換して Soundscape ColorPoint 空間ハッシュマップにベイクするためのカスタム プロセッサ ルールが含まれており、キャッシュされたハッシュマップデータは、16 平方キロメートルの Big City 全体に広がる World Partition とともにストリーミングで入出力するよう設計された個別のアクタに配布されます。
これらの World オーディオ データ アクタにはカラーポイント キャッシュが含まれ、メモリの使用量を低く抑えるためにワールド パーティション ストリーミングを活用します。
サウンドスケープのデザイン
街中のアンビエント サウンドのほとんどは、実験段階にあるステートベースのプロシージャル アンビエント サウンド システム、Soundscape によって制御されています。 サウンドスケープを使用することで、デザイナーはリスナー周辺のサウンドのスポーン動作を定義することができます。これには ColorPoint メタデータに基づいた条件付きスポーン動作も含まれます。 City Sample でスポーンされるサウンドのほとんどは、World Audio Data システムを通じてキャッシュされて動的にロードされたColorPoint データに基づいています。 これにより、デザイナーは空間メタデータに基づいて、スポーンを許可するサウンドのタイプを指定できます。例えば、高速道路周辺のアンビエント サウンドや、大きな道路のアンビエント交通ノイズなどです。
サウンドスケープでは、ColorPoint データに加えて、Mass AI プロセッサを介して動的な ColorPoint データがサウンドスケープに入力される処理をリッスンし、アイドル中の MetaHuman と NPC 車両の位置を継続的に追跡します。 これらの位置は、環境内のクラクション音や MetaHuman の声など、さまざまな音声に使用されます。 サウンドスケープは、活気あふれる街に仕上げる上で重要な役割を果たします。
独自のプロシージャルな街のガイドを作成する
City サンプル プロジェクトには、Houdini と Unreal Engine 5 を使って独自のプロシージャルな街を生成するために必要なすべてのソース ファイルが含まれています。
このガイドの最初のガイドでは、Houdini を使用してプロシージャル データの設定と生成を行い、独自の道路網、高速道路システム、建築物ゾーンなどを含む独自の街を作成するために使用します。 その後、Houdini からエクスポートしたデータを使用して、Unreal Engine のツールと機能を使用して街を取り込み、ビルドします。
City サンプル クイック スタート - Houdini を使用して街と高速道路を生成する
Houdini と City サンプル ソース ファイルを使用して Unreal Engine でプロシージャルな独自の街を生成するためのガイドを紹介します。
City サンプル クイック スタート - Unreal Engine 5 で街と高速道路を生成する
Houdini で生成されたプロシージャルなデータを使用して Unreal Engine 5 で街を作成するためのガイドです。