Unreal Engine は長年にわたってリアルタイム/オフラインの建築レンダリング プロダクションで利用されてきましたが、Nanite や Lumen といった Unreal Engine 5 で導入された新機能により、実現可能な範囲と品質が飛躍的に高まりました。Hillside は、Neoscape とのコラボレーションを通じて開発された建築ビジュアライゼーション サンプル シーンで、Safdie Architects による「アビタ 67」団地 (カナダ、モントリオール) のオリジナル デザインを題材としています。このドキュメントでは、本プロジェクトの概要を紹介し、このような大規模の ArchViz プロジェクトを構築してレンダリングするうえで最も重要な設定や検討事項について説明します。
他のほとんどの建築ビジュアライゼーション プロジェクトと同様に、Hillside プロジェクトではグラフィックが非常に多く使用されています。安定したフレームレートで最終的な映像をレンダリングするには、RTX A6000 グラフィック カード、もしくは少なくとも RTX 3080 グラフィック カードが推奨されます。
セットアップ
Unreal Engine マーケットプレイス から Hillside プロジェクトをダウンロードします。
建築テンプレート
Hillside プロジェクトは、UE5 の Archvis (建築ビジュアライゼーション) テンプレートを使って作成されました。このテンプレートには Datasmith、ムービー レンダー キュー、よく使用される他のプラグインなどがすでに有効な状態で備わっているだけでなく、ハードウェア アクセラレーションによるレイトレーシングも含まれているため、建築プロジェクトの開始点として非常に優れたテンプレートです。
プロジェクトの構成
完全な Hillside プロジェクトは、4 つメイン レベルとそれぞれに対応するレベル シーケンスで構成されています。これらのレベルとシーケンスはアニメーションの作成に使用されます。これは、建築ビジュアライゼーションの世界ではよく行われるやり方です。必要最低限のわずかなカスタム仕様の要素や設定を使って、このプロセスを可能な限り簡素化することが目的です。
4 つのメイン レベルは「Content > Hillside > Maps」フォルダに含まれています。
-
[1]LV_Teaser:従来のビジュアライゼーション アニメーションの要素やツールを使った、モーション グラフィックに対する UE の機能性を示す抽象概念アニメーションです。
-
[2]LV_Exterior:1967 年のモントリオール万国博覧会での Hillside プロジェクトに向けて作成されたオリジナル マスター プラン提案書が含まれます。
-
[3]LV_Interior:Moshe Safdie 氏によるアビタ 67 の屋内ユニットと、アビタのシンプルなフォトグラメトリ メッシュが含まれます。
-
[4]LV_Credits:ロゴ アニメーションとクレジット情報が含まれます。
4 つのメイン シーケンスは「Content > Hillside > Movies」に含まれています。
-
[1]LS_Teaser:移動メッシュ、ライト、風、パーティクル システム、ポストプロセス エフェクトが演出されたワンカメラ アニメーションです。
-
[2]LS_Exterior:モントリオール市街地の建物の詳細なクローズアップや広い景色など、屋外ショットのコレクションです。ライティング、ムード、舞台設定、ライトの可視性はシーケンサーを使って制御します。このシーケンスでは、非常に詳細な大規模建築のエクステリアに Nanite と VSM をどのように使用できるかを示しています。
-
[3]LS_Interior:複雑なジオメトリのインテリアやライティング条件を処理する Lumen の機能を示す屋内ショットのコレクションです。
-
[4]LS_Credits:Datasmith を使って UE にインポートされたシンプルなモーション グラフィックが含まれます。
シーンの構造
それぞれのショットには独自のシーケンスが含まれています。こうすることで、被写界深度、マテリアル関数、特定のオブジェクトの可視性、さらにはライティング設定などのカメラ アニメーションや設定を必要に応じてショットごとに制御できるようになります。ほとんどのポストプロセス設定は、レベル全体にわたる 1 つのポストプロセス ボリュームで制御されます。ただし、一部のショットについては、カメラのポストプロセス エフェクトで制御され、後にメインのポストプロセス ボリュームをオーバーライドするカスタム仕様の調整が必要になります。たとえば、次のショットでは、シーンのあらゆる部分でグローバル イルミネーションが可視になるように、Lumen のシーン距離をデフォルトよりも多少多くプッシュバックする必要がありました。このようにして、ショットごとのパフォーマンスやアート ディレクションに影響を及ぼす可能性のある設定のみを調整しました。
シーケンサー内のシーケンス例。画像をクリックするとフル サイズで表示されます。
次に、すべてのショット シーケンスを 1 つの カメラ カット マスター シーケンスにコンパイルしました。ここでは、ショットが春、夏、秋の季節ごとにグループ分けされます。こうすることで、雨、人々、ビークルの可視性といった VFX のショットまたはショット グループごとの編集や管理をシンプルでクリーンな構造で行うことができます。
ムービー レンダー キューでシーケンスをレンダリングする
Hillside の最終的な動画と静止画は、すべてのリニア コンテンツ制作を一元的に管理/生成できる ムービー レンダー キュー (MRQ) を使ってシーケンサーからレンダリングされました。
シーケンスをムービー レンダー キューにロードするには、次のステップを実行します。
-
Movie Render Queue プラグインを有効にします。この設定手順を確認する必要がある場合は、「プラグインを操作する」を参照してください。
-
プラグインを有効にしたら、[Window (ウィンドウ)] > [Cinematics (シネマティック)] > [Movie Render Queue (ムービー レンダー キュー)] に移動して、メイン メニューからこのプラグインを開きます。
-
[+ Render (+ レンダリング)] ボタンをクリックしてシーケンスをロードします。
シーケンスが MRQ にロードされたら、それぞれのシーケンスに事前定義されたレンダリング設定を割り当てることができます。以前に保存したレンダー キューをロードすることも可能です。こうすることで、ショットまたはシーケンスごとにデフォルトのレンダリング設定を変更し、レンダリング時ごとに複数のレンダリング設定を保存する必要なく、カスタム仕様の設定を維持することができます。
この例では、デフォルト設定は「Content > Cinematics」にある MRQ_Hillside_BaseConfigPreset に保存されています。シーン内のすべてのルック デベロップメントの開始点として 1 つのプライマリ ポストプロセス ボリュームを使用する場合と同じく、このベース コンフィギュレーションは Hillside の 95% のショットに対応します。次に、レンダリングの対象に応じた名前をレンダー キューに付けて保存しました。たとえば、静止画のみをラスタ モードでレンダリングしたい場合は、その MRQ コンフィギュレーションに追加の CVar や特定の画像サイズといったいくつかのカスタマイズを加えて保存します。
LV_Teaser ではシーンの複雑さによってバーチャル シャドウにより多くのメモリを使用する必要があるため、CVar 「r.Shadow.Virtual.MaxPhysicalPages 12000
」を追加しました。UE では、この設定にデフォルトで「4000」の値を使用します。より高い値の使用は、使用している GPU と利用可能なそのメモリに依存します。
このプロジェクトにはアニメーション、静止画ラスタ、静止画パストレースの保存済みのプリセットが含まれますが、これらは私たちが 1 つの場所で達成した内容を確認するためのほんの開始点にすぎません。プリセットを使用することで、異なるシーンや品質レベル (テスト用、ドラフト用、最終レンダリング用など) に対して設定を簡単に繰り返して使用できるようになります。

MRQ のベース コンフィギュレーション プリセットに使用した CVar のリスト。
ムービー レンダー キューの詳細とその使用方法については、Unreal Engine ドキュメントの「ムービー レンダー キュー」セクションを参照してください。
シーケンスをレンダリングするには、すべてをロードした後に [Movie Render Queue] ウィンドウにある次のいずれかのオプションを使用します。
- エンジンの実行時にレンダリングしたい場合は [Render (Local) (レンダリング - ローカル)] をクリックします。
- レンダリング ジョブを実行するためにエンジンのヘッドレスなインスタンスを開きたい場合は、[Render (Remote) (レンダリング - リモート)] をクリックします。このオプションは、同時にオープンになるエンジンを処理するための十分な VRAM がない可能性のある GPU を使用する際に便利です。
MRQ で静止画をレンダリングする
すべての静止画カメラ レベル シーケンスは、「Engine > Plugins > MovieRender Queue Content > Editor > Stills」にある 静止画像レンダリング ツール で作成されました。カメラの配置後にこのウィジェットを実行すると、画像のバッチ レンダリングのための適切なシーケンスが自動的に生成されます。それぞれのシーケンスでは、舞台設定やライティングの変更、フォグなどの環境特性やポストプロセス設定の編集などでのアクタの可視性をカスタマイズすることも可能です。
アニメーション シーケンスと同様に、これらを MRQ にロードして、「Content > Cinematics」にある適切なレンダリング プリセット (ラスタ用またはパストレーサー用のいずれか) を使用していることを確認し、[Render (レンダリング)] をクリックするだけです。レンダリングしたすべての静止画シーケンスは「Content > Hillside > Renders」にあります。
高解像度の画像については、MRQ の High Resolution (高解像度) 機能を使用できます。この機能では、メモリ節約のために画像が複数の小さなチャンクに分割されます。MRQ_Hillside_Ext_StillRaster プリセットでは、ターゲット GPU で VRAM が不足することなく、6000x6000 のレンダリングを安定的に行えるように 2 つのタイルを使用しています。
Lumen とパストレーサー
Lumen の優れたメリットとしてそのスピードと精度があります。このプロジェクトには、すべてのマテリアル、ライティング、そしてカメラ設定が同じであるパストレースされた画像をいくつか加えましたが、違いを確認するためにレンダリングをラスタからパストレースに切り替えました。画像のレンダリング方法は使用するハードウェアとシーンの複雑さに大きく依存するため、その方法を決定する必要があります。このプロジェクトでは、レンダリングをより迅速に実行しながらも高忠実度を実現できるラスタ レンダリングを全体的に選択しました。
次の画像は、パストレーサーと Lumen でレンダリングした屋外のショットです。


次は、パストレーサーと Lumen でレンダリングされた屋内のショットを比較する画像です。


ライティングとレベルの管理
サブレベル
Hillside の動画には、さまざまな季節と一日の時間帯を通じた、複数の異なるライティングと季節のシナリオが含まれています。これらの条件をよりうまく制御して切り替えられるように、太陽と空、ボリュメトリック クラウド、指数関数的高さフォグを含むシンプルなデフォルト ライティング レベルを作成しました。さらにこのデフォルト レベルから、異なる時間帯、色、強度、クラウド、フォグのバリエーションを含む、メイン レベルでロードして制御することが可能な複数のコピーを作成しました。
すべてのライティング サブレベルは LV_Exterior パーシスタント レベルにありますが、[Level (レベル)] パネルまたはシーケンサーを通じて常時表示できるサブレベルは 1 つだけです。理論的にはシーケンサー内から個別のアクタごとにすべてのライティングとルック デベロップメントを直接管理することはできますが、サブレベルを使用することで条件を何度も再利用することができ、ショットごとにそれらを再作成する手間と時間を省くことができます。
ライティング レベルの可視性。1 つのみが可視化されて、他のものは非表示になっています。画像をクリックするとフル サイズで表示されます。
(パストレーサーとは異なり) Lumen では 256 個のみのライトが同時にサポートされますが、当社では夜のショットで輝く街路灯など、多数の人工的な光源を必要としていました。この制約を回避するために、多様な環境ライティング条件をロード/アンロードする方法と同じように、すべての人工的なライティングをショットごとにシーケンサーからロード可能な、領域ごとのグループに分割しました。
夜間ライトの可視性。画像をクリックするとフル サイズで表示されます。
レベル インスタンス
当社では、このプロジェクトをそれぞれのコンポーネントに切り分けるために、レベル インスタンス を多く使用しました。これにより、ルック デベロップメントが行われているメイン レベルへのソース コントロール アクセスをブロックすることなく、複数のアーティストがそれぞれが担当するモデルやタスクでの作業を行うことができます。
以下の画像はこれらすべてのレベル シーケンスの構造の例で、これらがどのようにグループ化されているかも確認できます。
このワークフローの別のメリットとして、[Edit (編集)] ボタンをクリック、またはレベルに直接移動してそれを開くことで、メイン レベルのビジュアル ノイズに対応することなく、レベル シーケンスを変更したり調整したりできることがあります。
以下で示すように、それぞれのレベルには、ドローコールの数を最小限に抑え、パフォーマンスを向上させる ISM または HISM (またはその両方) が含まれています。



スライダーを使って画像間を移動します。
CAD データを操作する
モデルを作成してインポートする
Safdie Architects は Hillside モデルのデザインを Rhino で行い、グループや名前付け、メタデータを整頓されたクリーンな構造で維持するよう努めました。これにより、将来的に最終的なレンダリングに向けたシーンのクリーンアップや最適化またはデータの準備を行う際の実用性と柔軟性が最大限に開かれました。
このモデルを Rhino からエクスポートして、Datasmith を使って Unreal Engine にインポートしました。その際にはシーン階層全体がそのまま維持されて、すべての基本的なマテリアルとメタデータが取り込まれました。
デフォルトのシーンは問題なく機能しましたが、そのモジュール デザインは、それぞれが複数のメッシュで構成された数千ものウィンドウなど、数万にも及ぶ小さな構成要素によって作成されていました。
当社では、パフォーマンスの最適化に向けてドローコールの数を減らすことを目指して、構築モデルをより大きなチャンクに展開して詰め込むカスタム仕様の一連のスクリプトをビルドしました。これにより、最終的にコンテンツ ブラウザをクリーンに保ち、アウトライナーをよりすっきりさせて、ドローコールの数を妥当なレベルに引き下げることができました。最終的に得たモジュラー構成要素は、レンダリング プロセスを可能な限り合理化するために、別のスクリプトによる「インスタンス化されたスタティックメッシュ」と「階層的なインスタンス化されたスタティックメッシュ」への変換によってさらに最適化されました。ドローコールとメッシュのレンダリング負荷については、Nanite によって大幅に向上されました。モデルをこのように構成する別のメリットとして、フォールバック メッシュのみをレンダリングできるプラットフォームとデバイスのパフォーマンスが最適化されることがあります。
また、ビジュアル忠実度をさらに高めるために、当社では最適化の完了後に追加のモデリング作業を行いました。モジュラー構成要素をエディタからエクスポートして、元の CAD 描画ではそれ程重要ではなかった追加の面とディテールを 3ds Max で加えました。その後、変更した要素をインプレースに再インポートしました。
前述の最適化プロセスにより、建築物のこのコンポーネントのスタティックメッシュが 579 個から 18 個に削減されました。画像をクリックするとフル サイズで表示されます。
エディタ スクリプト
階層をマージして管理する

Hillside Utilities ウィジェット
「Content > Hillside > Blueprints」にある Hillside _Utilities_v5 エディタ ユーティリティ ウィジェット は、インポートしたジオメトリの最適化を加速するために開発されたカスタム仕様のツールキットです。このツールは、構造体のあらゆるモジュラー構成要素で多くのネスティングされたメッシュを使用する、Rhino モデルの「ブロック」パラダイムで機能するように設計されています。このツールを使って、シーン全体を通じてグループを簡単に折りたたんで新しいメッシュを再インスタンス化することで、アウトライナーがより整頓されてパフォーマンスも向上しました。
HISM

Mesh to HISM ツール
Mesh to HISM ツールは、Hillside の膨大な数のスタティックメッシュ インスタンスを管理するために開発された、カスタム仕様の多目的エディタ ユーティリティ ウィジェットです。選択したスタティックメッシュを自動的にインスタンス コンポーネント (ISM または HISM) に圧縮して、エディタのオーバーヘッドを削減してレンダリング パフォーマンスを向上させます。
当社では、インエディタでのアクタ コンポーネントの動的な作成と変更を処理するために、サブオブジェクト データ サブシステムを使用しました。インスタンス化ツールに加えて、選択したすべてのアクタでの負のスケーリングを修正し、フォリッジと舞台設定に自然な見かけやバリエーションを加えるために必要な回転とスケールをランダムに設定するための便利なボタンをいくつか追加しました。さらに、Nanite のためにスタティックメッシュ アセットを分割する機能も加えました。この機能では、不透明型マテリアルまたはマスク付きマテリアルを含むトライアングルが、(Nanite ではサポートされていない) 透過マテリアルを含むトライアングルから切り離されます。


レンダリングの最適化
Nanite の最適化
プロジェクト内の適合するあらゆるスタティックメッシュ (水塊、ランドスケープ、透過マテリアルを含むサーフェスを除く) では Nanite が有効になっています。多くのポリゴンやマテリアルを含まない個別のアセットであっても、Nanite のクラスタ化されたレンダリング アプローチと、仮想シャドウ マップと Lumen に対するしっかりとしたサポートにより、全体的なパフォーマンスが向上しました。

確認のための表示モード - Nanite Visualization (Nanite ビジュアライゼーション) | Mask (マスク); 緑色 = Nanite, 赤色 = 非 Nanite
Nanite + ワールド位置オフセット (WPO)
Hillside のフォリッジ アセットのマテリアルには、風になびく様子を再現してシーンに命を吹き込むために、WPO が使用されています。Nanite と VSM の両方のパフォーマンスを最適化するために、シーンでの WPO の使用には十分に注意を払いました。
r.OptimizedWPO=1
コンソール変数が「DefaultEngine.ini
」コンフィグ ファイル内で有効に設定されて、格納されています。これにより、[Details (詳細)] パネルで [Evaluate World Position Offset (ワールド位置オフセットを評価)] オプションが有効になっていない Nanite メッシュに対する WPO 評価を停止できるようになりました。フォリッジでは、エディタ内でのパフォーマンスを節約するために、この設定がオフ (無効) になっています。
最終的なムービー レンダーでは、フォリッジが風に揺られる WPO エフェクトを表現するために、ムービー レンダー キューで OptimizedWPO
変数が無効になっています。さらに、フォリッジ アセットには、WPO 評価に向けて World Position Offset Disable Distance
を使って妥当なカリング距離が適用されているため、このエフェクトはカメラに最も近いフォリッジにのみ適用されます。

確認のための表示モード - Nanite Visualization (Nanite ビジュアライゼーション) | Evaluate WPO (WPO を評価); 赤色 = WPO がオフ | 緑色 = WPO がオン
アクタの可動性と VSM
すべてのスタティックメッシュの可動性は、VSM の無効化 を回避するために、プロジェクトでのその役割に基づいて慎重に設定されました。実質的にはすべてが Static (静的) に設定されています。
スケーラビリティ設定
他のプロジェクトと同様に、Hillside でも最高の品質と安定したパフォーマンスを得るうえでバランスをうまく調整することが重要でした。ターゲットとした出力は主にリニアな動画でしたが、デベロッパーはシーン内を快適に移動できる必要がありました。レンダリング設定を慎重に制御することで、代替となる出力に関して新たな可能性も開かれました。
以下は、ターゲット マシンで 30 FPS を達成した際の一助となった、プロジェクトの「DefaultScalability.ini」ファイルに加えられた修正の一部です。
フォリッジ カリング距離 (foliage.CullDistanceScale)
は、フォリッジ タイプのアセットに設定されている最小/最大カリング距離の乗数として機能します。このプロジェクトには、最終的なシネマティックの際にのみ完全にレンダリングする価値のあるガラスとフォリッジが数多く含まれているため、この変数を必要に応じて調整しました。
-
Low (低) -
foliage.CullDistanceScale=0.05
-
Medium (中) -
foliage.CullDistanceScale=0.2
-
High (高) -
foliage.CullDistanceScale=0.3
-
Epic (最高) -
foliage.CullDistanceScale=0.5
-
Cinematic (シネマティック) -
foliage.CullDistanceScale=1.0
これらのフォリッジ インスタンスもシャドウ深度に大きな負荷がかかるため、Epic スケーラビリティ レベルの 仮想シャドウ マップ解像度 を下げました。
-
オリジナル:
r.Shadow.Virtual.ResolutionLodBiasDirectional=-1.5
-
Hillside:
r.Shadow.Virtual.ResolutionLodBiasDirectional=-0.5
各フレームの負荷のほとんどは画面の解像度に依存しており、特に Lumen GI と Lumen 反射ではそれが顕著です。このため、リアルタイムでの実行時のデフォルト スクリーン パーセンテージを下げて、それを テンポラル スーパー解像度 で補正するようにしました。
-
オリジナル -
PerfIndexValues_ResolutionQuality="50 71 87 100 100"
-
Low - 50%
-
Medium - 71%
-
High - 87%
-
Epic - 100%
-
Cinematic - 100%
-
-
Hillside -
PerfIndexValues_ResolutionQuality="50 60 68 75 100"
-
Low - 50%
-
Medium - 60%
-
High - 68%
-
Epic - 75%
-
Cinematic - 100%
-
また、すべてのメイン マテリアルに マテリアルの Quality Switch を加えて、選択したスケーラビリティ レベルに応じて負荷の大きい機能を無効にできるようにしました。

マテリアルの高度な技法
ボリュメトリック クラウド
現実味を帯びたすばらしい空をさまざまな季節、異なる時間帯、多様なカメラ アングルで再現するために、ボリュメトリック クラウド で使用される標準的なマテリアルを大幅に改善しました。空に HDRI は使用されていません。

このカスタム仕様のボリュメトリック クラウド マテリアルでは、パック済みのテクスチャ マップを通じて、4 つのクラウド レイヤー用にアート ディレクションを容易にする設定が提供されます (R = 層積雲、G = 高層雲、B = 巻層雲、A = 乱層雲)。WindVector や Stormy などの多くのオプションには、空全体を回転したり、特定の領域をマスクしたり、対象範囲を微調整したりするためのシンプルなパラメータがあります。嵐における雲の中の稲妻を再現することも可能です。また、これには、さまざまなショット間で空と他のマテリアルをグローバルにまとめて変更できるようにする Hillside_MaterialParameters マテリアル パラメータ コレクション も利用されています。
このマテリアルは、別のプロジェクトに移行してカスタマイズすることができます。これは、「Content > Hillside > Effects > Clouds > Materials > M_VolumetricCloud_Hillside」にあります。

レイアウト テクスチャの全体的なスケールをワールド ユニットで簡単に設定できます。

ボリューム シェーダーに影響を及ぼす雲のカバレッジと密度。
視差オクルージョン マッピングを使った木製デッキのフロアリング
この屋外デッキに使用されているマテリアルでは、疑似ランダム マスク生成技法とインスタンス化されたスタティックメッシュごとのランダム値によって、すべての木製の厚板に自然なバリエーションが生み出されています。この両方を使用することで、板とインスタンスごとにティントや色相の変化、彩度といったエフェクトを駆動する場合に行う反復的なタイリング作業が緩和されます。

これには視差オクルージョン マッピング (POM) も使用されており、板の間に追加の深度とオクルージョンが適用されています。ほこりや汚れ、水たまり、落ち葉のレイヤーにより、求めている最終的な見かけにより近づけることができます。

コンクリート
アビタ 67 にはたくさんのコンクリートが使われているため、当社ではさまざまな目的で使用できるコンクリート シェーダーの開発に特に力を注ぎました。すべての角度およびコントロール タイルからの投影には、triplanarUV とカスタム仕様のテクスチャ ボミング マテリアル関数を使用しました。Per Instance Random を使用して色とラフネスにバリエーションを与えました。またプロジェクトには、求めている結果を得るために、状況に応じて有効にできる多数の機能が含まれています。壁には水滴やほこりが付き、海に近い場所であれば湿りがあったり、藻なども付着したりすることがあります。バルコニーには小石やクラック、落ち葉がある場合があります。さらに、より細かなディテールが含まれている場合もあります。
喫水線周辺の藻や水滴、クラックなどの汀線の特徴。画像をクリックするとフル サイズで表示されます。
草
大規模な草原をサポートするために、テクスチャ ボミング技法を使ってタイリングを回避しました。ミクロとマクロのバリエーションとともに残がいや落ち葉などを使用することで豊かさが加わり、単調なタイリングにアクセントを与えることができます。スペキュラとラフネスのバリエーションを慎重に使用することでも現実味を高めることができ、ラフネスマップでは 合成テクスチャ を活用して、強度を距離に応じて調整できます。また、グレージング角でのコントラストの減衰にはファズ技法を使用しました。
草と植木のマルチが混ざりあう部分には、草の先端とほこりを丁寧にブレンドするハイト ブレンド技法を使用しました。ディスタンス フィールドを使用して、最終的なブレンドを実行してそれぞれのマルチにバリエーションを与えるマスクを作成しました。その上に落ち葉を加えることで、完璧な画が仕上がります。
天候マネージャー システム
Hillside では天候と季節のエフェクトが多数のさまざまなマテリアルとシステムに影響を及ぼすため、当社では、それらを一元管理するためにカスタム仕様の エディタ ユーティリティ を開発しました。このユーティリティを開くには、「Content > Hillside > WeatherManager」にある WeatherControl_Editor ブループリントをダブルクリックします。
このブループリントを使用するには、これを LV_Exterior レベルに追加する必要があります。パラメータはエディタの [Details (詳細)] パネルで直接編集するか、このブループリントで作成されるカスタム仕様のウィジェットを使ってその設定を PIE (プレイインエディタ) でプレビューすることができます。
WeatherControl_Editor ブループリントでは次のパラメータを使用します。
-
Autumn scale:色を更新し、最も近くにある (葉が含まれる) 木々に落ち葉のパーティクル システムを追加します (落ち葉のパーティクル システムは PIE のみ)。
-
Cloud Parameters:クラウドのビジュアル面を複数のコントロールを使って更新します。
-
Wet Surface Scale:一部のサーフェス (アスファルト、コンクリート) の湿り気を更新します。
-
Sun Sky (time of day):時間帯、月、日、太陽時を更新します。
-
Interior Mapping:Toggle Windows インテリア マッピングを切り替えます。
-
Enable Wind:フォリッジ マテリアルの風を切り替えます (リアルタイム パフォーマンスに影響を及ぼす可能性があります)。
窓の雨
雨については、ガラス マテリアル内で使用するために、雨の滴りや水滴をレンダー ターゲットでプロシージャルに生成する技法を使用しました。これにより、雨の滴りを増減したり水滴同士を結合させたりして、雨を適宜調整できるようになりました。水滴に屈折を加えたことで逆さまの効果が生まれ、より現実的な見かけを実現できます。

池とプール
Single Layer Water シェーディング モデルを使用することで吸収、散乱、異方性の計算における複雑な部分が隠されるため、ユーザーはフォトリアルな水を容易に作成できます。当社のマテリアルは、吸収や錯乱に加えて突風、屈折、水に浮かぶ落ち葉、コースティクスをサポートしています。
UE5.1 以降、Single Layer Water シェーディング モデルではパストレーシングをサポートしています。
川
セントローレンス川の再現には Water プラグイン を使用しました。まず川のマテリアルをベースとして使用して、ゲルストナー波の小規模なセットとアーティスト フレンドリーないくつかのパラメータを備えたカスタム仕様のシェーダーを開発しました。川のメイン領域と全体的な流れはスプラインベースの 1 つの大きな水塊 (Water Body) で定義し、別のスプラインベースの水塊を島の周辺に配置することで、必要に応じてさまざまな流れの方向や速度、マテリアルのバリエーションを定義できるようにしました。
スプラインの影響を受けた水の流れ
水塊の深度のキャプチャには小さな ランタイム バーチャル テクスチャ を使用したため、ランドスケープの実際の深度に影響を及ぼすことなく、プリミティブを使って深度を疑似的に作成し、波の振幅を制御するためのイテレーションをマップ上で迅速に行うことができました。これにより、埠頭や桟橋周辺には穏やかな水面を、川の中央部では風に影響を受けたより激しい流れを再現できます。汀線沿いの水泡はディスタンス フィールド技法を使って加えました。
パストレーシングで WPO を使って水をレンダリングするには、r.RayTracing.Geometry.Water 1
を設定することで、レイトレーシングでの水の使用を有効にする必要があります。
岩と汀線
汀線沿いの湿り気を再現するために、「ドライ」、「ウェット」、「藻類」の 3 つのステートをサポートするワールド空間ブレンドを使って湿った岩のマテリアルを作成しました。次に、希望の結果に近づけるために汀線の高さとブレンド フォールオフを指定しました。
疑似インテリア
City サンプル (建物) からのキューブマップ インテリア マテリアルを Hillside のニーズに合わせて簡素化しました。Hillside に十分な数の部屋を作成して、Hillside に合ったスタイルの家具にするために、ブループリントを使ったカスタム仕様のシステムを使用して、個別の 3D の部屋のキューブマップをキャプチャし、追加のレイヤーとして装飾品に色と深度を加えました。アセットとマテリアルは、Twinmotion から移行されたもの を使用しました。

結果のマップはテクスチャ配列ファイルに追加され、部屋と装飾品は Per Instance Random ノードを使うことで、窓のマテリアル内でランダムにミックスしました。これによってより多くのバリアントを配列に追加したり、ライティングのアクセント、ブランド、カーテン、ライトの強度、温度など、すべてのパラメータに非常に高いランダム性を与えたりすることができるようになりました。
90 度の角度を持つコーナーの窓も疑似的なインテリアです。これは、キューブマップ キャプチャ ツールを使ってキャプチャされた白色と黒色のマスクを受け取り、小道具マップではなく部屋のキューブマップのみに影響を与える別のマテリアル インスタンスでそれらを設定することで作成しました。
シーンに命を吹き込む
高品質透過性反射 (High Quality Translucent Reflections)
Hillside にはさまざまな場面でガラスと水が登場するため、これらのサーフェス上で優れた見かけの反射を実現することは非常に重要でした。PostProcessVolume では、Lumen の設定にある [High Quality Translucent Reflections (高品質透過性反射)] を有効にしました。


木々と小道具
ワールド内には Epic エコシステムからの既存のコンテンツをできるだけ配置しました。木のアセットは主に Twinmotion から移行したものと Quixel からインポートしたもので、屋外/屋内シーンのさまざまな小道具は Twinmotion から取り込みました。一部の VFX とすべてのビークルについては City サンプル から移行しました。これらのアセットは「Content > ExternalAssets」フォルダにそれぞれ保存されています。
Twinmotion の一部の木々については、木の枝全体でより忠実度の高い風のシミュレーションを可能にする Pivot Painter で処理するために、Unreal Engine から 3ds Max にエクスポートしました。


Niagara VFX
テック アーティストによってさまざまな特殊効果が Niagara で作成されて、Hillside にさらなるリアリズムとシネマティック ルックが加わりました。すべての Niagara システムとそれに付随するアセットは「Content > Hillside > Effects」にまとめられています。以下のようなサンプルがショーケースとして示されています。

Niagara のメッシュ パーティクルで作成された散る 桜 (Cherry Blossoms)。

当社の Niagara Fluids プラグインを使用した コーヒーの湯気 (Coffee Steam) のリアルタイム流体シミュレーション。

Houdini でシミュレートされて、Alembic ファイルからジオメトリ キャッシュとしてインポートされた バブラー (Bubbler) 噴水の動作。
ビークル (乗り物)
シーケンス全体を通じて再現されるアニメートされたバックグラウンドのビークルは City サンプル プロジェクトから移行したもので、よりシンプルなブループリントと少数のメッシュに調整されています。ビークルを道に配置してそれらを自動的に走らせるために、指定された密度で特定のスプラインに沿ってビークル アクタをスポーンする BP_SimpleTrafficGenerator というカスタム仕様のブループリントを作成しました。プレイ時またはシミュレーション中には、ビークルは FollowSplineComponent と呼ばれるカスタム仕様のアクタ コンポーネントを使用してスプラインに沿って走ります。

ビークルが走行するのはプレイ時のみであるため、シーケンサー内でそのアニメーションをプレビューまたは微調整することは簡単ではありませんでした。ショットごとに簡単にスクラブ再生して操作することが可能なアニメーション シーケンスをベイクするために、Take Recorder を使用して、最大 100 台分のビークルの約 20 秒の走行ゲームプレイをキャプチャし、それを サブシーケンス として埋め込みました。

遠距離エフェクト
雰囲気とライティングをさらに制御できるように、ディスタンス フォグと街灯が灯っている様子を再現するためにシンプルなカードを使用しました。

遠くの建物の窓に夜間に灯る明かりは City サンプルから移行したマテリアルです。
遠くにあるオブジェクトの反射の精度を保ち、建物の遠い部分にも高品質のシャドウがかかることを確実にするために、反射距離のデフォルト値である「30,000」cm をオーバーライドする r.RayTracing.Culling.Radius 80000
を「DefaultEngine.ini
」ファイルに追加しました。