トレース は、レベルに作用し、ライン セグメントに沿って何が存在するかのフィードバックを集めます。これは 2 つのエンド ポイント (開始と終了の場所) を指定して使用します。物理システムがこうしたポイント間のライン セグメントをトレースし、ヒットしたアクタ (コリジョン) があればレポートします。トレースは基本的に他のソフトウェア パッケージの レイキャスト や レイトレース と同じです。
ある アクタ が、別のアクタを見ることができるかを知りたい場合、特定のポリゴンの法線を計算、高ベロシティの兵器をシミュレート、または アクタ がある空間に入ったかを知る必要があるなど、いずれの場合でも、トレースは信頼性が高く、演算処理的に負荷が低いソリューションです。このドキュメントでは Unreal Engine 5 (Unreal Engine) の トレース の基本機能について説明します。
チャンネルまたはオブジェクトの種類によるトレース
トレースでは物理システムを使用するため、トレース対象のカテゴリを定義することができます。主に Channels と Object Types の 2 種類のカテゴリがあります。Channels は可視性とカメラのようなものに対して使用され、ほぼトレース関連専用になっています。Object Types は、シーン内でコリジョンを持つアクタの物理の種類です。ポーン、ビークル、被破壊アクタなどがあります。
必要に応じて Channels と Object Types を追加することができます。この方法に関する詳細は、カスタム仕様のオブジェクト タイプをプロジェクトに追加する をご覧ください。
Single または Multiple ヒットを戻す
トレース時にトレースでヒットした条件に一致する最初のものを戻します。または、トレースでヒットした条件に一致するものをすべて戻すこともできます。
Multi Trace by Channel と Multi Trace by Object には考慮すべきことがあります。Muli Trace by Channel を使用する場合、トレースは最初の ブロック を含めて、そこまでのすべての オーバーラップ を戻します。背の高い草に向け銃を撃って、それが壁に衝撃を与えるようなものを想像してください。
Multi Trace by Object は、トレースで探しているオブジェクトの種類と一致するものをすべて戻します。コンポーネントがトレースのクエリーを戻すように設定されていることを前提にしています。トレースの開始と終了との間でオブジェクト数をカウントするのに最適です。
Hit Results
トレースが何かにヒットすると、"Hit Result" 構造体を戻します。ブループリント (および C++) で利用可能であり、これは構造体がどのように見えるかを示しています。
|
形状のトレースを使用する
Line Trace では不十分な場合は、代わりに Shape Trace を使ってみると結果が出る場合があります。例えば、敵に対して "視覚的なコーン" を作成して、そこに入ったプレイヤーを見つけようとしても、プレイヤーは Line Trace の下をくぐり抜ければ検出されないので、 Line Trace では不十分です。
そのような場合は、Box Trace 、 Capsule Trace 、 Sphere Trace を使うことができます。
Shape Trace は Line Trace と同様に、開始ポイントから終了ポイントまでコリジョンに対するスイープとチェックを行います。ただし、レイキャストで形状をボリュームのようなものとして使用しているため、 Shape Traces ではチェックするレイヤーが追加されています。Shape Trace を Single Trace または Multi Trace として使用し、それぞれを Line Trace と同じ方法で設定することができます。ただし、使用する形状のサイズまたは方向に関して詳細を追加で与える必要があります。
トレースからの UV 座標の取得
トレースは、trace complex が使用されることを前提にヒットするアクタの UV 座標を戻します。4.14 時点では、この機能を使えるのは、Static Mesh コンポーネント、 Procedural Mesh コンポーネント、および BSP だけです。Skeletal Mesh コンポーネント では 機能しません。 UV 座標を持たない Physics Asset に対してトレースするからです (trace complex を選択した場合でも)。
この機能を使うと CPUのメモリ使用量が増えます。Unreal Engine では頂点の位置と UV 座標のコピーを追加でメイン メモリで維持する必要があるからです。
トレースからの UV 座標を有効にする
この機能を有効にするためには以下のステップに従います。
-
[Edit Menu (編集メニュー)] から [Project Settings (プロジェクト設定)] にアクセスします。
-
[Project Settings] の [Physics Section] で、[Support UV From Hit Results] 機能を有効にします。
-
エディタを再起動します。
エディタを再起動する前に、この機能を使ってブループリントの Find Collisoin UV ノードを調べることはできますが、調べると [0.0, 0.0] を戻すだけです。 ノードが正しい UV データを戻すようにするには、エディタを再起動する必要があります。
その他の機能
トレースには、何を戻すかを制限し、デバッグを簡単にするいくつかの機能があります。スタティックメッシュまたはプロシージャルなメッシュでそれを有効にしていれば、Complex Collision をトレースする機能があります。そうした機能が アクタ から呼び出される場合、アクタ 自体のトレースを有効にすることで、すべてのアタッチされたコンポーネントを無視するように指示することができます。最後に、トレースを赤と緑のラインで表します。大きなボックスはヒットを表します。