Navmesh
Fallout New Vegas G.E.C.K. глазами разработчиков
RJ
7212
0
Начало работы с Navmesh
Когда помещение построено и в него помещены необходимые предметы, нам нужно определить поверхность, по которой могут перемещаться NPC и создания. Вот в этот момент на сцену выходит navmesh. В двух словах, navmesh - это набор полигонов, которые сообщают персонажу о поверхности, по которой он может ходить.
Ниже я привожу адреса нескольких страниц, с которыми вам стоит познакомиться во время и после этого упражнения, если вы хотите получить больше информации по этой теме.
- Обзор Navmesh - в категории navmesh есть ссылки на полезные темы относительно navmesh.
- Панель инструментов - информация о различных иконках на главной панели инструментов и на панели Navmesh, а так же, функции, которые эти иконки выполняют.
- Горячие клавиши - полезные горячие клавиши, используемые при редактировании navmesh.
- Редактирование navmesh на слабых машинах - помощь для тех, кто не пользуется новейшими и мощными компьютерами.
Шаг 1: Создание треугольника navmesh
Начинать работу мы будем в простом коридоре, который находится на северо-западе Убежища 74. Новый редактор navmesh интуитивно понятный и предоставляет много новых возможностей, используемых в Fallout 3. Вначале, он может показаться сложным, по этому давайте разбираться с ним последовательно шаг за шагом. Если вы разберетесь с основами navmesh, то стать экспертом в этом вопросе, - это только вопрос времени.
- Чтобы войти в режим редактирования navmesh щелкните на кнопке Navmesh в главной панели инструментов или используйте комбинацию клавиш CTRL+E.
- Появится панель инструментов Navmesh.
- Сейчас нас интересуют только три кнопки и все они крайние слева.
- Самая крайняя кнопка - переключатель выделения целых Треугольников
- Средняя кнопка - переключатель выделения Вершин
- Кнопка справа - переключатель выделения Ребер
В процессе создания и редактирования все большего и большего количества navmesh вам захочется использовать горячие клавиши взамен иконок в панели инструментов. Т - переключает выделение Треугольников V - переключает выделение Вершин G - переключает выделение Ребер |
Проверьте отключение опции привязки к сетке. Вы редко, а возможно, и никогда не будете пользоваться этой привязкой при работе с navmesh. Если вам нужно руководство по привязке к сетке и по управлению камерой, щелкните здесь. |
Включите выделение Вершин, или используйте клавишу "V", увеличив масштаб на верхнем левом углу карты. Щелкните правой кнопкой мыши на полу. Как видите, появилась вершина. Создайте еще две вершины, используя правую кнопку мышки.
Редактор navmesh использует отдельный набор горячих клавиш, от клавиш основного редактора GECK. К некоторым клавишам, вы уже, возможно привыкли, например, это клавиша "Т" для вида сверху/снизу, у которой другое назначение при редактировании navmesh. |
Обратите внимание на цвет созданных вершин. Зеленый обозначает выделение этих вершин. Вершины желтого цвета - не выделены и не являются частью ни одного треугольника. Вершины, которые являются частью какого-либо треугольника, окрашиваются красным цветом. Вершины желтого цвета не участвуют при расчете navmesh и могут благополучно удаляться, если они присутствуют после завершения всей navmesh.
Для создания треугольника выделите все три вершины, удерживая клавишу Ctrl и щелкая левой кнопкой мыши, или выделите их все одновременно, обрисовав вокруг них рамку курсором. Все вершины должны окраситься зеленым цветом. Нажмите клавишу "А" или используйте кнопку создания треугольника по трем выделенным вершинам.
После создания треугольника вы увидите две вершины, окрашенные зеленым цветом. Таким образом, программа облегчает создание последующего треугольника. С двумя выделенными вершинами, все что вам нужно, для создания очередного треугольника, это щелкнуть правой кнопкой мышки, удерживая клавишу Ctrl. В месте щелчка появится новая вершина и будет автоматически создан новый треугольник. |
Шаг 2: Navmesh коридора
После того как мы создали наш первый треугольник, нам нужно заполнить треугольниками весь оставшийся коридор. Самый простой способ для этого - выделить две вершины и щелкнуть правой кнопкой при нажатой клавише Ctrl для создания третьей вершины, автоматически создав треугольник между тремя вершинами (две из них были выделены, а третья - вновь созданная).
После создания очередного треугольника, две вершины вновь будут выделены. Снова используйте Ctrl+правый щелчок мышки, создав следующий треугольник. С практикой вы войдете в ритм и будете заполнять большие пространства, удерживая Ctrl и щелкая правой кнопкой мышки. Продолжайте начатое и заполните оставшуюся часть коридора, как показано на рис. 1а.
Используя комбинацию Ctrl+щелчок правой кнопкой мышки, вы можете треугольники очень быстро, и покрывать ими большие площади. Мы, шутя, называем эту технику "Выгуливание собаки". |
После того как коридор будет покрыт треугольниками, нам нужно подготовить navmesh для расширения ее за двери. Что-то особенное для дверных проемов делать не нужно - navmesh позаботиться об этом. Просто продолжите создание треугольников, как будто двери и нет.
Если вы создали navmesh так как показано на рисунке, то вам нужно добавить вершины на ребро около дверного проема, чтобы мы могли продолжить создание треугольников по остальной части уровня. Чтобы сделать это переключитесь на выделение Ребер или используйте горячую клавишу "G". Теперь, когда курсор мыши будет над ребром, оно будет подсвечиваться темно-красным цветом. Щелкните правой кнопкой на ребре, и в месте щелчка будет создана вершина. Если вы рассмотрите рис. 2b, то около дверного проема вы увидите четыре новые вершины. По две вершины на каждом ребре, из которых мы сможем продолжать выстраивать треугольники через дверной проем.
Двери, как объекты с тегом "препятствие", автоматически обрежут сетку в игре, по этому что-то особенное делать нам не нужно. |
Если у вас возникнут проблемы с отображение navmesh, вы можете попробовать один из трех режимов отображения navmesh: Normal, Transparent, Navmesh Only. Нажмите "W" несколько раз, проходя по циклу этих режимов отображения, или используйте кнопки в панели инструментов |
Рис. 1а: Основа поверхности navmesh. В длинных, тонких треугольниках кроются большие проблемы. |
Рис. 1b: Navmesh с вершинами добавленными для продолжения поверхности через дверной проем |
Шаг 3: Navmesh для остальной части уровня
Если вы выполнили вышеприведенные шаги, значит, вы знаете основы и готовы продолжить navmesh в остальной части Убежища 74.
- В случае с лестницами, создайте одно ребро вверху лестницы, другое внизу. Сделайте двойной щелчок на верхнем ребре и, удерживая клавишу Ctrl, щелкните на нижнем. Будут автоматически созданы два треугольника, соединив промежуток.
- Поэкспериментируйте с тремя различными режимами просмотра, чтобы выбрать тот, который вам больше подходит в разных ситуациях. Для цикличного переключения по этим режимам используйте клавишу "W" или кнопки на панели инструментов .
- Если вы создали треугольник, который вам не нравится и его нужно удалить, вы можете переключиться на выделение треугольников (или просто нажать "Т") и выделить нежелательный треугольник, после чего нажать DELETE. Для отмены изменений вы можете использовать комбинацию CTRL+Z.
- Если вместо иконок при переключении режимов выделения вы будете как можно чаще использовать клавиши T, V и G, то при длительной работе сможете сэкономить очень много времени.
- Иногда возникает ситуация, когда нужно объединить несколько вершин в одну. Чтобы сделать это, выделите две или больше вершин и нажмите Q или кнопку на панели инструментов , в результате чего вершины сольются в одну - в ту, которая была выделена первой.
- Двойной щелчок на ребре (с включенным режимом выделения ребер) используется для быстрого выделения двух вершин этого ребра.
- Помните о том, как остаются две вершины после создания треугольника? Вы можете проходить циклично через пару выделенных вершин с помощью клавиши TAB.
- Если вы не хотите тянуться через всю клавиатуру, чтобы нажимать клавишу Delete, вместо нее вы можете использовать клавишу R.
- Старайтесь создавать настолько равносторонние треугольники, насколько это возможно. В игре это скажется очень положительно. Стоит избегать длинных и узких треугольников. Для достижения лучшего результата пробуйте поворачивать треугольники с помощью клавиши S или .
- Пересчет баланса ребер и треугольников - полезный инструмент. Выполняйте его с помощью кнопки панели инструментов или клавиши B. Такую проверку лучше делать вначале, потому что она отключает все укрытия или данные финализации navmesh, в результате могут быть утрачены мелкие детали. После просчета баланса вам следует внимательно просмотреть получившуюся navmesh.
Когда вы вручную закончите создание navmesh, она должна выглядеть так, как на рисунке. Ваша navmesh не должна быть идентичной той, которая на изображении, но, в общем, они должны быть похожи.
Вот так должна выглядеть navmesh возле областей, которые нужно обходить на уровне. Обратите внимание, что navmesh проходит под Havok (перемещаемыми) объектами. Вам не нужно обходить navmesh объекты Havok, потому что navmesh позаботится о них во время игры. Как на примере, объекты Havok в сцене, это: обожженные блоки, жестяные банки, шина и ведро. В этом случае navmesh проходит под этими объектами. Двигатель красного цвета и пластиковая коробка - это не объекты Havok и поэтому нам нужно обойти их navmesh.
Шаг 4: Исправление ошибок navmesh
При сохранении своего дополнение вы узнаете, если ли ошибки в navmesh. Если ошибки есть, то при сохранении вы увидите сообщение, подобное этому:
Если вы увидели это сообщение, вам нужно отобразить диалоговое окно Select Triangle by Index (Выделение треугольника по индексу). Сделать это можно, нажав кнопку Find Triangle в панели инструментов Navmesh или нажать CTR+F. Если еще один способ, он показан ниже на изображении - выбрать пункт Select Triangle by Index в меню Navmesh главной строки меню.
Когда появится нужное диалоговое окно, выберите функцию Check Navmesh.
Всплывающее окно покажет количество найденных треугольников с ошибками и предложит вам удалить эти треугольники.
Выбор Yes приведет к удалению всех проблемных треугольников, но после этого, вам придется искать места, в которых эти треугольники были в заделывать отверстия (обычно, создавая новые треугольники). Мы рекомендуем вам исправлять каждую ошибку вручную и в этом случае в всплывающем окне стоит выбрать пункт No. Таким образом, вы просто закроете окно. В окне Select Triangle выберите пункт Next Warning (Следующее предупреждение). Камера в окне визуализации автоматически переместиться на проблемный треугольник и выделит его для вас. Большинство проблем решается простым удалением такого треугольника и создание в место него нового.
Чтобы найти следующий треугольник с ошибкой, вам нужно еще раз выбрать Check Navmesh и повторить процесс, пока все треугольники не будут исправлены. Когда закончите, сохраните свой плагин снова. Если не будет сообщений с предупреждениями, значит, ваша сетка navmesh готова к использованию.
Для большей информации об очищении navmesh щелкните здесь. Эта ссылка объясняет также процесс финализации, о чем пойдет речь в одном из следующих упражнений этой серии.
Шаг 5: Создание ребер укрытий для navmesh
Ребра укрытий сохраняют данные, такие как высота участка укрытия, которые NPC используют во время боя и во время нахождения пути. Для автоматического создания укрытий, переместитесь в Navmesh->Fined Cover в главном меню или используйте кнопку на панели инструментов Navmesh .
Нахождение укрытий может занять несколько секунд. Когда этот поиск будет закончен, вы увидите различные цвета ребер вашей navmesh. Каждый цвет представляет разную высоту укрытий. После генерации укрытий ваша navmesh должна выглядеть как на приведенном рисунке 2а.
Чтобы хорошо рассмотреть тип укрытий, которые находятся на вашем уровне, просто щелкните на кнопке Navmesh Menu Button в главной панели инструментов и выберите Draw Cover, как показано на рис. 2b.
Появится 3D-вид укрытий, окрашенных разным цветом, как показано на рис. 2с. Обратите внимание на черные полосы на некоторых сторонах укрытий. Со стороны черных полос будут стрелять NPC, когда будут укрываться за этими укрытиями.
Navmesh может содержать и другие полезные данные, например обозначение бортов (корабля), области погруженные в воду и другие. Данные укрытий вы можете редактировать и вручную, для большей информации по этой теме, перейдите сюда.
Когда navmesh будет завершена, персонажи смогут перемещаться по поверхности и использовать укрытия во время боя. Этой темой мы займемся в следующем по порядку упражнении, в котором мы начнем размещать NPC и настраивать их поведение.
Рис. 2а Обычные данные укрытий в navmesh (слева) |
Рис. 2b Пункт Draw Cover в главной панели инструментов |
Рис. 2с: Navmesh с включенной опцией Draw Cover (справа) |