Потому что статичная геометрия. Да и мало ли, вдруг у тебя монстр по ним прыгать будет?
Цитата:
Дядя Миша писал: 3. Как эти островки соединятся с основным навмешем?
Особо не вникал, но на юнити видел примеры где монстр мог например спрыгнуть с такого ящика на пол и наоборот запрыгнуть. Чем то на ступеньки похоже.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
(_-=ZhekA=-_) писал: Если у монстра есть логика забираться на что-то, то когда он заберется то будет юзать этот навмеш, который создается сверху
Т.е. переход между навмешами монстр осуществляет по собственному усмотрению, так? А есть ли какая-то максимальная дистанация на которой он может найти соседние? Или скажем если где-то навмеша нет, то он бегает по обычной геометрии?
Добавлено 10-04-2023 в 12:34:
Цитата:
FiEctro писал: Скорее всего чтобы немного сгладить прямые углы.
Тогда почему они хаотично неровные, причём даже там, где никакого угла и близко нету?
Цитата:
FiEctro писал: Потому что статичная геометрия.
И что, что статичная?
Цитата:
FiEctro писал: видел примеры где монстр мог например спрыгнуть с такого ящика на пол
Дядя Миша писал: Т.е. переход между навмешами монстр осуществляет по собственному усмотрению, так?
Ну, да. То есть монстр залез на препятствие и попал в зону навмша, который создался сверху и пошел дальше, если его там нет, то монстер, залезет и остановится или пойдет обратно туда, где есть навмеш.
Цитата:
Дядя Миша писал: А есть ли какая-то максимальная дистанация на которой он может найти соседние?
Не встречал, возможно нужно писать отдельно в коде АИ для монстра.
Цитата:
Дядя Миша писал: Или скажем если где-то навмеша нет, то он бегает по обычной геометрии?
Монстр остановиться у границ созданного навмеша и за ее пределы не пойдет
__________________
Kiss my ass if you don't like my Ford!
------------------------------------------ Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.
Меня в навмешах более всего интерисует вопрос, как там пути находятся.
Возможно аналитической трассировкой внутри самого навмеша, но навскидку я ничего не придумал.
Добавлено 10-04-2023 в 13:28:
Или, учитывая, что навмешей может быть множество - как строится путь от одного края карты до другого, если на этом пути - сотня не связанных друг с другом навмешей.
Ну то есть вот мы дали команду монстру бежать к черту на рага, как он это выполнит? Есть примеры?
Ты можешь на уровне поставить один NavMeshBoundsVolume на весь уровень или можешь их хоть 500 понаставить и все они автоматом будет работать, как один. Я не пробовал, но думаю, если монстру дать команду бежать с одного края карты на другой и при этом навмеш будет только на половине карты, то он до туда добежит и остановиться. Если же навмеш есть везде и путей прохода несколько к концу карты, то монстр может выбрать любой и побежит ) Еще много зависит, что прописано в коде АИ на то или иное действие )
__________________
Kiss my ass if you don't like my Ford!
------------------------------------------ Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.
Дядя Миша писал: Или, учитывая, что навмешей может быть множество - как строится путь от одного края карты до другого, если на этом пути - сотня не связанных друг с другом навмешей.
Ну то есть вот мы дали команду монстру бежать к черту на рага, как он это выполнит? Есть примеры?
Скорее всего будет искать кротчайший путь.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
(_-=ZhekA=-_) писал: Я не пробовал, но думаю, если монстру дать команду бежать с одного края карты на другой и при этом навмеш будет только на половине карты, то он до туда добежит и остановиться
Дядя Миша писал: А попробуй, как будет время. Интересно же.
Мне пока не до этого, делаю новый интерфейс для новой проги на анриле
__________________
Kiss my ass if you don't like my Ford!
------------------------------------------ Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.
Дядя Миша писал: Это понятно. Вопрос был как они соединяются.
Вот тут глянь, правда это уже Юнити, но у Анрила я думаю практически всё тоже самое.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: Вот тут глянь, правда это уже Юнити
Ну вот же в настройках запекания навмеша - точно так же выбирается фиксированный размер хулла, под который этот навмеш и запекается.
Так почему же ты меня критиковал, если в юнити навмеш точнотакже строится под фиксированный хулл?
Добавлено 11-04-2023 в 17:09:
Абсолютно те же самые настройки - высота хулла, диаметр хулла, высота ступеньки и максимальный угол наклона.
Добавлено 11-04-2023 в 17:13:
Вот кстати отдельно отмечу нехороший прикол. По умолчанию любой примитив считается динамическим и ни на что не влияет. Ему надо долго ставить целую кучу галок. Тогда как логичнее было бы сделать наоборот - по умолчанию всё статик. Впрочем раньше там вроде как даже коллизия по умолчанию не генерировалась.
Добавлено 11-04-2023 в 17:35:
Ага, ну в принципе понял. Навмешы соединяются между собой при помощи прыжка в длину и прыжков в высоту\вниз.
Единственное чего я понять по прежнему не могу - как монстр ориентируется внутри самого навмеша. Может конечно и вовсе никак.
В квейке монстры просто рандомом бежали примерно в нужном направлении и за счёт этого рандома огибали препятствия.
Но это не сработает в случае нескольких сеток или достаточно заковыристых путей, типа лабиринта.
Я просто пытаюсь понять, как в случае меша рассчитывается путь пошагово.
А если скажем будет развилка? Пример в аттаче (вид сверху). Где крестик, это начальная позиция монстра, а нолик - конечная. Как он поймет, что ему надо бежать не вправо, а влево?
Добавлено 11-04-2023 в 17:37:
Поясню, что лично мне непонятно. Когда такой меш аппрокимирован множеством связанных между собой точек, путь находится через тот же A* алгоритм. Но как это же самое сделать фактически для куска геометрии?
Добавлено 11-04-2023 в 17:55:
Посмотрел вот это видео:
И до меня внезапно дошло. Он же там включил показ рёбер внутри самого навмеша. Ну да, смежные рёбра, через дерево находим в каком треугольнике лежит наша точка. И дальше через смежные рёбра находим треугольник, со стартовой позицией.
Добавлено 11-04-2023 в 17:56:
Всё. В принципе мне всё понятно. Спасибо за помощь.
Добавлено 11-04-2023 в 18:50:
Впрочем нет. Один вопрос у меня всё-таки остался. Монстр прямо ходит по этому навмешу, или какбы утопает в нём?
И скажем, как бы выглядел навмеш, если бы на земле был прям разбросано много-много всяких там камушков, мелкого мусора, сама земля была бы неровной. Уроки-то на стерильной геометрии демонстрируют.
Дядя Миша писал: И до меня внезапно дошло. Он же там включил показ рёбер внутри самого навмеша.
В анриле нет ребер у навмеша, там есть границы за которые монсты не выходят и все просто залито цветом - это значит, что в пределах этого цвета монстр может ходить куда вообще хочет и как хочет
__________________
Kiss my ass if you don't like my Ford!
------------------------------------------ Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.
Дядя Миша писал: Ну вот же в настройках запекания навмеша - точно так же выбирается фиксированный размер хулла, под который этот навмеш и запекается.
Так почему же ты меня критиковал, если в юнити навмеш точнотакже строится под фиксированный хулл?
Так а где я писал что это хорошо? В Юнити та же беда с хуллом, и это превносит некоторый гемор при работе с ним, но зато тут можно крутить практически все его параметры, и подгонять для каждой карты свой параметр хулла. К тому же ты можешь запечь сразу несколько навмешей для каждого типа хулла. Это будет немного костыльно, но вроде как возможно. Навмеш Юнити довольно ограниченная штука и требует дополнительной обработки уже внутри NPC.
Цитата:
Дядя Миша писал: Вот кстати отдельно отмечу нехороший прикол. По умолчанию любой примитив считается динамическим и ни на что не влияет. Ему надо долго ставить целую кучу галок. Тогда как логичнее было бы сделать наоборот - по умолчанию всё статик. Впрочем раньше там вроде как даже коллизия по умолчанию не генерировалась.
Это прикол самой Юнити, по умолчанию у неё все объекты динамик. Статичные объекты это уже другой слой абстракции. В целом покажется неудобно да, но на практике с динамикой мы работаем чаще. А статику, один раз сделал и забыл.
Цитата:
Дядя Миша писал: Впрочем нет. Один вопрос у меня всё-таки остался. Монстр прямо ходит по этому навмешу, или какбы утопает в нём?
И скажем, как бы выглядел навмеш, если бы на земле был прям разбросано много-много всяких там камушков, мелкого мусора, сама земля была бы неровной. Уроки-то на стерильной геометрии демонстрируют.
Физика имеет приоритет. Ты можешь посмотреть то место где капсула ходит по ступенькам. Навмеш там пологий, но сама капсула резво прыгает по ступенькам. Например ты сделал навмеш, и уже только потом вырезал в полу дырку там где можно было ходить, агент просто пойдёт туда как ни в чём не бывало, и провалится вниз, ничего не заподозрив.
Про поиск пути подробнее тут: https://docs.unity3d.com/Manual/nav-InnerWorkings.html
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: о зато тут можно крутить практически все его параметры, и подгонять для каждой карты свой параметр хулла
Когда до тебя уже дойдет, что возможность крутить "практически все параметры" - это беда, а не преимущество. Оно изкапропки должно работать так как ожидалось.
Цитата:
FiEctro писал: К тому же ты можешь запечь сразу несколько навмешей для каждого типа хулла.
Вот этого не понял. Зачем для одного и того же хулла разные навмеши?
Цитата:
FiEctro писал: Это прикол самой Юнити, по умолчанию у неё все объекты динамик
Так я и говорю про это. Ну неужели нельзя было в глобальных настройках сделать выбор, типа "interpret new objects as" static\dynamic? Казалось бы, ну что мешало, а сколько бы лишних действий исчезло.
Цитата:
FiEctro писал: но на практике с динамикой мы работаем чаще
Наоборот. Статика - весь уровень, игровой путь, который может меняться для улучшения геймплея. А динамика что? Её очень мало, относительно статики. Ладно, бы речь шла про майнкрафт, где всё - динамика.
Цитата:
FiEctro писал: Физика имеет приоритет
Не совсем корректное определение, поскольку ты думаешь, что навмеш используется для определения столкновений, как это было ранее. Но нет, он совсем не для этого. Я тебя понял, примерно так и я думал.
Дядя Миша писал: Когда до тебя уже дойдет, что возможность крутить "практически все параметры" - это беда, а не преимущество. Оно изкапропки должно работать так как ожидалось.
Изкаробки значит надо от идеи хуллов вообще отказываться.
Цитата:
Дядя Миша писал: Вот этого не понял. Зачем для одного и того же хулла разные навмеши?
Наоборот для разных. Один навмеш для мелких монстров, другой для более крупных.
Цитата:
Дядя Миша писал: Так я и говорю про это. Ну неужели нельзя было в глобальных настройках сделать выбор, типа "interpret new objects as" static\dynamic? Казалось бы, ну что мешало, а сколько бы лишних действий исчезло.
Тебе не надо выставлять каждому объекту персонально. Достаточно задать только родительскому объекту сцены, а дочерние уже подтянут сами. Такая галочка кстати вроде где то в настройках зарыта, но на практике никто не юзает, а может её уже выпилили хз.
Добавлено 11-04-2023 в 22:16:
Цитата:
Дядя Миша писал: Ознакомился. Ну вообщем-то ничего нового в этой области так и не придумали и вероятно тут ничего меняться уже не будет. Да может оно и к лучшему.
Держи уже анриловский до кучи. Но в целом, они очень похожы, ты прав.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: Изкаробки значит надо от идеи хуллов вообще отказываться.
Так нет альтернативы. И не предвидится. У тебя есть какие-то идеи на этот счёт?
Цитата:
FiEctro писал: Один навмеш для мелких монстров, другой для более крупных.
Ну там довольно вариабельно. Там где пройдет гуманоид - мелкий рогатый скот тоже пролезет.
Цитата:
FiEctro писал: Но в целом, они очень похожы, ты прав.
https://ru.wikipedia.org/wiki/A* - 1968 год. Как ты думаешь, если бы можно было изобрести что-то умнее\оптимальнее, этого бы до сих пор не сделали?
Добавлено 11-04-2023 в 23:18:
Строго говоря, современное представление навмеша - это такое же допущение, сделанное на основе облака точек, которое без проблем конвертируется в выпуклые полигоны. Недостаток точек - в потреблении памяти, но зато в узлах можно хранить дополнительную информацию в юниформе. В отличие от навмеша, где сетки связываются дополнительными структурами.
Ну вот когда я на том видео увидел рёбра у навмеша, у меня мгновенно сложилась общая картинка в голове, как всё это устроено до мельчайших подробностей. Т.е. читая документацию, я уже заранее знаю - ничего нового (для меня), там не будет. Но всё же читаю - мало ли.
Вообщем смысл в том, чтобы превратить регулярную сетку в полигоны.
И это как раз и делается через солвер комплексных чисел.
Конкретно вот эти пункты
Цитата:
Square merge to reduce number of polys and speed up the following steps
Merge all polys into concave slabs separated only by differences in slope
Decompose concave slabs into convex shapes
Потому что вот те характерные артефакты достигаются именно аналитическими методами. За что я их и не люблю, собственно.
В Юнитехе, как видишь тоже не любят.
Добавлено 11-04-2023 в 23:34:
Цитата:
Currently whenever starting a pathsearch an AI first needs to determine which pathnode it should start pathing from. This is accomplished via an octree check to return the pathnodes in range, and then doing raycasts from the AI to the pathnodes in order to find the closest, reachable path node. The same must be done for the path destination if the destination is not on the graph already. Some of this can (and is) mitigated via caching, etc.. but the fact remains that a non trivial amount of raycasts must be done by pathing AIs periodically at run time. Using a navigation mesh the ambiguity which FindAnchor resolves does not exist. We simply find the polygon the AI is currently inside, and that is our start location. The same is true for our destination.
Кстати бред полный. На регулярной сетке AABB-tree мгновенно справляется безо всяких рейкастов, издержки практически нулевые.