Предисловие переводчика
Нажмите, чтобы прочитать
Я, Lord British, ни в коей мере не являюсь автором этой статьи или её скриншотов, я всего лишь перевел ]]>оригинал]]> на русский, стараясь быть как можно ближе к тексту. Но я, как и любой нормальный человек, не избежал некоторых искажений и, возможно, ошибок, поэтому приму конструктивную критику касаемо перевода с распростертыми объятиями.
Я послал автору статьи (уважаемому Mortus) ЛС с просьбой перевести эту статью на русский и разместить её на этом ресурсе, и он дал "добро".
Нажмите, чтобы прочитать
Часть 1. Основы
Так что же такое - AI mesh - и как он работает?
AI Mesh - это сеть, указывающая NPC, где он может пройти, а где нет. Если, допустим, какой-нибудь NPC вдруг захотел прогуляться из точки A в точку B, он делает это так: находит кратчайший путь, проверяет, может ли он там пройти, и только потом (о, чудо!) идет. Если Вы построили стену у него на пути, то он врежется в нее и застрянет там навечно. Но если Вы сделаете AI mesh так, чтобы он учитывал эту стену, то NPC не только не врежется, но и обойдет злополучную стену кратчайшим путем.
Важное замечание
Все грани AI mesh'а должны быть соединены, чтобы работать должным образом. Это означает, что вы не можете создать AI mesh внутри здания, а затем другой наулице, не соединить их и надеяться, что всё будет хорошо. Повторюсь: они должны быть соединены, а не просто находиться близко друг к другу.
Правильно. NPC пройдут там:
Неправильно, NPC не будет использовать этот проход:
Вы можете подключить две различные грани с с помощью функции Fill, когда находитесь в режиме редактирования вершин (Vertex Mode).
Очень важно покрыть AI mesh'ами как можно больше возможных мест, где могут гулять NPC. Вот несколько примеров хорошего размещения AI mesh'а (скриншоты из сцен Native'а):
Обратите внимание на то, как расположен AI mesh на ступеньках:
Постарайтесь не использовать сложные "узоры", когда мостите вашу mesh. Я полагаю, что строить квадратами - хорошая техника. Не делайте слишком большие грани, постарайтесь разбить их на более мелкие. Но постарайтесь не делать слишком много маленьких квадратов, так как это, возможно, понизит FPS. Плюс ко всему, если Вы расположите большие грани в одной части сцены, а в другой - маленькие, это может привести к непредвиденным вещам. Например:
Я разместил 30-31 entrypoint в точке A и 32-39 - в точке B. Очевидно, что у NPC есть два пути между этими точками, и, как Вы видите, они выбирают путь номер 2, потому что они думают, что он короче первого. И это фактически правда, потому что с точки зрения NPC, в пути номер 1 содержится гораздо больше AI mesh'ей, чем в пути номер 2. Постарайстесь, чтобы в Ваших сценах не было таких "двусмысленностей".
Нажмите, чтобы прочитать
Часть 2. Размещение AI mesh'ей в зданиях.
Давайте, наконец, перейдем к практической части.
Допустим, у нас есть сцена, покрытая AI mesh'ем, и нам захотелось поставить на ней замок. Ставим castle_f_gatehouse_a и переключаемся в режим редактирования AI mesh'ей (Edit AI Mesh).
Теперь, нам нужно удалить грани, которые находятся под замком, таким образом мы удостоверимся, что NPC не попытаются пройти туда, тем самым мы избавим их от ударов итак неблагополучной головы о беспощадную стену. Есть один простой способ - выбираете одну грань, а затем жмете Grow Selection столько раз, сколько понадобится, чтобы выбрать достаточно удаляемых граней. Потом уберите из выделения те грани, которые удалять не стоит. У нас должно получиться так:
Удалим выбранные грани и переместим оставшиеся вершины граней поближе к зданию:
(возможно, это не лучший способ проектирования, и Вам, возможно, пришлось добавить еще несколько граней, чтобы заполнить пустоты, но он очень простой, поэтому мы им и воспользуемся)
Вы ведь хотите, чтобы NPC могли пройти в ворота, не так ли? Тогда Вам придется проложить AI mesh внутри прохода. Но так как нам не хватит вершин, перейдем в режим ребер (Edge Mode), выберем ребро поближе ко входу и нажмем Subdivide. Результат будет примерно таким:Сейчас проделаем то же самое с другой стороной ворот:
Выберем ребро, находящееся ближе всех к проходу и нажмем Extrude, затем подвинем новоиспеченное ребро к проходу, отредактируем как следует его размер и сделаем то же самое с другой стороны:
Теперь переключаемся в режим вертексов (Vertex Mode), выбираем все 4 вершины, которые должны быть соединены, и нажимаем Fill:
Поздравляю! Вы освоили простые вещи. Теперь попробуйте сделать это поточнее, чтобы NPC не застревали в углах.
Сейчас нам нужно сделать AI mesh, ведущий к крыше этого здания. Вот как это должно выглядеть:
С помощью Extrude, поработайте с ребром близ двери. Также, нужно убедиться, что грани не шире прохода, чтобы NPC не застряли в нем. Не забудьте проверить расположение mesh'а по Z-координате: mesh должен лежать аккурат на полу, не выше, не ниже.
Теперь с пощью Extrude продлите AI mesh к лестницам:
Теперь, используя 'T', 'G' и все что Вашей душе угодно, продлите mesh'и к конечной точке лестницы:
С помощью Extrude, продлеваем грань на втором этаже, затем включаем режим вершин (Vertex Mode) и выбираем эти вершины:
Жмем Connect и удаляем вторую грань, появившуюся в результате этого действия:
Двигайте, расширяйте, соединяйте, и опять двигайте - Вы уже знаете как это делать, поэтому проложите оставшийся mesh самостоятельно (не забудьте поэксперементировать с функцией Fill):
Я не буду описывать оставшийся процесс, так как Вы уже научились основам и можете проделать остальное самостоятельно. Проделайте те же операции и над вторым входом (у этой башни их два). Разместите 30 и 31 entrypoint и 32-39 близ входа, добавьте немного пленников башни и посмотрите, смогут ли они взобраться наверх. Если они где-нибудь застрянут - Вам нужно подправить mesh в том самом месте. Также не забывайте, что очень важно добавить AI mesh везде где возможно будут ходить NPC.
Это screenshot наполовину готовой работы. Протестируйте каждый проход, который вы сделали, с помощью NPC, в конце концов, разве не для этого они были созданы?
Пока всё. Я надеюсь, что эта статья будет сколько-нибудь полезна.