検証バージョン: UE4.26.0
本記事では、ナビゲーションシステムに関連する設定とコンソールなどを紹介します。
設定
エディタ上で設定することができるProject SettingsとEditor Preferenceについて記載します。
Project Settings
Project Settingsでは主にシステム全体として適用されるパラメータの定義を行い、ここには大きく分けてNavigation Mesh
、Navigation System
の2つの内容を設定することができます。
Navigation System
Navigation SystemとしてNavigation全般の制御に関する内容を設定します。実際にはUNavigationSystemV1
の項目を設定することになります。
項目 | 説明 |
---|---|
Navigation | |
Default Agent Name | デフォルトサポートエージェント Noneでない場合、デフォルトでサポートするエージェント名を指定します |
Crowd Manager Class | CrowdManagerクラス指定 使用するCrowdManagerクラスを指定します |
Navigation | |
Auto Create Navigation Data | ナビゲーションデータ自動生成 レベル初期化時にSupportedAgetsの整合性をチェックし不足しているRecastNevMeshを生成します、Editor再起動で反映 |
Spawn Nav Data in Nav Bounds Level | ナビデータのサブレベル生成 有効な時、サブレベルにBoundsがある場合はナビデータもサブレベルに生成します 無効な場合はパーシスタントレベルを尊重します |
Allow Client Side Navigation | クライアントナビゲーション許可 Server-Client構成の場合においてClientでNavmeshを生成するか |
Should Discard Sub Level Nav Data | サブレベルナビデータ非許可 サブレベルに配置されたナビデータの読み込みを無効化します |
Tick While Paused | ポーズ中の更新許可 ゲームのポーズ中にもナビゲーションシステムのTick更新を許可するか |
Initial Building Locked | 初期ビルドロック設定 trueに設定された場合、RecastNavMeshのRuntimeGeneration設定がDynamicであってもNavmeshの再構築は行わず初期構築時の状態でロックされる |
Skip Agent Height Check When Picking Nav Data | 高さチェックスキップ 最適なAgentDataを選択時にHeightチェックをスキップしてRadiusのみ対象とする |
Data Gathering Mode | ナビゲーションデータ収集設定 Navigation Octreeのスライスタイミングを意図的に遅らせる場合Lazyに設定 |
Dirty Areas Update Freq | 更新エリアチェック頻度 [fps] Navmeshで変更が発生したAreaの再構築を実行する周期の設定(60=1/60 sec周期) DirtyAreaのRebuildチェックはNavigationSystemのTickで常に監視 |
Dirty Areas Warning Size Threshold | 更新エリア警告ログ閾値 正の値が設定された時にその値以上の2Dサイズの変更エリアを検出したらログ出力する |
Navigation Enforcing | |
Generate Navigation Only Around Navigation Invokers | 強制ナビゲーション生成 有効な場合Navmesh Volumeの範囲ではなくNavigation Invokerの指定範囲を優先して強制的にNavmeshを生成する |
Active Tiles Update Interval | 有効タイル更新間隔 [Sec] InvokerによるNavmesh生成のためのタイル生成間隔 |
Agents | |
Supported Agents | サポートエージェント Agent毎に任意の設定を可能、サポートするエージェントはRecastNavmesh毎に管理され、Navmesh Volume毎にサポート対象を任意に設定することが可能 |
Name | サポートエージェント名 サポートするAgentの名前を任意に付けることが可能 RecastNavmeshの名称付与にも使用される |
Color | サポート領域のNavmeshカラー Navmesh生成時のデバッグ描画時色指定 エージェント毎の有効領域を視認するのに有効 |
Default Query Extent | Nav Query生成エリアサイズ ProjectPointで投射面を検索する際のPolygon検索範囲 |
Navigation Data Class | NavData設定 Navigationをサポートするエリアデータ指定 |
Nav Agent Radius | エージェント半径 最適なSupported Agentsのデータを決定する際に基準となるAgent半径値 この値がCharacterのCapsule Radiusと最も近い値を持つものを優先する (複数のSupportedAgentsが設定されている時のみ) |
Nav Agent Height | エージェント高さ 最適なSupported Agentsのデータを決定する際に基準となるAgent半径値 この値がCharacterのCapsule Height*2と最も近い値を持つものを優先する (複数のSupportedAgentsが設定されている時のみ) |
Nav Agent Step Height | Navmeshの生成をサポートする段差値 隣接するObjectに対して指定の値だけZ値の差をカバーしてNavmeshを生成Navigationと障害物間のNavmeshを適応する補正値 |
Nav Walking Search Height Scale | Nav Walking設定時に投影するNavmesh検索時の境界の高さに適用するスケール係数 |
PreferredNavData | 優先Nav Data設定 Navigationをサポートするエリアの属性指定するが、Nav Movementを行うAgentの有効Nav Dataチェックにも使用され、自身のNav Dataと一致しない場合には適切なNavDataを自動選択してNav Moveを行う |
Can Crouch | 移動モード「しゃがみ」許可 ※ 未使用 |
Can Jamp | 移動モード「ジャンプ」許可 ※ 未使用 |
Can Walk | 移動モード「歩行」許可 ※ 未使用 |
Can Swim | 移動モード「泳ぎ」許可 ※ 未使用 |
Can Fly | 移動モード「飛行」許可 ※ 未使用 |
Supported Agents Mask | エージェントサポートフラグ 使用するエージェントの有効/無効を制限するフラグ |
※未使用:設定しても何かに影響があるというわけではないものの、項目の設定内容は反映されているため、値自体を使用して拡張先で使用する事は可能です。 |
Navigation Mesh
プロジェクト内で共通のNavigation Data(ナビデータ)を設定します。実際にはARecastNavMesh
の項目を設定することになります。
設定内容については、Recast Navmeshをご参考ください。
Editor Preference
レベルエディタでのビューポート操作など、ナビゲーション関連のエディタ設定について紹介します。
General - Keyboard Shortcuts
項目 | 説明 |
---|---|
Level Editor | |
Cycle Navigation Data Draw | RecastNavMeshデバッグ描画一括で切り替えコマンド 複数Agentが登録時、デバッグ表示をAgent毎に順番に切替表示する際に役立つ Show Navigationが有効な状態でのみ有効 |
Level Viewports | |
Show Navigation | Navmeshのデバッグ表示の有効/無効を切り替えコマンド Navmeshが存在していない、生成されていないような条件においては無効 |
Show Navigation Sprites | Navigation関連ActorのSprite表示切り替えコマンド 特にLevel Editor上で編集する際に表示を切り替えるのに役立つ |
Level Editor - Miscellaneous
項目 | 説明 |
---|---|
Editing | |
Update Navigation Automatically | ナビメッシュ自動リビルド Level Editorの操作時に更新エリアが発生した際に自動的にリビルドを行います 大規模なNavigationの編集を行う際は編集を行うたびにRebuildが発生するため注意 |
コンソールコマンド
ナビゲーション関連のコンソールコマンドについて紹介します。
Show Navigation
Navmeshの表示を行うためのコマンドです。Navmeshのテストを行う際は以下のような初期処理において表示を有効にしておくと、実行時にNavmeshの範囲を表示できるため便利です。
CycleNavDrawn
RecastNavMeshのEnableDrawingフラグ(デバッグ描画)を一括で切り替えるコマンド
複数Agentが登録時、デバッグ表示をAgent毎に順番に切替表示する際に役立つ
Show Navigationが有効な状態でのみ有効
RebuildNavigation
NavigationのRebuildを実行するコンソールコマンドです。RecastNavmesh(ナビデータ)がレベル上に存在しない場合は無効となるため、NavmeshBoundsVolumeとRecastNavmeshが存在していることを事前にご確認ください。
CountNavMem
NavgationDataのメモリ使用量を表示するコマンドです。Nav OctreeはAllocateメモリを表示、RecastNavmeshはAllocateメモリと自身のサイズします。
Stat Navigation
Navigation関連のStatsを表示するためのコマンドです。Navigation関連のパフォーマンスを調べたい時に使用します。ランタイムでの使用メモリ量や、ナビメッシュ構築にかかるパフォーマンスの簡易的な計測が可能です。
ai.crowd.xxx
Visual Loggerで表示するログの情報を切り替えるコマンドです。詳細はCrowdManager.cppをご確認ください。
コマンドレット
ナビゲーション関連のコマンドレットについて紹介します。
ResavePackages
ResavePackages
コマンドレットに引数-BuildNavigationData
を追加してオフラインでのナビメッシュ生成+保存ができるようになっています。ResavePackagesの使い方に関しては[UE4]全アセット または 特定アセットを強制的に再保存する方法について(ResavePackagesCommandletの解説含む)