Создание лода Geometry (Коллизии)

Лод Geometry (коллизия) — это модель столкновений объекта с другими объектами. Без него объект будет не «осязаемый» — сквозь него можно будет пройти и проехать.

К сожалению армовский движок не позволяет автоматически генерировать коллизию из меша модели, поэтому делать ее нужно вручную из боксов.

Создание геометрии, как и теневого лода — это самый долгий и нудный процесс в моделировании под Арму.

Геометрия создается либо из боксов, либо из цилиндров.

Правила для создания геометрии

  • Грани боксов могут пересекаться с другим боксом
  • Все грани не должны иметь сглаживание
  • Минимальная толщина одного бокса 0.3 метров (если меньше — игрок может пробежать сквозь такую геометрию)
  • Лод должен иметь массу и разбит на компоненты (боксы)
  • Каждый компонент должен быть замкнутым
  • Не должно быть присвоено ни материалов, ни текстур

 

Итак начнем. Допустим у нас есть похожая моделька для которой нужно сделать геометрию

Создаем новый ЛОД щелкая ПКМ и NEW на пустом месте в правом верхнем окне Оксигена

 

Затем снова нажимаем ПКМ по только что созданному ЛОДу, и жмем properties

В новом окошке выбираем Geometry

Дважды щелкаем по новому ЛОДу. Во вьюпорте мы видим желтые линии — это контуры основной модели.

Теперь нам нужно создать бокс, из которого и будем строить коллизийку.

Переходим в вид TOP (view-> top, или нажав   )

Жмем create-> box, или на клавиатуре F7, а затем OK, оставляя дефолтные параметры.

ВАЖНО! Если создать бокс в 3D просмотре — он встанет одной плоскостью к камере, и подгонять его к стенам будет не так удобно

Оставаясь в виде TOP перемещаем наш бокс ближе к какой-нибудь стене, чтобы дальше его растягивать по точкам

ЛКМ — выделить объект

ПКМ — двигать объект

SHIFT + ПКМ — копировать объект

 

На панели инструментов находим кнопку выделения по точкам и нажимаем ее (выделена красным)

выделяем точки которые надо потянуть вдоль стены, и тянем правой кнопкой мыши

Чтобы вытягивать по определенным осям — нажимаем соответствующие кнопки на панели инструментов (на скрине выше)

 

За пару минут получаем что то вроде того:

Окошки я конечно обводил. Теперь нам надо подогнать высоту «стен». Переходим в любой боковой вид, и так же тянем за нижние точки сразу у всех блоков до самого пола, даже чуть ниже.

Таким же образом делаем пол, потолок, двери, перилла

ВАЖНО!  в отличие от тенегого ЛОДа, коллизию лучше делать чуть шире стен, иначе персонаж может подглядывать сквозь стены

Так же, желательно чтобы боксы которые расположены продольно были на одной координатной оси, чтобы небыло сильных выступов, иначе будет не приятно упереться в какой нибудь уголок

 

Получается что то вроде этого: (без крыши)

 

ВАЖНО! Хоть для хождения персонажа используется другой ЛОД (RoadWay) — коллизию пола все равно стоит сделать, т.к. без нее кинув например гранату — она провалится сквозь пол.

После всех манипуляций следует нажать на клавиатуре клавишу U, а затем F5. Это избавит от возможных косяков нормалей при вытягивании боксов.

Затем задаем массу всей коллизии. Выделяем всю модель геометрии ctrl+A и вписываем в окошко Mass примерный вес здания (20-50 тонн)

(если нет такого окошка — вкладка window -> mass)

После этого снова выделяем всю геометрию ctrl+A и идем Structure-> Topology -> Fing components

Все, коллизия готова. Теперь нужно сделать чтобы персонаж мог ходить по полу, ведь по коллизии он ходить не может.

Создаем новый ЛОД RoadWay

Выделяем полигоны с коллизии по которым может пройти персонаж вот этим инструментом

И копируем их в ЛОД RoadWay (ctrl+c, ctrl+v)

После этого полигоны желательно приподнять на пару миллиметров выше чем коллизия, иначе персонаж может просто зависнуть на месте.

Готово! Теперь персонаж может ходить внутри здания, и не проходить сквозь стены.