Трансформации и привязки в Unreal Engine 5

Урок на платформе YouTube:

Урок на платформе ВК:


Уровни Unreal Engine — это полноценные автономные миры. В игре может быть несколько уровней (или один глобальный). Переход между уровнями может быть как явным, с полосой загрузки (прелоадером), так и неявным — с подгрузкой нового уровня, пока игрок выполняет некое действие (перемещается на лифте, например). Для большей оптимизации, разумеется лучше иметь несколько уровней.

В Unreal Engine уровни (карты) наполняются независимо друг от друга. Это своеобразная театральная сцена, на которой «играют» актёры (акторы) — каждый на своей сцене. Как играет на нём, в конечном счёте, сам игрок. Уровни имеют расширение .umap.  Логика здесь похожа на хранение ассетов, о которых говорили в предыдущем уроке. Только хранятся они в контейнере другого типа. Также в предыдущих уроках нашего курса мы условились называть уровни с префиксом MAP_ внутри браузера контента (как раз от слова «карта») — для удобной навигации по ним.

Опорная точка (Pivot) — точка трансформации
Для удобства трансформаций мы можем изменить положение опорной точки (Pivot) объекта. Можно также называть её точкой поворота. Способ интерактивного перемещения опорной точки — с зажатой СКМ на центре манипулятора Гизмо. Если мы захотим двигать Pivot строго по осям, зажимаем Alt+СКМ на любой из стрелок манипулятора. При единичном клике с зажатыми Alt+СКМ Pivot будет перемещаться к месту клика.
 
Функции неинтерактивного воздействия собраны в контекстном меню для выбранного актора по ПКМ → Pivot:
  • Set As Pivot Offset — Pivot вернется в исходное положение, если сбросить выделение актора. Чтобы сделать изменение постоянным, используем эту функцию
  • Reset Pivot Offset — даже при использовании предыдущей функции, истинная позиция опорной точки будет храниться внутри объекта. Чтобы вернуться к ней, используем текущую функцию
  • Set Pivot Offset Here — переместить опорную точку в место, куда пришёлся клик ПКМ
  • Set Pivot Offset Here (Snapped) — то же, что и предыдущая функция, но будет привязывать Pivot к ближайшей точке координатной сетки
  • Center On Selection — в текущей версии (5.1) не работает для единично выбранного объекта, но работает для множества объектов — устанавливает опорную точку по центру общего выделения.
 
Для постоянного изменения опорной точки у ассета (и всех его акторов на сцене), нужно активировать режим моделирования Modeling Mode → активировать функцию Pivot → задать нужно положение, например, по центру.
 
 
Значение сетки в Unreal Engine и Snapping
Для удобного размещения акторов на уровне, в Unreal Engine предусмотрена система привязок. Привязаться можно к сетке, к вершинам объекта или его поверхности.  Все они находятся в верхней панели настроек вьюпорта (значки в правом верхнем углу вьюпорта).
 
Привязка к поверхности — Surface Snapping (значок поверхности с тремя направленными вовне стрелками). Внутри можно включить саму опцию привязки, поворот относительно поверхности (Rotate To Surface Normal), а также задать смещение от поверхности (Surface Offset). Нажатая клавиша End — располагает актор точно на ближайшей поверхности.
 
Привязка к сетке включена по умолчанию. В верхней панели настроек вьюпорта — это значок сетки. При изменении числового значения будет меняться шаг и визуальное отображение сетки. Также изменить размер сетки можно с помощью клавиш "квадратные скобки". Видимость сетки включается/отключается в настройках отображения вьюпортаShow — Grid. При вращении также можно выставить шаг — либо в градусах, либо в сегментарном делении круга.
 
Привязка при масштабировании (Scale) имеет более расширенную логику. В настройках можно изменить шаг приращения. А также выставить опцию Preserve Non-Uniform Scale (сохранение зависимостей) при интерактивном масштабировании — хорошо заметно при масштабировании куба с непропорциональными сторонами. Также эта опция позволяет сохранять неоднородные величины сторон при масштабировании (с большим количеством знаков после запятой).
 
V —при удерживании в режиме перемещения включает привязку к вершинам. Таким образом можно точно располагать объекты относительно друг друга по принципу «Pivot к вершине». Часто используется, например, при построении стен или модульных конструкций. Будет работать эта привязка и для смещения Pivot к нужной вершине (с зажатой Alt+СКМ) — иногда полезно сначала приблизить гизмо к нужной точке, затем задать Alt+V и только потом зажимать СКМ и двигать гизмо.
 
 
Прочие опции привязки, доступные по ПКМ → Snapping
Взглянем ещё раз в эту завораживающую чёрную пустоту и вновь вспомним, что система координат у нас декартова. Это нам поможет в понимании дальнейшей логики привязок.
  • Snap Origin to Grid (Ctrl+END) — перемещает объект (точнее его Pivot) к ближайшей точке сетки — в декартову координату. Хорошо видно при большем шаге сетки, например, в 100 см. Если выбрано несколько акторов, то при использовании этой функции к точке сетки будет привязываться последний выбранный актор. Прочие акторы сместятся точно так же, относительно ведущего (последуют за ним).
  • Snap Origin to Grid Per Actor — точно такая же логика, как и в предыдущей функции, но будет учитывать каждый актор уникально при множественном выборе.
  • Align Origin to Grid — делает то же самое, что и первая функция — выравнивает объект его пивотом по ближайшей координате сетки, но делает это с подворотом до совпадения локальных осей объекта с мировыми
  • Snap to 2D Layer — привязка объекта к 2D-слою. Такие слои используются в платформерах, где действие происходит для зрителя сбоку
  • Snap to Floor (END) — привязка поверхности меша к поверхности другого меша (часто выступающего в роли пола).
    • Для наглядного эксперимента можем включить отображение контейнеров (границ) объектов в меню вьюпорта → Show → Advanced → Bounds
  • Align to Floor — выравнивание поверхностей по полу с подворотом до совпадения с осями пола. Если актор повёрнут, то при использовании этой функции он будет сначала перемещаться (до тех пор, пока синий контейнер не коснётся поверхности), затем актор будет поворачиваться. Именно поэтому при таком выравнивании будет оставаться зазор между полом
  • Snap Pivot to Floor (Alt+END) — привязка не по типу поверность-поверхность, а по типу pivot-поверхность
  • Align  Pivot to Floor — то же, что и выше, но с изменением ориентации опорной точки и, как следствие, поверхности. В отличии от выравнивания поверхностей в функции Align to Floor, здесь происходит сначала привязка Pivot к поверхности, а затем уже ориентация. Поэтому в данном случае прилегание будет абсолютным. Разумеется, это справедливо для мешей с Pivot на нижней поверхности. Если опорная точка находится в центре и нет возможности изменить её положение, то нужно использовать выравнивание по поверхностям
  • Snap Bottom Center Bounds to Floor (Shift+END) — привязка центральной точкой нижней поверхности внешнего контейнера меша (синего)
  • Align Bottom Center Bounds to Floor — то же, что и предыдущая функция, но с поворотом объекта. Работает по той же логике, что и функция Align to Floor и может оставлять зазоры на сложно-ориентированных объектах (см. видео)
 
 
Команды из меню ПКМ — Transform
 
  • Delta Transform — ручной ввод разницы трансформации перемещения
  • Mirror X/Y/Z — отражение объекта по осям
  • Lock Actor Movement — блокировка объекта для трансформаций. Объект заблокированный таким образом можно выделить, но нельзя воздействовать на него инструментами трансформации. На данный момент это единственный доступный способ блокировки объектов в Unreal Engine 5.1. Хотя потребность в более удобных блокировках (в том числе и для выбора) всё ещё актуальна.
 
 
Дополнительные команды трансформаций:
 
  • Ctrl+D — копирует выбранный актор с помещением его в ту же самую координату
  • Shift+E — выбор всех акторов на уровне от определённого статического меша

 

 

Официальный сайт ZBrush

Официальный сайт Unreal Engine

Задать вопрос в нашей группе ВК