Вот сделка. Я работаю над алгоритмом/библиотекой, способной генерировать навигационную сетку практически в любой среде, где я могу получить координаты для контролируемого агента и/или для других агенты в пределах того же статические окружающая среда. Единственный вход, который у меня есть, - это набор точек, в которых был агент. (See the image here to hopefully understand what I mean)Создание navmesh (3D) из доступных точек
Я уже добрался до точки, где могу создавать навигаторы вручную и хорошо перемещаться по ним. Однако в более крупных средах, имея только координаты, скажем, контролируемого агента, очень трудоемко и требует много времени, чтобы вручную это сделать.
Использует для такого алгоритма/библиотеки для меня очевидны, но я положил много думал в это уже, так что я перечислю несколько вещей, которые я хотел бы выполнить:
- Робототехника (сканирует среду, только получает расстояние от себя к точке, следовательно, получает координаты - нет необходимости в сложной обработке изображений/видео)
- AI, который способен перемещаться по неизвестному и невидимому лабиринту (любой форме или размеру), исследуя его
- Запись пройденных областей и создание ИИ для игр, которые не знают определенных мест, если они не были там
Теперь вы надеетесь увидеть, какие решения я ищу.
Я пробовал пару вещей, но не мог понять их. Одна из самых успешных вещей, которые я пробовал, дает диапазон каждой отдельной точке (создание круга), а затем ищет места с перекрывающимися кругами - вы, скорее всего, будете двигаться по этим областям. Проблемы с этим подходом начались с триангуляции областей. Полученная сетка может быть немного неточной, но она должна быть способна легко подключаться к существующим («обнаруженным») частям сетки (не все должно быть каким-то образом взаимосвязано, так как агенты могут исчезнуть и снова появиться, но в разумной близости подключиться сетка).
Дополнительная информация: Я работаю на C#, хотя решения в java, C++/C, объектных C, псевдокодах и т. Д. Одинаково приемлемы.
P.S. Меня вообще не интересуют ответы, такие как «просто использовать эту библиотеку» или «использовать этот другой язык/среду» и т. Д. ... Я хочу алгоритм. Заранее спасибо.
Итак, если я понял ясно, вы ожидаете, что мы сможем генерировать целые алгоритмы для вас? Это не похоже на тему для SO. –
Зачем вам не интересно использовать существующую библиотеку, чтобы исправить вашу проблему? Мне кажется, что вы не должны пытаться изобретать колесо, особенно для этой сложной системы –