World Partition が設定された静的なナビゲーション メッシュ

World Partition を静的なナビゲーション メッシュに使用する方法の概要を説明します。

このドキュメントでは、World Partition が設定された Navigation Mesh と Unreal Engine の World Partition システムの使用法についての概要を説明します。

World Partition は、自動データ管理および距離ベースのためのレベル ストリーミング システムであり、大規模なワールドの管理のための完全なソリューションを提供します。World Partition は、グリッド セルに分割された単一のパーシスタント レベルにワールドを保存することで、大きなレベルをサブレベルに分割するという必要性を排除し、ストリーミング ソースからの距離に応じてそれらのセルをロードおよびアンロードする自動ストリーミング システムを提供します。

このシステムの詳細については、「World Partition」のドキュメントをお読みください。

このドキュメントでは、World Partition が設定された静的なナビゲーション メッシュのみを対象としています。

1 - 必要な設定

  1. [Games (ゲーム)] カテゴリのテンプレートから新規プロジェクトを作成します。この例では Third Person テンプレートを選択しました。

    Create a new project

  2. エディタで、 [File (ファイル)] > [New Level (新規レベル)] をクリックします。[Open World (オープン ワールド)] マップ タイプを選択し、[Create (作成)] をクリックします。レベルを保存します。

    Create a new Open World level

    Open World デフォルト マップ タイプは、大規模なオープン ワールド マップを作成するための開始点として設計されており、デフォルトで次の機能が有効になっています。

    • World Partition

    • One File Per Actor

    • Data Layers (データ レイヤー)

    • Hierarchical Levels of Detail (階層詳細度)

  3. [World Settings (ワールドセッティング)] パネルに移動し、[World Partition] セクションまで下にスクロールします。

    1. [Runtime Settings (ランタイム設定)] > [Grids (グリッド)] > [Index [0]] を展開します。

    2. [Loading Range (ロードする範囲)] の値を 12800 に変更します。値を小さくするほど、World Partition によってナビゲーション メッシュがロードされる際に視覚化が簡単になります。

    Create a new Open World level

このセクションの結果

このセクションでは、World Partition を使用するように設定したレベルを備えた新しいプロジェクトを作成しました。次のセクションでは、ナビゲーション メッシュが World Partition と連携するように構成します。

2 - ナビゲーション メッシュが World Partition を使用するように構成する

  1. [Settings (設定)] > [Project Settings (プロジェクト設定)] をクリックして [Project Settings] ウィンドウを開きます。

    Click Settings > Project Settings to open the Project Settings window

  2. [Navigation Mesh (ナビゲーション メッシュ)] カテゴリをクリックし、[Runtime (ランタイム)] セクションまで下にスクロールします。[Runtime Generation (ランタイム生成)] ドロップダウンをクリックして [Static (スタティック)] を選択します。

    Click the Runtime Generation dropdown and select Static

  3. より大きなマップの場合は、 [Fixed Tile Pool Size (固定タイル プール サイズ)] チェックボックスを 有効 にして、[Tile Pool Size (タイル プール サイズ)] を設定して、タイル プールで使用されるメモリの量を制限できます。プール サイズを設定するときは、ロードされるすべての World Partition セルに対応する NavMesh タイルもロードされるように、十分なタイルが含まれていることを確認してください。

    Enable the Fixed Tile Pool Size checkbox and set a Tile Pool Size

  4. [Add + (追加 +)] > [Volumes (ボリューム)] > [NavMeshBoundsVolume] をクリックし、Navigation Mesh ボリューム アクタをレベルに追加します。

    Add a Navigation Mesh volume actor to your level

  5. [Outliner (アウトライナ)] ウィンドウで [NavMeshBoundsVolume] アクタを選択し、[Details (詳細)] パネルに移動します。

    1. レベル内のプレイ可能空間をカバーするようにアクタを スケーリング します。

    2. ビルド中のナビゲーションをビューポートで確認するには、P を押します。

    Select the NavMeshBoundsVolume actor in the Outliner window

    Press P to see the navigation being built in the viewport

  6. [World Outliner] ウィンドウで [RecastNavMesh-Default] を選択し、[Details] パネルに移動します。[Generation (生成)] セクションまで下にスクロールし、[Is World Partitioned (ワールド パーティションか)] チェックボックス をオンにします。

    Select the RecastNavMesh-Default actor in the Outliner window

    Enable the Is World Partitioned checkbox

このセクションの結果

このセクションでは、ナビ メッシュ バウンズ ボリュームをレベルに追加しました。また、World Partition と連携するようにナビゲーション メッシュを構成しました。

次のセクションでは、ワークフローが改善されるようにエディタを構成します。

3 - エディタを構成する

非常に大きなレベルで作業を行う場合が多いため、ワークフローを改善するために自動ナビゲーション メッシュ生成を無効にすることをお勧めします。

これについては、以下の手順に従ってください。

  1. [Edit (編集)] > [Editor Preferences (エディタの環境設定)] の順に選択すると、[Preferences (環境設定)] ウィンドウが開きます。

    Click Edit - Editor Preferences to open the Preferences window

  2. [Level Editor (レベル エディタ)] セクションまで下にスクロールして、[Miscellaneous (その他)] カテゴリをクリックします。[Editing (編集)] カテゴリまで下にスクロールし、[Update Navigation Automatically (ナビゲーションの自動更新)] チェックボックスをオフにします。

    Disable the Update Navigation Automatically checkbox

このセクションの結果

このセクションでは、ナビゲーション メッシュが自動的に更新されないように構成しました。これによって、通常、World Partition を使用する大規模なワールドで作業する際にワークフローが改善されます。

次のセクションでは、レベルでナビゲーション メッシュをビルドします。

2 - ナビゲーション メッシュを作成する

World Partition を設定したマップで作業する際は、通常、一部のアセットがロードされる一方で、他のアセットはアンロードされます。そのため、ナビゲーション メッシュ全体のビルドには異なるプロセスが必要です。

レベルでナビゲーション メッシュをビルドするには、次の手順に従います。

  1. コマンド ラインに次のコンソール コマンドを入力し、Enter を押します。n.bNavmeshAllowPartitionedBuildingFromEditor 1

    Enter the command n.bNavmeshAllowPartitionedBuildingFromEditor 1

  2. [Build (ビルド)] > [Build Paths (ビルド パス)] をクリックし、レベルでナビゲーション メッシュをビルドします。

    Click Build - Build Paths to build the Navigation Mesh in your level

  3. [Build Navigation Settings (ビルド ナビゲーション設定)] ウィンドウで、 [Ok] をクリックし、ナビゲーション メッシュをビルドします。次のオプションも利用できます。

    1. Verbose (詳細)- ビルド プロセスのより詳細なログを確認する場合は、このチェックボックスをオンにします。プロジェクトの 「Saved」 > 「Logs」 ディレクトリに、WPNavigationBuilderLog.txt という名前の出力ログが作成されます。

    2. Clean Packages (パッケージを消去) - すべての World Partition が設定された NavMesh アクタ パッケージをプロジェクトから削除する場合はこれをオンにします。これは、ナビゲーションをビルドしません。

    Build Navigation Settings options

  4. ここで [Outliner] ウィンドウに移動すると、4 つの NavDataChunk アクタがあることがわかります。これらのアクタは、World Partition によってロードおよびアンロードされるナビゲーション データを保持します。作成される NavDataChunk アクタの数は、Data Chunk Grid のサイズによって異なります (詳細については、セクション 6 を参照してください)。

    Go to the Outliner window and notice that you now have four NavDataChunk Actors

このセクションの結果

このセクションでは、レベルでナビゲーションをビルドする方法を学習しました。また、異なる [Navigation Settings] オプションと NavDataChunk アクタがレベル内に作成される仕組みについても学習しました。

次のセクションでは、エディタの外部でナビゲーションをビルドする方法を学習します。

5 - World Partition Navigation Data Builder を使用してナビゲーション メッシュをビルドする

WorldPartitionBuilderCommandletWorldPartitionNavigationDataBuilder を使用し、World Partition が設定された静的なナビゲーション メッシュをエディタの外部でビルドすることもできます。

これを実行する方法の詳細については、「World Partition」ドキュメントの World Partition Navigation Data Builder のセクションの手順に従ってください。

6 - ナビゲーション メッシュの追加設定

  1. [World Settings] ウィンドウに移動して [Navigation] セクションまで下にスクロールし、レベルの [Navigation Mesh (ナビゲーション メッシュ)] 設定を見つけます。

    次のオプションがあります。

    設定

    説明

    Navigation Data Chunk Grid Size (ナビゲーション データ チャンク グリッド サイズ)

    これは、World Partition の各セルを使用してロードされる、データ チャンク アクタのサイズを定義します。この数値が小さいほど、データは詳細になります。

    Navigation Data Builder Loading Cell Size (ナビゲーション データ ビルダー ローディング セル サイズ)

    これは、ナビゲーション データをメモリにロードするために使用される、ロードするセルのサイズを定義します。

    Navigation Data Chunk Grid Size (ナビゲーション データ チャンク グリッド サイズ)25600 に設定します。この数値が小さいほど、World Partition によってロードおよびアンロードされるナビゲーション データの表示が向上します。この値は、ゲームプレイのニーズ、ロードする範囲、および必要な詳細度に基づいて調整する必要があります。

    Set the Navigation Data Chunk Grid Size to 25600

  2. [Build (ビルド)] > [Build Paths (ビルド パス)] をクリックし、レベルでナビゲーション メッシュをビルドします。

  3. ここで [Outliner] ウィンドウに移動すると、レベルにさらに多くの NavDataChunk アクタがあることがわかります。これは、チャンク グリッド サイズが前よりも小さかったことが原因と想定されます。

    There are many more NavDataChunk** **actors in the level

このセクションの結果

このセクションでは、[Navigation Data Chunk Grid Size] の変更方法、およびレベル内で作成される NavDataChunk アクタの数への変更の影響について学習しました。

次のセクションでは、プレイヤーがレベルを移動する際にレベルでナビゲーション メッシュのロードおよびアンロードがどのように行われるかを学習します。

7 - 結果を表示する

World Partition のセルを使用して、どのようにナビゲーション メッシュがロードおよびアンロードされるかを表示するには、以下の手順を実行します。

  1. コマンド ラインに次の Navigation Mesh Gameplay Debugger コンソール コマンドを入力し、Enter を押します。

    1. ai.debug.nav.RefreshInterval 0.3

    2. ai.debug.nav.DisplaySize 100

    これらのコマンドにより、ナビゲーション メッシュのビジュアライゼーションの表示サイズおよび更新頻度が調整されます。

    Enter the ai.debug.nav.DisplaySize 100 command

  1. ゲームを開始するには、 [Play (プレイ)] を押します。チルダ (~) を押してコマンド ラインを開き、次の World Partition デバッグ コマンドを入力します。

    1. wp.Runtime.ToggleDrawRuntimeHash2D

    2. wp.Runtime.ShowRuntimeSpatialHashGridLevel 2

    これらのコマンドにより、プレイヤーに対してロードされる World Partition セルが表示されます。

    During gameplay you can see a display of which World Partition cells are loaded around the player

  2. 単一引用符 (‘) を押して [Gameplay Debugger (ゲームプレイ デバッガー)] を有効にし、ゼロ (0) を押して ナビゲーション ビューに切り替えます。これで、プレイヤーに対してロードされるナビゲーション メッシュを表示できます。

    You can see the Navigation Mesh loaded around the player

  3. レベルを動き回り、各 World Partition セルがプレイヤーに対してロードされる際にナビゲーション メッシュがどのようにロードされるかを表示します。

    Move around the level and see how the Navigation Mesh is loaded around the player

    Top view of the Navigation Mesh being loaded around the player

このセクションの結果

このセクションでは、World Partition によってナビゲーション メッシュがロードおよびアンロードされる際にどのように視覚化されるかを学習しました。

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