カスタム ナビゲーション システムとクエリ フィルタ

このガイドでは、ナビゲーション システムでカスタム エリアとクエリ フィルタを使用する方法を説明します。

Windows
MacOS
Linux
前提トピック

このページは以下のトピックへの知識があることを前提にしています。まず以下のトピックの内容についてご確認をお願いします。

概要

Unreal Engineナビゲーション システム では、エージェントがパス検索に ナビゲーション メッシュ を使用してレベルをトラバースできます。

エージェントは、ナビゲーションメッシュ内の各ナビゲーションポリゴンのコストを比較することで、目的地までの最適なルートを決定します。ルートに沿ったポリゴンのコストがすべて同じ場合、エージェントはターゲットへの最短パス (通常は直線) を選択します。

Navigation Modifier ボリュームナビゲーション クエリ フィルタ を使用して、ナビゲーション ポリゴンのコストを調整することができます。

ナビゲーション モディファイア ボリュームは 領域クラス (Area Class) を使用して、ボリューム内のナビゲーションの デフォルト コスト 乗数を決定します。領域クラスは、エージェントがこの領域に入ったときに適用される初期コストである 領域侵入の固定コスト も定義します。領域クラスは、エージェントがレベル内を移動する方法に影響を与えるのに必要な数を作成できます。

ナビゲーション クエリ フィルタ には、1 つ以上の領域クラスに関する情報が含まれており、ナビゲーション クエリ フィルタによって必要に応じてコスト値をオーバーライドできます。クエリ フィルタは、エージェントがレベル内を移動する方法のカスタマイズに必要な数だけ作成できます。

目標

このクイック スタート ガイドでは、さまざまなエージェントが同じナビゲーション メッシュをターゲットに向かってトラバースする方法に影響を与えるために使用する独自のナビゲーション領域とクエリ フィルタを作成、使用する方法を学習します。

目的

  • ナビゲーション モディファイア ボリュームと一緒に使用する 3 つのカスタム領域クラスを作成する。

  • エージェントが使用する 2 つのナビゲーション クエリ フィルタを作成する。

1 - カスタム領域クラスを作成する

  1. [Place Actors (アクタを配置)] パネルに移動して「 Nav Modifier Volume」を検索します。[Nav Modifier Volume] アクタをレベルにドラッグして、Floor メッシュ上に配置します。[Details (詳細)] パネルに移動して [Scale (拡大・縮小)] を X = 2、Y = 6、Z = 1 に設定します。

    Drag the Nav Modifier Volume Actor into your Level

    Set the Scale to X = 2, Y = 6, Z = 1

  2. コンテンツ ブラウザ 内で右クリックして、 [Create Basic Asset] セクションの [Blueprint Class] を選択します。

    Select Blueprint Class under the Create Basic Asset section

  3. [Pick Parent Class (親クラスを選択)] ウィンドウで [All Classes (すべてのクラス)] セクションに行き、矢印を展開します。「Nav Area」を検索して選択します。[Select (選択)] をクリックして、ブループリントに「 BP_Area_Neutral 」という名前を付けます。

    Go to the All Classes section and expand the arrow. Select Nav Area

    Name the Blueprint BP_Area_Neutral

  4. 前の 2 手順を 2 回繰り返し、それらのブループリントに「 BP_Area_Lane1 」および「 BP_Area_Lane2 」という名前を付けます。

  5. BP_Area_Lane1 ブループリントをダブルクリックして開きます。ボリューム内を移動する際の [Default Cost (デフォルト コスト)] 乗数と[Fixed Area Entering Cost (領域侵入の固定コスト)] を変更できます。この例では、これらの設定をデフォルト値のままにしておきます。

  6. [Draw Color (描画カラー)] バーをクリックして 色を選択します。コンパイル して 保存 します。 Click the Draw Color bar and select a blue color

  1. BP_Area_Lane2 ブループリントに対しても上記の手順を繰り返し、[Draw Color] に変更します。

  2. レベル内の Nav Modifier Volume を選択し、 [Details] パネルで [Area Class (領域クラス)] ドロップダウンをクリックして [BP_Area_Neutral] を選択します。

    Select BP_Area_Neutral from the dropdown

    Notice how the area changes color in the Level

  3. この Nav Modifier Volume を複製して上記の手順に従い、[Area Class][BP_Area_Lane1] に変更します。このボリュームを、以下のように横に移動し、レーンを作成します。 Duplicate the Nav Modifier Volume and follow the steps above to change the Area Class to BP_Area_Lane 1

  1. 前述の手順を繰り返しって Nav Modifier Volume を複製し、[Area Class][BP_Area_Lane2] に設定します。このボリュームを、以下のように横に移動し、レーンを作成します。

    Duplicate the Nav Modifier Volume and follow the steps above to change the Area Class to BP_Area_Lane 2

  2. これで、各 [Area Class] の値を変更してエージェントがターゲットに向かうパスに影響を与える実験ができます。以下の例では、BP_Area_NeutralBP_Area_Lane1[Default Cost] がいずれも 4 に設定されています。

    In this example the Default Cost of BP_Area_Neutral and BP_Area_Lane 1 are both set to 4

  3. この例では、BP_Area_Neutral BP_Area_Lane2[Default Cost] がいずれも 4 に設定されています。

    In this example the Default Cost of BP_Area_Neutral and BP_Area_Lane 2 are both set to 4

このセクションの結果

このセクションでは、3 つのカスタム 領域クラス を作成し、レベルに配置しました。また、それらの 領域クラス[Default Cost] 値を変更して、エージェントがターゲットに向かう移動に影響を与えました。

2 - ナビゲーション クエリ フィルタを作成する

  1. コンテンツ ブラウザ 内で右クリックして、 [Create Basic Asset] セクションの [Blueprint Class] を選択します。

    Select Blueprint Class under the Create Basic Asset section

  2. [Pick Parent Class (親クラスを選択)] ウィンドウで [All Classes (すべてのクラス)] セクションに行き、矢印を展開します。「 Navigation Query Filter」を検索して選択します。[Select] をクリックして、ブループリントに「 BP_QueryFilter1** 」という名前を付けます。

    Search for and select Navigation Query Filter

    Name the Blueprint BP_QueryFilter 1

  3. BP_QueryFilter1 ブループリントをダブルクリックして開きます。[Areas (領域)] セクションの隣の 追加 (+) ボタン をクリックして展開します。

    Click on the Add button next to the Areas section to expand it

  4. [Area Class] の隣のドロップダウンをクリックし、「 BP_Area_Neutral 」を検索、選択します。[Travel Cost Override (移動コストのオーバーライド)] チェックボックスをオンにし、「100」と入力します。

    Click the dropdown next to Area Class and search for and select BP_Area_Neutral

    Enable the Travel Cost Override checkbox and enter 100

  5. 前述の手順を繰り返して、 BP_Area_Lane1BP_Area_Lane2 をリストに追加します。BP_Area_Lane2[Travel Cost Override] チェックボックスをオンにして「100」と入力します。

    Repeat the previous step to add BP_Area_Lane 1 and BP_Area_Lane 2 to the list

  6. コンテンツ ブラウザ[BP_QueryFilter1] ブループリントを右クリックして [Duplicate (複製)] を選択します。

  7. BP_QueryFilter2 ブループリントをダブルクリックして開きます。領域クラス BP_Area_Lane1[Travel Cost Override] チェックボックスをオンにして値を 100 に設定します。領域クラス BP_Area_Lane2[Travel Cost Override] チェックボックスをオフにします。

    Enable Travel Cost Override for BP_Area_Lane 1 and disable Travel Cost Override for BP_Area_Lane2

  8. ブループリントを コンパイル して、保存 します。

  9. レベル内の BP_NPC ブループリントを選択し、 [Details] パネルで [Filter Class (フィルタ クラス)] ドロップダウンをクリックして「 BP_QueryFilter1 」を検索、選択します。

    Click the Filter Class dropdown, then search for and select BP_QueryFilter 1

  10. [Simulate (シミュレート)] をクリックし、エージェントが ナビゲーション クエリ フィルタ を使用してどのように目的地までの最適なルートを決定しているのかを観察します。BP_QueryFilter1 には最もコストの低いルートとして BP_Area_Lane1 があるので、エージェントはそれを使用してスフィアに到達します。

    Since BP_QueryFilter 1 has the BP_Area_Lane 1 as the cheapest route, the Agent uses it to reach the Sphere

  11. BP_NPC ブループリントを選択して [Filter Class][BP_QueryFilter2] に変更します。[Simulate] をクリックして、エージェントがどのように BP_Area_Lane2 領域を使用して目的地に到達するのかを観察します。

    The Agent now uses BP_Area_Lane 2  area to reach its destination

このセクションの結果

このセクションでは 2 つの ナビゲーション クエリ フィルタ を作成し、前のセクションの 3 つの 領域クラス を追加しました。また、 領域クラス に関連付けられたコスト値を変更して、異なる ナビゲーション クエリ フィルタ を使用する際のエージェントのナビゲーションを変更しました。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる