Введение
Графическая структура данных для поиска пути. Навигационная сетка (navmesh) — это абстрактная структура данных, используемая в приложениях искусственного интеллекта для помощи агентам в навигации по сложным пространствам. Этот подход известен, по крайней мере, с середины 1980-х годов в робототехнике, где он назывался картой лугов, и получил широкое распространение в искусственном интеллекте видеоигр в 2000 году.
A navigation mesh, or navmesh, is an abstract data structure used in artificial intelligence applications to aid agents in pathfinding through complicated spaces. This approach has been known since at least the mid 1980s in robotics, where it has been called a meadow map, and was popularized in video game AI in 2000.
Описание
Навигационная сетка — это набор двумерных выпуклых многоугольников (полигональная сетка), определяющих области среды, доступные для перемещения агентов. Иными словами, персонаж в игре может свободно передвигаться по этим областям, не задевая деревья, лаву или другие препятствия, являющиеся частью окружения. Соседние многоугольники соединены друг с другом в граф. Поиск пути внутри одного из этих многоугольников может быть выполнен тривиально по прямой, поскольку многоугольник выпуклый и проходим. Поиск пути между многоугольниками в сетке осуществляется с помощью одного из множества алгоритмов поиска по графу, таких как A*. Таким образом, агенты, использующие навигационную сетку, могут избежать ресурсоемких проверок на столкновения с препятствиями в окружающей среде. Представление проходимых областей в форме, близкой к двухмерной, упрощает вычисления, которые в противном случае потребовались бы в "реальной" трехмерной среде, однако, в отличие от двухмерной сетки, оно позволяет учитывать проходимые области, перекрывающиеся по высоте. Многоугольники различных размеров и форм в навигационных сетках могут более точно представлять произвольные окружения, чем регулярные сетки.
Создание
Навигационные сети могут создаваться вручную, автоматически или комбинацией этих способов. В видеоиграх дизайнер уровней может вручную задавать полигоны навигационной сети в редакторе уровней. Такой подход может быть весьма трудоемким. Альтернативно, можно разработать приложение, которое принимает геометрию уровня на вход и автоматически генерирует навигационную сеть. Обычно считается, что среда, представленная навигационной сетью, является статической – она не изменяется со временем – и, следовательно, навигационную сеть можно создать заранее и сделать неизменяемой. Однако проводились исследования по онлайн-обновлению навигационных сетей для динамических сред.
История
В робототехнике использование связанных выпуклых многоугольников подобным образом получило название "картографирование лугов", введенное в техническом отчете Рональда К. Аркина в 1986 году. Навигационные сетки в искусственном интеллекте видеоигр обычно связывают со статьей Грега Снука 2000 года "Упрощенное 3D-движение и поиск пути с использованием навигационных сеток", опубликованной в Game Programming Gems. В 2001 году J. M. P. van Waveren описал схожую структуру, состоящую из выпуклых и соединенных 3D-полигонов, названную "Системой осведомленности об окружении", которая использовалась для ботов в Quake III Arena.