City サンプル プロジェクトは、デザイナーやデベロッパーなどが、新しいシステムや更新/改善されたシステムを自由に試せるプレイグラウンドです。これらを組み合わせることで、拡張可能でエンゲージメントの高い環境が実現します。このサンプルは、PlayStation 5 と Xbox Series S|X ハードウェア向けにリリースされたテクニカル デモ「The Matrix Awakens:An Unreal Engine 5 Experience」で使用されているアセットとデザイン技法を使ってビルドされています。
Unreal Engine 5 の新しい機能と改善された機能により、大規模で高精細なワールドをビルドして、Mass AI と完全に動的なライティングを通じてより現実味を帯びたものにできます。City サンプル はルール プロセッサを使ったプロシージャル生成を通じて設計およびビルドされています。
このサンプル プロジェクトでは次の機能が使用されています。
World Partition と One File Per Actor を組み合わせることで、レベル ストリーミングとエディタ ワークフローの効率が改善されています。
Nanite により、忠実度の高い仮想化マイクロポリゴン ジオメトリを使用できます。
Lumen により、ハードウェア レイトレーシングを使って動的グローバル イルミネーションと反射が生成されます。
仮想シャドウ マップ システムにより、街に一貫した高解像度のシャドウイングが提供されます。
Mass AI により、交通と群衆の動作とビジュアライゼーションが MetaHuman ライブラリに基づいて管理されます。
車両システムと破壊システムはケイオス物理で駆動します。
街の音は MetaSounds によって追加されます。
パーティクル システムには Nanite が使用されています。
その他
City サンプル プロジェクトにアクセスする
City サンプル プロジェクトは、Epic Games Launcher の [Samples (サンプル)] タブ、または Unreal Engine マーケットプレイス からダウンロードできます。
推奨システム スペック
City サンプル プロジェクトはグラフィックを多用しているため、安定したフレームレートで動作させるには、高性能のビデオ カードとシステムが必要です。このプロジェクトをソリッド ステート ドライブ (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 が必要です。
低スペックのシステムでは、ビューポート画面のパーセンテージ設定を調整して、レベル エディタ ビューポートの解像度を下げることでパフォーマンスを向上できます。これは、エディタ ビューポートの左上隅にある [Viewport Options (ビューポート オプション)] から、[Screen Percentage (スクリーン比率)] スライダーを使用して設定できます。
City サンプル プロジェクトをナビゲートする
City サンプル を開くと、最初に スタートアップ マップが表示されます。このマップでは、このサンプル プロジェクトの使用や推奨されるシステム要件などの情報が画面上に表示されます。このプロジェクトには、「Big City」と「Small City」の 2 つのマップが含まれています。コンテンツ ブラウザで、「Content > Map」フォルダからこれらのマップのいずれかを選択します。
Big City (Big_City_LLV) マップは、The Matrix Awakens テクニカル デモ向けに生成されたものと同じです。このマップはリソースを大量に消費するため、推奨スペックよりも低いマシンではパフォーマンスが低下する可能性があります。このマップのサイズは約 4 キロメートル x 4 キロメートルです。
Small City (Small_City_LVL) は、Big City と同じアセットと設定を使って生成された縮小バージョンで、Big City で使用されているレンダリング、物理、AI、サウンド、ゲームプレイのすべての機能をユーザーにお見せできるようデザインされています。
City サンプル は、World Partition とデータ レイヤーを使ったワールドの開発とデザインを紹介するものです。Unreal Engine 4 とは異なり、オブジェクトのロードに従来使用されていたサブレベルは存在せず、代わりにWorld Partitionによってオブジェクトがオンデマンドでロードされ、シーンが編集可能なそれぞれのパーツに分割されます。
いずれかの City レベルをロードすると、[World Partition] ウィンドウがエディタ ビューポートの右側にドッキングされており、ワールドの簡素化されたマップが表示されます。
World Partition のツールの一つに、シーンを構成するオブジェクトが含まれるデータ レイヤーのリストを提供する データ レイヤー アウトライナ があります。これを開くには、メイン メニューから [Window] > [World Partition] > [Data Layers Outliner] を選択します。
データ レイヤーは、このウィンドウから必要に応じて無効にもできます。リストされているレイヤーの隣にある 可視性 を示す目のアイコンを使って、そのレイヤーのレンダリングを停止するか、チェックボックスを使ってそのレイヤーを完全に無効にできます。
データ レイヤーを選択すると、ウィンドウ下部にそのプロパティが表示されます。
Small City は、最初に開いた際にもすべてのアセットがロードされており、すぐに使用できる準備が整っています。ただし、Big City を開いた場合、セルはまったくロードされないため、ユーザー自身がエディタの [World Partition] を使ってこれを行う必要があります。セルの一つを右クリックするか、左クリックしてドラッグすることで複数のセルを選択して右クリックし、[Load Selected Cells (選択したセルをロード)] を選択します。
[World Partition] ウィンドウで任意のセルをダブルクリックし、マップ上のその位置にカメラを移動することで、マップ内を簡単にナビゲートできます。
City サンプル のゲーム内コントロール
City サンプル は、プレイヤーが街の中を歩いたり、運転したり、さらには飛び回ったりすることのできるプレイ エクスペリエンスを提供します。操作にはキーボードやマウス、またはゲームパッドを使用できます。それぞれのコントロールを以下に示します。
歩行コントロール
アイテム名 |
コントローラー |
キーボードとマウス |
---|---|---|
Move Forward (前進) |
左ジョイスティック |
W キー |
Move Backward (後退) |
左ジョイスティック |
S キー |
Move Left (左に移動) |
左ジョイスティック |
A キー |
Move Right (右に移動) |
左ジョイスティック |
D キー |
Look (見渡す) |
右ジョイスティック |
マウスを移動 |
Menu (メニュー) |
Start (スタート) ボタンまたは Options (オプション) ボタン |
O キー |
Enable Flying Mode (飛行モードの有効化) |
Y ボタン |
X キー |
Sprint (ダッシュ) |
右バンパー |
Left ⁺ Shift または L ⁺ Shift |
Dismiss Controls (コントロール解除) |
X ボタン |
Z キー |
飛行コントロール
アイテム名 |
コントローラー |
キーボードとマウス |
---|---|---|
Throttle (スロットル) |
右トリガー |
W キー |
Brake/Reverse (ブレーキ/バック) |
左トリガー |
S キー |
Steer Left (左にステアリング) |
左ジョイスティック |
A キー |
Steer Right (右にステアリング) |
左ジョイスティック |
D キー |
Look (見渡す) |
右ジョイスティック |
マウスを移動 |
Handbrake (ハンドブレーキ) |
B ボタン |
スペース キー |
Enter/Exist Vehicle (車の乗り降り) |
A ボタン |
C キー |
Menu (メニュー) |
Start (スタート) ボタンまたは Options (オプション) メニュー |
O キー |
Dismiss Controls (コントロール解除) |
X ボタン |
Z キー |
飛行コントロール
アイテム名 |
コントローラー |
キーボードとマウス |
---|---|---|
Move Forward (前進) |
左ジョイスティック |
W キー |
Move Backward (後退) |
左ジョイスティック |
S キー |
Move Left (左に移動) |
左ジョイスティック |
A キー |
Move Right (右に移動) |
左ジョイスティック |
D キー |
Look (見渡す) |
右ジョイスティック |
マウスを移動 |
Altitude Up (Ascend) (上昇) |
右トリガー |
E キー |
Altitude Down (Descend) (下降) |
左トリガー |
Q キー |
Speed Up (加速) |
右バンパー |
F キー |
Speed Down (減速) |
左バンパー |
R キー |
Menu (メニュー) |
Start (スタート) ボタンまたは Options (オプション) ボタン |
O キー |
Enable Walking Mode (歩行モードの有効化) |
Y ボタン |
X キー |
Dismiss Controls (コントロール解除) |
X ボタン |
Z キー |
メニュー ナビゲーション コントロール
アイテム名 |
コントローラー |
キーボードとマウス |
---|---|---|
Menu Navigation (メニュー ナビゲーション) |
左バンパーおよび右バンパー |
[ および ] キー |
Menu Item Navigation Up (メニュー項目を上に移動) |
D-Pad 上 |
上矢印キー |
Menu Item Navigation Down (メニュー項目を下に移動) |
D-Pad 下 |
下矢印キー |
Adjust Settings (設定変更) |
D-Pad 左と D-Pad 右 |
左矢印キーと右矢印キー |
フォト モード コントロール
アイテム名 |
コントローラー |
キーボードとマウス |
---|---|---|
Move Forward (前進) |
左ジョイスティック |
W キー |
Move Backward (後退) |
左ジョイスティック |
S キー |
Move Left (左に移動) |
左ジョイスティック |
A キー |
Move Right (右に移動) |
左ジョイスティック |
D キー |
Look (見渡す) |
右ジョイスティック |
マウスを移動 |
Altitude Up (Ascend) (上昇) |
右トリガー |
E キー |
Altitude Down (Descend) (下降) |
左トリガー |
Q キー |
Reset Camera (カメラをリセット) |
Y ボタン |
|
Auto Focus (Hold) (自動フォーカス、維持) |
A ボタン |
X キー |
Close Menu (メニューを閉じる) |
Start (スタート) ボタンまたは Options (オプション) ボタン |
O キー |
Hide User Interface (UI の非表示) |
X ボタン |
Z キー |
City サンプル のゲーム内メニュー オプション
ゲーム内で メニュー を開くと、画面右下隅にユーザー インターフェースが表示されます。これには、ライティング、群衆と交通の密度、Nanite などの機能のビジュアライゼーション オプションを有効にするオプションが含まれています。また、露出や開口/絞り、被写界深度 (DOF) の設定などの一般的なカメラ機能を備えたフォト専用モードも含まれています。
メニューのナビゲーションにはキーボードの 左 / 右の角かっこ ([ ]) キーか、コントローラーの 左 / 右バンパー を使用します。ゲーム内では以下のメニューを使用できます。
Photo Mode メニュー
[Photo Mode (フォト モード)] メニューには、露出、開口、フォーカスを調整するための [Camera (カメラ)] 設定と [Focus (フォーカス)] 設定が含まれています。
メニュー設定 |
説明 |
|
---|---|---|
Camera (カメラ) |
||
Exposure Compensation (露出補正) |
レンダリングするフレームの露出の明暗を調整します。 |
|
Aperture (開口) |
カメラ レンズの開口部のサイズを変更します。F 値を低くすると、レンズの開口部に入るライトの量が増え、フォーカスが高まって被写界深度が形成されます。 |
|
Focal Length (焦点距離) |
カメラで使用される画角を設定します。焦点距離が大きいとキャプチャされるシーンは狭くなりますが、遠距離のオブジェクトが大きく表示されて被写界深度が増えます。焦点距離が小さいとキャプチャされるシーンが広がりますが、生じる被写界深度が少なくなります。 |
|
Camera (カメラ) |
||
Focus Distance (撮影距離) |
レンズが画像に焦点を合わせることができる最短距離を設定します。 |
World Settings メニュー
[World Settings (ワールドセッティング)] メニューには、ライティングや、群衆、交通、駐車中の車両の密度、そして多様なビジュアライゼーション オプションに影響を及ぼすさまざまな設定が含まれています。
メニュー設定 |
説明 |
|
---|---|---|
Simulation (シミュレーション) |
||
Night Mode (夜間モード) |
昼間と夜間のライティングを切り替えます。 |
|
Sun Rotation (太陽の軌道) |
太陽の角度を設定します。 |
|
Density (密度) |
||
Crowd (群衆) |
街の通りを埋める群衆の密度を設定します。 |
|
Traffic (交通) |
街の通りを埋める交通の密度を設定します。 |
|
Parked Cars (駐車中の車両) |
街の通りに駐車している車両の密度を設定します。 |
|
Visualizations (ビジュアライゼーション) |
||
Crowd & Traffic (群衆と交通) |
駐車中の車両 (青色)、走行中の車両 (緑色)、群衆にまぎれた人々 (白色) を置き換えるビジュアライゼーション モードを切り替えます。 |
|
Post-processing Filter (ポストプロセス フィルター) |
ポストプロセス フィルターを「Matrix:Awakens」テクニカル デモで使用されているものと似たものに切り替えます。 |
|
Nanite View (Nanite ビュー) |
Nanite の異なるビジュアライゼーション モードを切り替えます。
|
Controller Settings メニュー
[Controller Settings (コントローラー設定)] メニューには、歩行、運転、ドローン、フォトの各モードのコントローラー ボタン マッピングが表示されます。また、このメニューには、資格感度を使ったカメラ制御の設定と、縦軸を反転させる設定も含まれています。
メニュー設定 |
説明 |
|
---|---|---|
Camera Control (カメラ制御) |
||
Haptic Feedback (ハプティック フィードバック) |
プレイ中にハプティック フィードバックのバイブレーションを切り替えます。 |
|
Invert Vertical Axis (縦軸を反転) |
動きの縦軸を反転します。 |
|
Look Sensitivity (視覚感度) |
見渡す際に、カメラの動きに適用される感度の度合いを調整します。 |
これらの設定に変更を加えると、キーボードとマウスにも影響が及びます。
ハイエンドなビジュアル要素
City サンプル デモには、大規模なオープン ワールドの構築に向けた Unreal Engine 5 のハイエンドなビジュアル要素がふんだんに盛り込まれています。
そのため、City サンプル では DirectX 12 が必要になります。このプロジェクトの 推奨システム スペック を満たさないシステムでは、一部の機能が限定されるか、まったく機能しない場合があります。
Lumen のグローバル イルミネーションおよび反射
街の動的グローバル イルミネーションと反射には Lumen が使用されています。Lumen により、間接的に照らされる多くの領域を含むシーンで、動的でフォトリアルなライティングが実現します。Lumen は直接ライティングやジオメトリの変化に適応し、新旧の技術を組み合わせることで、リアルタイムの割り当て内で高質の結果を達成します。
Lumen は、次世代コンソールと高性能 PC を前提にビルドされています。
City サンプル では、スキン メッシュなどの幅広いジオメトリ タイプをサポートする ハードウェア レイトレーシング を使用しています。また、ハードウェア レイトレーシングはジオメトリの実際の三角ポリゴンと交差し、低品質のサーフェス キャッシュの代わりに、当たった光線のライティングを評価するオプションが含まれるため、品質をよりうまく、さらに高めることができます。
Nanite を使用するスタティック メッシュの場合、ハードウェア レイトレーシングは、Nanite のスタティック メッシュ エディタの フォールバックの三角ポリゴン比率 から生成されたフォールバック メッシュ上のみで動作します。Nanite でレンダリングされたフル三角ポリゴン メッシュと、Lumen でレイトレースされたフォールバック メッシュとの間の不一致の対応には、画面トレースが使用されます。
Lumen は、光源としてのエミッシブ マテリアルを含むすべての可動光源で機能します。スカイライティングでは、Lumen のファイナル ギャザーを使用してスカイ シャドウイングを行います。スカイ シャドウイングでは屋内の領域を屋外よりもはるかに暗くできるため、より多くのライトを反射する明るい色のサーフェスを作り出す際に役立ちます。City サンプル は、指向性ライト、スカイ ライト、およびサーフェスからのエミッシブ マテリアルのみによって照らされています。
ゲーム内で街を散策する際は、メニューを使って [World Settings] にアクセスし、[Sun Rotation] を調整できます。もしくは、エディタでの作業時に「右 Ctrl + L」キーボード ショートカットを押して、マウスをドラッグして指向性ライトを移動することもできます。
この機能の詳細と詳しい仕組みについては、「Lumen のグローバル イルミネーションおよび反射」と「Lumen の技術的詳細」を参照してください。
Nanite 仮想化ジオメトリ
City サンプル のすべてのスタティック メッシュには Nanite 仮想化ジオメトリが使用されており、従来の 詳細度 (LOD) はまったく使用されていません。Nanite では、知覚可能なディテールだけをインテリジェントに処理することで、ピクセル スケールのディテールをレンダリングして多くのオブジェクトを処理します。Nanite は、仮想テクスチャ がテクスチャ ディテールに対して行う処理をジオメトリに対して行います。
Nanite の内部メッシュ形式とレンダリング技術により、プレイヤーがワールド内を移動するにつれてその表現が動的に変更され、詳細度が瞬時に更新されて、画面にレンダリングされない部分がカリングされます。プレイヤー カメラにより近いオブジェクトはより詳細に描かれ、遠距離にあるオブジェクトの詳細度は低くなり、画面上のすべての詳細度が均一に保たれます。
City サンプル は、ワールド全体に配置された数万にも及ぶオブジェクトの数十億ものポリゴンで構成されています。Nanite により、スタティック メッシュで Nanite を有効にするだけで、最小限の追加手順、または追加手順なしで、映画品質のアセットをリアルタイムで使用できるようになります。また、高ポリゴンの ZBrush スカルプトをゲーム内に直接ドロップすることも可能です。
Nanite で可能なビジュアライゼーション モードのいずれかを使用して、シーンでどのようにレンダリングされるかを確認できます。ビジュアライゼーション モードは、[Nanite Visualization (Nanite ビジュアリゼーション)] ロールアウト メニューの [View Modes (表示モード)] メニューにあるビジュアライゼーションのリストから選択できます。
Nanite の [Overview (概要)] ビジュアライゼーション モード。
プロジェクトでの Nanite の使用と設定方法については、「Nanite 仮想化ジオメトリ」ドキュメントを参照してください。
テンポラル スーパー解像度
数千から数百万に及ぶインスタンスの数十億ものポリゴンを含む大規模なオープン ワールドに必要なジオメトリック ディテールと忠実度により、次世代コンソールや高性能 PC 向けのゲームに対する需要が高まっています。そのようなレベルの忠実度を実現するために、ゲームではネイティブ 4K 解像度でフレームをレンダリングする前にも、膨大なパフォーマンス バジェットを消費する場合があります。
テンポラル スーパー解像度 (TSR) とは、高密度でオブジェクトが配置された大規模ワールドで必要とされる忠実度を実現するために組み込まれたアンチエイリアス技法です。テンポラル スーパー解像度では、低入力解像度を受け取り、4K 解像度に近い品質で各フレームをレンダリングすることで、プラットフォームに依存しない一時的なアップスケール アルゴリズムを使用します。これは、実際にネイティブ 4K をレンダリングすることなく、パフォーマンスを向上しながら、低解像度でレンダリングされたものから 4K に近い品質を取得できることを意味します。
次の比較画像は、ネイティブ 4K でレンダリングされたフレームと、1080p でレンダリングされて 4K にアップスケールされたフレームをキャプチャして、品質とパフォーナンスの違いを示したものです。この City サンプル のショットでは、テンポラル スーパー解像度により、GPU フレーム時間を半分近くに削減しながら、ネイティブ 4K 解像度に近い品質の画像を得ています。
品質の同等性をさらに確認するには、比較スライダーを使ってそれぞれの画像をフル解像度にし、右クリックして各画像を保存できます。
仮想シャドウ マップ
仮想シャドウ マップ (VSM) は Unreal Engine 5 の新しいシャドウ マッピング方法で、映画品質のアセットと、Nanite、Lumen、World Partition の各機能を使用する動的ライティングのオープン ワールドで機能する、一貫性のある高解像度シャドウイングを実現するために使用されます。
従来の動的シャドウイング技法は中小規模のワールドのみに限定されることが多かったため、デザイナーやアーティストはパフォーマンスのために品質を犠牲にすることを余儀なくされることがありました。それとは対照的に、仮想シャドウ マップでは、必要な品質を自動的に適用する、統合された単一のシャドウイング方法が提供されます。つまり、これま以上に長い距離で、小さなオブジェクトと大きなオブジェクトの両方に対して、現実味のあるソフトな半影と強調されたコンタクト シャドウにより、シャドウイングの品質を均一に保てるようになります。
街並みを見下ろす次の比較画像では、仮想シャドウ マップとカスケード シャドウ マップとの間の品質と一貫性の違いを示しています。仮想シャドウ マップでは、大きなディテールから小さなものまで、街全体に一貫してシャドウがかかっています。尖塔や屋上にある機材など、建物の小さなパーツが細かなディテールでキャプチャされており、遠く離れた場所にある車や大きなオブジェクトにもシャドウがかかっています。
これを、そのようなディテールを持たせる場所をシーン内で選択する必要のあるカスケード シャドウ マップと比較します。シャドウ マップは、大幅なパフォーマンス コストを回避しつつ、大規模な領域で高忠実度のディテールを実現したい場合には適していません。遠距離にあるシャドウがシャープでないことと、地面のシャドウが個別のオブジェクトではなく、すべてをシェーディングするように表示されていることに注意してください。
プロジェクトでの仮想シャドウ マップの使用と設定方法については、「仮想シャドウ マップ」ドキュメントを参照してください。
ポストプロセス ローカル露出
ローカル露出 とは Unreal Engine 5 向けに開発された新たな技法で、アーティストによる制御が可能なパラメータの範囲内で、ローカルな調整を露出に自動的に適用します。これにより、既存のグローバル露出システムに加えて、ハイライトとシャドウの両方のディテールが維持されます。動的ライティングを使ったハイダイナミックな範囲を含むシーンでは、単一のグローバル露出調整を適用するだけでは、ハイライトの白飛びや真っ暗なシャドウを回避するのに十分ではありません。
時刻の変化を表す動的な時間帯システムを含むゲームや、動的にライティングを変更できる City サンプル のようなゲームでは、シーン内で、レンダリングされた映像の各部の露出に過不足が生じやすくなります。例として次の画像を見ると、太陽に照らされた領域は非常に明るくなっており、橋の下の領域にはローカル露出の調整が適用されておらず、多くのシャドウがかかっています。ローカル露出は、例えばプレイヤーが自由に環境内を探索できる City サンプル のように、シーンごとに細かなライティング調整ができない場合に、より一貫性のある結果を得る上で役立つ機能です。
プロシージャルに生成されてオブジェクトが追加された街
City サンプル プロジェクトの街は、SideFX の Houdini ソフトウェアを多用したプロシージャル生成を使って街のすべてをビルドするように設計/作成されています。これには、街のアイランドの形から、街路や高速道路、建物、歩道、公共物 (標識や電柱) などまで、あらゆるものが含まれます。街の「生成」は、カスタム ツールとユーザー提供の入力を使って Houdini 内のみで処理されました。
その結果である巨大な点群は Houdini からエクスポートされ、Unreal Engine 5 にインポートされます。Unreal Engine 5 では、このプロジェクト向けに開発された Unreal Engine ツール「ルール プロセッサ」により、点群が数千にも及ぶインスタンスに変換されます。
Epic Games での「The Matrix Awakens」の制作時には、完全な詳細度と大規模スケールを必要とするオープン ワールドの街になるプロジェクトとして知られていました。 このプロジェクトは Unreal Engine 5 に装備された多数の新機能を使用しており、制作時には、他の多くの部署がコンテンツを作成して、これらを同時に機能させる必要があると考えられていました。比較的小さな環境チームと、プロジェクトのターゲットとされるディテールの量を考慮した結果、Nanite により従来のポリゴン バジェットの制限が取り除かれるという点と、ワールド内でインスタンス化を数千回行うことのできるモジュラー アセットが必要になるという点の 2 つが明らかになりました。
街の形状、道路網、高速道路の接続、建物の配置を生成するための準備作業は Houdini によって処理され、Unreal Engine 5 で最終的な街のプロシージャル生成に使用できる大量のメタデータが提供されます。Houdini でこれらのツールを使用することで、デザイナーは短期間で無数の異なる街を生成できるようになりました。
生成された街のデータには、交通と群衆のシミュレーションを駆動する AI システムなど、Unreal Engine 5 の他のツールで使用可能なあらゆるタイプのメタデータが含まれます。建物はボリュームから構築されています。Building Generator では、形状文法言語 (Shape Grammar Language) を使って建物のボリュームをスタイリングします。異なる建物スタイルには、それぞれ異なる一連のルールが適用されています。また、特定のボリュームを建物の下部向けと、残りの上部セクション向けの 2 つの異なるスタイルに分割することができます。
City サンプル プロジェクトには、Houdini と Houdini Engine を使って独自の街をプロシージャルに生成するために必要なソース ファイルが含まれています。City Building Generator アセットをエンジン内で Houdini とともに使用するには、SideFX からのライセンス許諾が必要になります。Houdini ソース ファイルは、CitySample のルート フォルダにある「CitySample_HoudiniFiles.zip
」ファイルに含まれています。
City サンプル は次のバージョンを使って開発されています。
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によってセルが自動的にロード/アンロードされます。
World Partitionを使ってロードされた Big City の一部を示すレベル エディタ。
オープン ワールド プロジェクトでのこのシステムの設定と使用については、「World Partition」を参照してください。
データ レイヤー
World Partition システムでは、自由にロード/アンロード可能なセルにレベルが分割されます。データ レイヤー は、必要に応じてロード/アンロード可能なレイヤーにオブジェクトを分類する、World Partition内のシステムです。データ レイヤーは、コンテンツ管理にデベロッパーによる多くのキュレーションを必要とした Unreal Engine 4 の旧レイヤー システムを置き換えるものです。
City サンプル では、プロシージャルなものや屋上のプロップ、高速道路など、ワールド内の異なる一連のオブジェクトにデータ レイヤーを分類して使用しています。データ レイヤー アウトライナには、シーン内のオブジェクトを含むすべてのレイヤーのリストが含まれます。ここで、これらのレイヤーを使ってオブジェクトを追加または削除したり、可視性を設定したりできます。
レイヤーを設定し、シーン内のオブジェクトの整理に使用するための詳細については、「World Partition - データ レイヤー」を参照してください。
現実世界のシステムをシミュレートする
MetaHumans
City サンプル には、MetaHuman とアクセサリのサブセットから取り入れた数千体にも及ぶデジタル ヒューマン キャラクターが含まれています。MetaHuman キャラクターは MetaHuman Creator を使って生成されています。MetaHuman Creator を使用することで、一定の品質で、多様でありながらそれぞれ固有のフォトリアルなキャラクターを多数生成することができます。
City サンプル と The Matrix Awakens で使用されている、生成された MetaHuman キャラクターの群衆。
MetaHuman Creator を使用すると、プレイ可能なキャラクターとプレイ不可のキャラクター (NPC) として使用可能な映画品質のキャラクターをデザインして開発できます。例えば次の画像では、背景の NPC が、プレイ可能なヒーロー キャラクター IO と同じ品質で描写されていることがわかります。
(左から右) City サンプルのプレイ可能なヒーロー キャラクター IO、男性キャラクター、女性キャラクター。
MetaHuman キャラクターは完全にリギング済みで、アニメートする準備が整っています。また、MetaHuman キャラクターには品質とパフォーマンスのバランスを取るための独自の詳細度 (LOD) も含まれており、アニメートされた映画品質のキャラクターで街を埋め尽くすことが可能になります。
高品質の固有のキャラクターが多く行き交う街の横断歩道。
ゲーム内でドローン モードを使用すると、数百もの群衆キャラクターを見ることができます。最も近いものは完全にリギングされてアニメートされた MetaHuman キャラクターで、より遠い距離にあるものは、MetaHuman からカスタム生成されて頂点アニメート化されたスタティック メッシュです。
Mass AI Crowd システムを使って MetaHuman キャラクターを加えた City サンプル の歩道。
映画品質のデジタル ヒューマンを独自に作成するには、MetaHuman Creator を使用してください。MetaHuman Creator の詳細と、MetaHuman を独自の Unreal Engine 5 プロジェクトで使用する方法については、「MetaHuman ドキュメント」を参照してください。
AI (人工知能) システム
Unreal Engjine 5 の AI (人工知能) 機能により、街とワールドにさらなるリアリズムを加えることができます。これらの多くはエンジンの新機能であり、現時点では実験段階の機能です。このプロジェクトにおける AI 機能の動作については、City サンプル を探索して試してください。
Unreal Engine 5 向けに開発されたこれらの機能と、City サンプル での使用の詳細については、「人口知能」ドキュメントを参照してください。
MassEntity
MassEntity は、シーン内での数千もの AI エージェントのシミュレーションなど、パフォーマンスがカギとなるケース (AI ドメインには限定されない) において役立つデータ指向の計算のフレームワークを提供するものです。また、これによってワールド内の各エンティティの持続性も確実になります。このシステムは、City サンプル の交通 (Traffic) と群衆 (Crowd) の両システムで使用されています。
Mass Spawner は、ワールドに Mass Entity (質量エンティティ) を取り込むためのエントリ ポイントとなるものです。Mass Spawner では、スポーンされるエンティティのタイプとそのスポーン場所の 2 つを制御します。City サンプル では複数のスポナーが使用されており、群衆、交差点、交通、駐車中の車両のそれぞれに向けて一つずつ用意されています。
レベル内に配置されているいずれかの Mass Spawner アクタを選択すると、その [Details (詳細)] パネルには対象のエンティティの使用に関する情報が表示されます。[Entity Type (エンティティ タイプ)] (1) ではスポーンされるエンティティのタイプを指定し、[Spawn Data Generators (スポーン データ ジェネレータ)] (2) ではワールド内のスポーン位置を指定します。
Mass Spawner によってスポーンするものを指定する際には、Mass Entity Definition と呼ばれる新しいアセット タイプを作成してください。これにより、ビジュアル要素や詳細度 (LOD)、動作など、スポーンされるエンティティの「特徴」が定義されます。
Mass Spawner はこの新しい Mass Entity Definition データ アセット タイプを使用して、スポーンするものを指定します。このデータ アセットは、動作やビジュアル要素、詳細度 (LOD) など、スポーンされるエンティティの 特徴 を定義するものです。
エンティティのスポーン位置を定義する際は、使用する群衆と交通の両システムに向けて、ZoneGraph に沿ったスポーン ポイントを生成するために、Houdini から得たプロシージャル データを介して提供される ZoneGraph (次のセクションを参照) に沿った分布が使用されます。
街中で群衆エンティティと交通エンティティのスポーン場所を選択するために使用される生成データ。
スポナーを使った駐車中の車両については、プロシージャル データから場所の点群が街路に沿って生成されます。
駐車中の車両のスポーンに使用される、街路に沿った点群の場所。
Mass Spawner では、ワールド内のエンティティに向けた多くの分布可能性をサポートしています。次の例では、ワールド全体を通じてスポーンされた交通システムと群衆システムのビジュアライゼーションを示しています。緑色は運転中の車、青色は駐車中の車、白色は群衆を表しています。
この機能の詳細については、Unreal Engine 5 ドキュメントの「Mass Entity」を参照してください。
ZoneGraph
ZoneGraph とは、ポイントバイポイントの廊下構造に従う AI 向けの軽量なデザイン駆動型フローです。これには、AI 動作に利用可能な意義のある静的および動的タグを格納できます。
Zone Shape コンポーネントは、[Place Actors (アクタを配置)] パネルからワールドに追加できます。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 Vehicles
City サンプル 内の車両は Chaos Vehicles (ケイオス ビークル) システム によって駆動されます。この物理ベースのシステムにより、アーケード レースや、よりリアルなハンドル操作を必要とするゲームなど、さまざまなゲームプレイに向けたスタイルの車を設定することができます。
また、City サンプル では、プレイヤーはさまざまな四輪車を運転することができ、それぞれの車のハンドル操作には独自の物理設定を施すことができます。
Chaos Vehicle システムではコントロールリグを使った堅牢な変形システムをサポートしており、それぞれの車両に特有の変形を適用することができます。
Unreal Engine 5 での車両の設定と使用については、「Chaos Vehicles」を参照してください。
車のハンドル操作を調整する
それぞれのビークル ブループリントには、エンジン トルクやトランスミッション、ギアリング、質量、重心など、車両の物理的および力学的プロパティを定義する Vehicle Movement コンポーネント が含まれています。Vehicle Movement コンポーネントには、前輪と後輪用の、データのみの Wheel ブループリント の配列も含まれています。Wheel ブループリントでは、車両のハンドル操作とブレーキに関連する多くのプロパティのほかに、タイヤ摩擦やサスペンション、ブレーキ トルクなどの設定も制御します。
それぞれの車両に向けた車両データ ブループリントは「Content/Vehicles/[Vehicle_Name]
」フォルダに含まれています。例えば「Content/Vehicle/vehCar_vehicle02
」です。
運転可能な車両のブループリントの名前には、「BP_vehCar_vehicle02_Sandbox.
」といったように末尾に「_Sandbox」が付いています。これらの車両は、レベル内に追加してすぐに運転することができます。
動的なビークル変形
City サンプル の車両は コントロールリグ と Chaos Vehicle システムを使って、各車両に固有の変形を適用します。これは、車両のドライビング ダイナミクスを活用することで、それぞれのクラッシュが動的に作成されることを意味しています。コリジョンは車両のボディ周辺に配置された複数の物理ボディを使って検出され、コンストレイント可塑性によって、指定したしきい値を超えた場合に、物理コンストレイントによる永続的な変形が可能になります。
車両のコントロールリグには、単一の軸に沿って固定された可動コンストレイントが含まれます。その軸に沿ってコンストレイントが移動するにつれて、コンストレイントによって車のボディ パーツが変形します。City サンプル では、動的な変形を適用するために、運転可能なすべての車両に単一のコントロールリグが使われています。これは CR_Frame_Destructible という名前のもので、コンテンツ ブラウザの「Content/Vehicle/Animation
」フォルダに含まれています。
すべての車両に単一のコントロールリグが使われているため、運転可能な異なる車両を切り替えて、その変形をプレビューするには、[Preview Mesh (メッシュをプレビュー)] 割り当てスロットを使用することをお勧めします。
運転可能な異なる車両の変形コントロールリグ。
プロシージャル オーディオと MetaSounds
Unreal Engine 5 では、ビジュアル要素、ゲーム メカニクス、オープン ワールドの構築を自由に行うことのできるツールに加えて、MetaSounds によってゲームのオーディオをより細かく制御することができます。
MetaSounds を使用することで、オーディオ デザイナーは完全な機能を備えた デジタル信号処理 (DSP) グラフ、サウンド モジュレーションのサンプル アキュレートな制御、そして事前にデザイン済みのサウンド再生またはリアルタイムでのサウンド合成のイベントにアクセスできます。コードとブループリントの両方からのゲーム データに対するこれらの反応は、すべて堅牢なインターフェースによって強化されています。
MetaSounds は、デザイナーによる MetaSound グラフの定義と再使用を可能にする Preset (プリセット) や Composition (コンポジション) システムなどのプロダクション効率性ツールを通じて、デザイナーを支援します。また、これによってチーム間で MetaSounds にアクセスできるようになると同時に、ワークフローの合理化が可能な、強力でカスタマイズされた MetaSound ノードのライブラリを構築できるようになります。
開発済みの MetaSounds システムに加えて、City サンプル には、プロシージャル生成されたワールドにサウンドを通じてさらなるリアリズムを加えるための、実験段階のデザイン、ツール、システムが含まれています。
このシステムの詳細については、Unreal Engine 5 ドキュメントの「MetaSounds」を参照してください。
車両のオーディオ
運転可能な車両
City サンプル の運転可能な車両では、MotoSynth と呼ばれる実験段階にあるツールを使用できます。これは、車の加速音と減速音のレコーディングを活用し、加速と減速の動きをリアルタイムで細やかに再合成するグラニュラー ベースのエンジン シミュレーション ツールです。さらに、運転可能な車両では MetaSounds を使って、アイドル音のループやドリフトの音、RPM の限界音などの装飾的なエンジン サウンドを再現します。
|
|
---|---|
車両サウンドのステレオ ミキサー |
MotoSynth の各コントロール |
NPC 車両
NPC (プレイ不可のキャラクター) 車両も MetaSounds によって全体的に強化されています。これらは、シードされたランダム化のプロシージャル オーディオ生成機能を活用するものです。従来のピッチ ブレンドされたエンジン ループ、合成されてフィルタリングされたノイズ、合成されたサブトーンの、プロシージャルにランダム化されたミックスは、NPC 車両のスピードに応じて動的に調整されます。
音楽の再デザイン
MetaSounds は強力なデザイン環境であり、デザイナーは既存のサウンドと音楽マテリアルをキットバッシュして再使用できます。City サンプル では、デモのために作成された元の音楽ステムを再使用して 2 つのリミックス バリエーションが作成されており、クラブ ミュージックを連想させるナイトモード バリアントなど、まったく新しいバリエーションとなっています。
街のサウンドスケープとプロシージャルなオーディオ生成
ワールド オーディオ データ システムと Houdini での作業
World Audio Data (ワールド オーディオ データ) システムは実験的段階にある一連のツールで、プロシージャル データの伝播とデザインを扱う際の中心的な機能です。これには、Houdini の点群メタデータを変換して Soundscape ColorPoint Spatial Hashmap にベイクするためのカスタム プロセッサ ルール が含まれており、キャッシュされたハッシュマップは、16 平方キロメートルの Big City 全体に広がるWorld Partitionにより、ストリーミングで入出力するようデザインされた個別のアクタに配布されます。
World Audio Data アクタには Colorpoint (カラーポイント) キャッシュが含まれており、メモリの使用量を低く抑えるためにWorld Partition ストリーミングを活用します。
サウンドスケープのデザイン
街中のアンビエント サウンド (環境サウンド) のほとんどは、実験段階にあるステートベースのプロシージャル アンビエント サウンド システム、Soundscape (サウンドスケープ) によって制御されています。サウンドスケープを使用することで、デザイナーは リスナー 周辺のサウンドのスポーン動作を定義することができます。これには ColorPoint メタデータに基づいた条件付きスポーン動作も含まれます。City サンプル でスポーンされるサウンドのほとんどは、World Audio Data システムを通じてキャッシュされて動的にロードされたColorPoint データに基づいています。これにより、デザイナーは空間メタデータに基づいて、スポーンを許可するサウンドのタイプを指定できます。例えば、高速道路周辺のアンビエント サウンドや、大きな道路のアンビエント交通ノイズなどです。
サウンドスケープでは、ColorPoint データに加えて、Mass AI プロセッサを介して動的な ColorPoint データがサウンドスケープに入力される処理をリッスンし、アイドル中の MetaHuman と NPC 車両の位置を継続的に追跡します。これらの位置は、環境内のクラクション音や MetaHuman の声など、さまざまな音声に使用されます。サウンドスケープは、活気あふれる街に仕上げる上で重要な役割を果たします。
独自のプロシージャルなシティ ガイドを作成する
City Sample プロジェクトは、Houdini と Unreal Engine 5 を使用して独自のプロシージャルな都市を生成するために必要なすべてのソースファイルを提供します。
最初のガイドでは、Houdini を使用して、独自の道路網、高速道路システム、建築ゾーンなどを備えた独自の都市を作成するために使用されるプロシージャルなデータの設定および生成をします。Houdini からエクスポートされたデータは、2 番目のガイドで使用され、Unreal Engine のツールと機能を使用して都市にデータを入力して構築します。