Введение

Графическая структура данных для поиска пути. Навигационная сетка (navmesh) — это абстрактная структура данных, используемая в приложениях искусственного интеллекта для помощи агентам в навигации по сложным пространствам. Этот подход известен, по крайней мере, с середины 1980-х годов в робототехнике, где он назывался картой лугов, и получил широкое распространение в искусственном интеллекте видеоигр в 2000 году.

Описание

Навигационная сетка — это набор двумерных выпуклых многоугольников (полигональная сетка), определяющих области среды, доступные для перемещения агентов. Иными словами, персонаж в игре может свободно передвигаться по этим областям, не задевая деревья, лаву или другие препятствия, являющиеся частью окружения. Соседние многоугольники соединены друг с другом в граф. Поиск пути внутри одного из этих многоугольников может быть выполнен тривиально по прямой, поскольку многоугольник выпуклый и проходим. Поиск пути между многоугольниками в сетке осуществляется с помощью одного из множества алгоритмов поиска по графу, таких как A*. Таким образом, агенты, использующие навигационную сетку, могут избежать ресурсоемких проверок на столкновения с препятствиями в окружающей среде. Представление проходимых областей в форме, близкой к двухмерной, упрощает вычисления, которые в противном случае потребовались бы в "реальной" трехмерной среде, однако, в отличие от двухмерной сетки, оно позволяет учитывать проходимые области, перекрывающиеся по высоте. Многоугольники различных размеров и форм в навигационных сетках могут более точно представлять произвольные окружения, чем регулярные сетки.

Создание

Навигационные сети могут создаваться вручную, автоматически или комбинацией этих способов. В видеоиграх дизайнер уровней может вручную задавать полигоны навигационной сети в редакторе уровней. Такой подход может быть весьма трудоемким. Альтернативно, можно разработать приложение, которое принимает геометрию уровня на вход и автоматически генерирует навигационную сеть. Обычно считается, что среда, представленная навигационной сетью, является статической – она не изменяется со временем – и, следовательно, навигационную сеть можно создать заранее и сделать неизменяемой. Однако проводились исследования по онлайн-обновлению навигационных сетей для динамических сред.

История

В робототехнике использование связанных выпуклых многоугольников подобным образом получило название "картографирование лугов", введенное в техническом отчете Рональда К. Аркина в 1986 году. Навигационные сетки в искусственном интеллекте видеоигр обычно связывают со статьей Грега Снука 2000 года "Упрощенное 3D-движение и поиск пути с использованием навигационных сеток", опубликованной в Game Programming Gems. В 2001 году J. M. P. van Waveren описал схожую структуру, состоящую из выпуклых и соединенных 3D-полигонов, названную "Системой осведомленности об окружении", которая использовалась для ботов в Quake III Arena.