LoginSignup
11
9

More than 3 years have passed since last update.

検証バージョン: UE4.26.0
 本記事ではUE4のナビゲーションシステムの概要を紹介します。

ナビゲーションの概要

Navigation System

 NavigationSystemはAIと連動して動作し、AIを備えたキャラクターの移動や動作を行う上での補助的な役割を持ちます。UE4のNavigationSystemは主に次の機能を提供します。

・ナビゲーション管理
・パス検索

 ナビゲーション管理の機能は、NavigationMeshやRecastNavMeshを利用しNavigationMeshを作成やその制御を行う機能を示します。パス検索の機能は、AIが目的地まで移動、動作を行う際の最適な移動経路を、効率的に検索、提供することを示します。

2020-12-17_18h31_23.png

Navigation Mesh

 Navigation Mesh(以降、ナビメッシュ)はAgentがAIとしての行動を実行する領域を示すMeshです。Agentはナビメッシュの範囲内でのみ行動を行います。

2020-12-17_18h08_43.png

 ナビメッシュはNavMeshVolumeBoundsやRecastNavMeshといったアクターから自動的に生成を行います。よってAIを利用する際には、先にナビメッシュを生成するためのアクターを配置し、ナビメッシュを生成しておく必要があります。UE4ではこうした作業を簡略化し、複数のパラメータを調整するだけでNavmeshの作成を容易に行うことができ、適切なエージェントの挙動を調整することができます。

エンジンが提供するナビゲーション機能の概要

Engineが提供する機能は主に以下の2つに分類することができます。

・Navigation System
 ゲームコードから直接利用できるNavigation機能と実装を提供します。プロジェクトで独自に拡張するクラスを作成したり、データを参照するのはこちら側のコードが主になります。エンジンが提供する機能やコードを知りたい場合はこちらを見るとよいです。

・Navigation Mesh
 ナビメッシュの構築(recast)や迂回機能(detour)を提供する実装部になります。こちらはNavigation System のオブジェクトでラップされているため直接的に手を加えることは少ないです。こちらのソースコードは以下のgithub上でも公開されているオープンソースのコードがベースとなっています。ナビゲーション機能がどのような仕組みで動作しているか知りたい場合はこちらを見るとよいです。
 [Link] : http://masagroup.github.io/recastdetour/index.html

2020-12-17_12h56_30.png

ドキュメント

 ナビゲーションに関連するドキュメントはあまり多くないですが、以下のドキュメントがとっかかりの参考になります。まずはここでどのような機能があって、どのような操作を行うかを学ぶことができます。

・NavMesh コンテンツ サンプル
 サンプルを使った大まかなナビゲーションの機能が書かれています。
https://docs.unrealengine.com/ja/Resources/ContentExamples/NavMesh/index.html

・Navigation コンポーネント
 NavModifierコンポーネントの機能について書かれています。 
https://docs.unrealengine.com/ja/Basics/Components/Navigation/index.html

・ビヘイビア ツリーのクイックスタートガイド
 ナビメッシュを生成するためのバウンスの配置方法が記載されています。
https://docs.unrealengine.com/ja/InteractiveExperiences/ArtificialIntelligence/BehaviorTrees/BehaviorTreeQuickStart/index.html

 とはいえ、このドキュメントだけでは中々把握して使うのが難しいです。なので取り合えず動かして動作から学ぶか、次の情報を先に見ておくとよいかと思います。

詳細

各機能の詳細や実際に使う上での調整方法について以下の記事にまとめましたのでそちらをご参考頂ければと思います。

[UE4] ナビゲーション機能を提供するクラス-1
[UE4] ナビゲーション機能を提供するクラス-2
[UE4] ナビゲーションのパフォーマンス
[UE4] ナビゲーションシステムの設定とコマンド
[UE4] ナビゲ―ション機能を調整する
[UE4] RecastDemoを使ったシミュレーション

用語

UE4のナビゲーション関連のソースコードを見る際に知っておくと役立つ頻出用語は以下の内容になります。

用語 説明
エージェント
Agent
AIで動作するキャラクター、メタAIなど対象
コスト
Cost
パスやナビメッシュの生成する領域に割り当てられる重み付け
更新エリア
Dirty Area
ものが壊れる、ドアが開く等でナビメッシュに変化が発生した領域
迂回
Detour
パス検索時の移動に関すること
タイル
Tile
ワールド上をグリッド分割した領域
タイルを更に分割してナビメッシュは生成される
パス
Path
エージェントが目的地まで行動、進行する経路
八分木
Octree
ナビメッシュの形成に影響するコリジョン検索のための空間分割検索
障害物
Obstacle
パス検索の妨げ、ナビメッシュ構築の阻害となるようなオブジェクト
生成
Recast
ナビゲーションシステム上では生成,管理することを指します
11
9
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
11
9