LoginSignup
4
1

More than 3 years have passed since last update.

[UE4] ナビゲーションシステムの設定とコマンド

Last updated at Posted at 2020-12-19

検証バージョン: UE4.26.0
 本記事では、ナビゲーションシステムに関連する設定とコンソールなどを紹介します。

設定

 エディタ上で設定することができるProject SettingsとEditor Preferenceについて記載します。

Project Settings

 Project Settingsでは主にシステム全体として適用されるパラメータの定義を行い、ここには大きく分けてNavigation MeshNavigation Systemの2つの内容を設定することができます。

2020-12-18_17h14_51.png

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の範囲を表示できるため便利です。
2020-12-18_17h18_16.png

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の解説含む)

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1