Volume (ボリューム) は、レベル内でボリュームが覆っている領域の動作と特性を変更する、3 次元の アクタ です。
ボリュームではアクタがサポートされており、通常は特定のアクタ タイプが特定の領域に入ったことを検出し、それに反応して何かをトリガーするために使用されます。独自のエフェクトが (コードまたはブループリントで) 組み込まれているボリュームもあります。
ボリュームを使用して、次のようなエフェクトや動作を実装できます。
-
ボリューム内にあるプレイヤーまたは他のアクタにダメージを与える
-
特定のアクタがボリュームに入るのをブロックし、コリジョン サーフェスとして機能する
-
アクタがボリュームに入るときに、環境にある何かを変更する (たとえば、ドアを開ける)
-
レベル内のライティングや可視性を変更する
ボリュームを配置する
他のアクタと同じやり方で、ボリュームをレベルに配置します。
-
メイン ツールバー にある [Create (作成)] ボタンをクリックします。
-
Volumes カテゴリを選択し、配置するボリュームをレベル ビューポートにドラッグします。
詳細については、「アクタを配置する」を参照してください。
レベルに配置したボリュームのサイズや位置を変更できます。詳細については、「アクタをトランスフォームする」を参照してください。
ボリュームを視覚的に表現する
ボリュームには、レベルに配置したときにデフォルトの視覚的表現はありません。つまり、Volume アクタはランタイム時にはまったく見えなくなります。プレイヤーがボリュームを認識できるようにするには、ボリュームに視覚的表現を付加する必要があります。
たとえば、Pain-Causing Volume は、ボリューム内にあるあらゆるものにダメージを与えます。それを使用して、プレイヤーが避けるべき領域 (毒物、溶岩、環境ハザードなど) をマークすることができます。
Pain-Causing Volume をレベルに配置しているが、視覚的表現を付加していない場合、ランタイム時にプレイヤーにはそれが見えません。
インエディタ | インゲーム/PIE |
この場合、プレイヤーはこのボリュームを避けるべきであることに気付かないか、そこに入ったときにダメージを受ける理由を理解できません。
そのため、Pain-Causing Volume について説明するヒントをプレイヤーに与えます。
インエディタ | インゲーム/PIE |
この場合、炎のパーティクル エフェクトによって、その領域が危険である理由の視覚的な説明が与えられています。Pain-Causing Volume では、炎にさらされているときにプレイヤーのヘルス値を減らすゲームプレイ エフェクト付きのビジュアルがサポートされています。
Pain-Causing Volume と炎のパーティクル エフェクトを組み合わせて単一のアクタにして、容易に動かしたり複製したりできるようにすることができます。
Unreal Engine でのボリューム タイプ
このセクションでは、Unreal Engine でよく使用されるいくつかのボリューム タイプについて説明します。ここに示しているのは完全な一覧ではありません。特殊なボリュームについては、それぞれの分野のドキュメントで詳細に説明されています。
コリジョン オーバーラップ ボリューム
Blocking Volume (ブロッキング ボリューム)
スタティックメッシュでのコリジョン サーフェスの代わりに Blocking Volume を使用できます。特に、建造物の壁などに使用されます。このボリュームを使用すると、物理オブジェクトは細かいディテール (床や壁の突起など) と影響し合うことがないため、シーンの動作がより想定どおりになります。また、物理シミュレーションの負荷が軽減されることで、パフォーマンスも向上します。
詳細については、「コリジョン」を参照してください。
Camera Blocking Volume (カメラ ブロッキング ボリューム)
Camera Blocking Volume には、カメラ をブロックし、それ以外のあらゆるものを無視するという、コリジョン設定が事前設定されています。これは、望ましくない場所にカメラが入らないようにする、見えないバリアを定義するためのものです。
たとえば、サードパーソン ゲームで、プレイ エリアの壁が葉の多いつる植物などの装飾で覆われていることがあります。その場合に、薄い Camera Blocking Volume を壁にくっつけて配置することで、カメラがつる植物とぶつかったり葉の裏側に入り込んだりせずにスムーズにスライドでき、遮るものがないプレイヤー アクションのビューを提供できるようになります。
Kill Z Volume (キル Z ボリューム)
Kill Z Volume を使用して、特定のタイプのゲームでオブジェクトが境界を超えないようにします。たとえば、プラットフォーマー ゲームで崖から落ちたり穴に落ちたり、SF 設定で宇宙服なしで宇宙船を離れたりしないようにします。
Kill Z Volume は、そのボリュームに入ったすべてのアクタに対して FellOutOfWorld
関数を呼び出します。デフォルトでは、アクタは簡単なクリーンアップ手順を行ってから、自身を破壊します。異なる動作が必要なゲームでは、任意のアクタ タイプに対してこの動作をオーバーライドできます。たとえば、ゲームを続行するためにプレイヤーが集める必要がある鍵や他のアイテムが溶岩の穴に落ちた場合に、そのアイテムを破壊するのではなく、プレイヤーが到達できるエリアにアイテムをテレポートして戻すことや、ゲームを望ましくない状態のままにするのではなく、そのアイテムが失われたため直前のチェックポイントをリロードするようにプレイヤーに知らせることができます。
Pain-Causing Volume (ダメージ付与ボリューム)
前述の Pain-Causing Volume には、以下のことを指定できる一連の設定可能プロパティがあります。
-
与えるダメージのタイプと量
-
ボリューム内にあるものにダメージを与える頻度
-
初回ダメージを与えるかどうか
これらのプロパティは、ボリュームの [Details (詳細)] パネルで設定します。
Physics Volume (物理ボリューム)
キャラクターや他の物理オブジェクトに影響を及ぼす物理的な設定を行うには、Physics Volume を使用します。
Physics Volume がよく使用されるのは、プレイヤーが泳ぐ必要がある水辺の環境の作成です。Physics Volume のエフェクトは目に見え、適切なビジュアル表現と組み合わされるため、プレイヤーが把握しやすくなっています。
Character Movement Component クラスでは、現在のフィールドを使用して、所有している Character
が環境をどのように進むかを調整します。ゲームにカスタム物理がある場合は、APhysicsVolume
から独自の子クラスを派生させます。
Trigger Volume (トリガー ボリューム)
Trigger Volume は、プレイヤーや他のオブジェクトがボリュームに出入りするときにイベントを発生させることができます。それらを レベル ブループリント で使用すると、ブループリントを追加することなく、イベントおよびゲームプレイのシナリオや機能を試すことができます。
たとえば、Trigger Volume をレベルに配置してから、レベル ブループリントでそのボリュームに対するオーバーラップ イベントを作成して、サウンドの再生、ドアの開閉、シネマティック シーンの開始などを行うことができます。
オーバーラップのコリジョン応答設定でトリガーが意図したアクタに反応するようになっていることを、コリジョン設定で確認することを忘れないでください。
グラフィックス ボリュームとオーディオ ボリューム
Audio Volume (オーディオ ボリューム)
Audio Volume は、覆っている領域にサウンドを追加します。次の 2 種類の Audio Volume を使用できます。
-
Audio Volume (従来のアプローチ)
Cull Distance Volume (カリング距離ボリューム)
Cull Distance Volume は、カメラからのオブジェクトの距離とオブジェクトの サイズに基づいて、オブジェクトがカリングされる (画面に描画されない) ようにします。これは、重要ではないと見なされるほど十分に小さいオブジェクトを描画しないことによって、画面を最適化することに役立ちます。最長寸法に沿ったバウンディング ボックスによってサイズが計算され、選択されるカリング距離は、そのサイズに最も近い距離です。
詳細については、「カリング距離ボリューム」を参照してください。
Hierarchical LOD Volume (階層 LOD ボリューム)
Hierarchical LOD Volume は、複数のアクタを単一の HLOD クラスタにグループ化するために、HLOD (階層詳細度) システムによって使用されます。クラスタの生成時に、Unreal Engine は手動で配置されたボリュームを考慮して、法線生成プロセスをオーバーライドします。
Lightmass Volumes (Lightmass ボリューム)
多くのマップではエディタ内のグリッドの端までメッシュが表示されていますが、高品質なライティングが必要となる実際のプレイ可能領域は、それよりもはるかに小さくなっています。Lightmass はレベルのサイズに基づいて光子を放出するため、背景メッシュが大きいと、放出する必要がある光子の数が大幅に増え、ライティングのビルド時間が長くなります。
Lightmass Importance Volume は、Lightmass が光子を放出する領域を制御し、詳細度の高い間接ライティングを必要とする領域にのみユーザーが集中できるようにします。Lightmass Importance Volume の外側の領域では、1 回だけバウンスした低品質の間接ライティングになります。
Lightmass Character Indirect Detail Volume は Lightmass Importance Volume と似ていますが、地面からプレイヤーの身長までだけでなくボリューム全体の内側まで、間接ライティングのサンプルを生成します。このタイプのボリュームの用途の例として、ボリュームをエレベーターの昇降路に配置して、昇降路の下部だけでなく昇降路全体にわたって間接ライティングが正しくなるようにすることができます。
詳細については、「Lightmass の基礎」を参照してください。
Mesh Merge Culling Volume (メッシュ マージ カリング ボリューム)
Mesh Merge Culling Volume は、そのボリュームに覆われているメッシュ オブジェクトが組み合わされて単一のメッシュになるように、それらのメッシュ オブジェクトをマークします。そうすることで、覆われている領域にある小さいメッシュのコレクションすべてが 1 つのメッシュとしてまとめてカリングされるようにするか、HLOD 生成によってより最適にジオメトリが削減されるようにすることで、パフォーマンスを向上させることができます。
詳細については、「アクタのマージ」を参照してください。
Post Process Volume (ポストプロセス ボリューム)
Post Process Volume は、そのボリューム内にあるカメラに適用されるポストプロセス設定をオーバーライドできます。このボリュームを使用して、レベルの領域ごとに種類が異なるビジュアルを実装できます。たとえば、屋内と屋外の領域に異なる被写界深度 (DoF) を指定することや、局所的な天候エフェクト (フォグなど) に応じて度合いが異なるブルームを指定することができます。
詳細および使用できるエフェクトの一覧については、「ポストプロセス エフェクト」を参照してください。
Precomputed Visibility Volume (事前計算された可視性ボリューム)
Precomputed Visibility Volume は、主にパフォーマンス最適化のために使用されます。このボリュームでは、ワールド内での位置に対するアクタの可視性が格納されます。このボリュームは、プレイヤーがアクセスできる領域にのみ配置します。
詳細については、「ポストプロセス エフェクト」を参照してください。
Precomputed Visibility Override Volume (事前計算された可視性オーバーライド ボリューム)
Precomputed Visibility Override Volume を使用して、Precomputed Visibility Volume によって自動生成された結果を調整する必要がある場合に、ワールド内での位置に対するアクタの可視性をオーバーライドできます。このボリュームは、パフォーマンスの最適化にも使用でき、プレイヤーがアクセス可能な領域にのみ配置します。
詳細については、「ビジビリティおよびオクルージョン カリング」を参照してください。
レベルと AI ボリューム
Level Streaming Volume は レベル ストリーミング プロセスを支援するために使用します。また、プレイヤーのボリュームの出入りに合わせてレベルがメモリに入出力される際、レベルを簡単にカプセル化および制御できるようにします。
Nav Mesh Bounds Volume (ナビ メッシュ バウンズ ボリューム)
ナビ メッシュでは、レベルの領域全体のナビゲーション パスが計算されます。Nav Mesh Bounds Volume は、レベル内のどこにナビ メッシュが構築されるかを制御するために使用されます。
このボリューム内で、歩くのに適切な角度であるすべてのサーフェス上にナビ メッシュが構築されます。望ましいナビ メッシュを生成するに必要な数だけ、このボリュームをオーバーラップさせることができます。
Nav Mesh Bounds Volume を使用するには、レベルのナビゲーション可能な領域を取り囲む 1 つまたは複数のボリュームを作成します。そうすると、ナビ メッシュが自動的に構築されます。
ビューポート内で P キーを押すと、いつでもナビ メッシュを視覚化できます。
機能別 サンプル プロジェクトでは、レベル内にナビ メッシュを実装する方法の実例が示されています。