Найти в Дзене
Аня про Unreal Engine

Unreal Engine: как сделать воду — создаем озеро, реку и океан шаг за шагом

Примечание: гайд написан на примере UE 5.6, но подходит и для других версий движка У Epic Games есть плагин Water, с помощью которого можно создать любой водоем: ручей, озеро, реку или океан. Он автоматически формирует дно, генерирует волны и включает подводный пост-процесс, когда камера погружается под воду. Шаг 1. Включаем плагин Откройте Edit > Plugins, найдите плагин Water и активируйте его. Устанавливаем плагин Water После включения в папке Engine появится папка с готовыми материалами воды. Если ее не видно, то в настройках Content Browser включите Show Engine Content и Show Plugin Content. Шаг 2. Готовим ландшафт У Landscape в Details включите параметр Enable Edit Layers, что позволит водному актору влиять на рельеф. Шаг 3. Добавляем водный актор В панели Place Actors в поиск введите Water и перетащите нужный актор на сцену. Если используется многослойный ландшафт (например, у меня шаблон Open World), появится окно с выбором слоя. Если по какой-то причине элемент не оказался в н
Оглавление
Примечание: гайд написан на примере UE 5.6, но подходит и для других версий движка

У Epic Games есть плагин Water, с помощью которого можно создать любой водоем: ручей, озеро, реку или океан. Он автоматически формирует дно, генерирует волны и включает подводный пост-процесс, когда камера погружается под воду.

Шаг 1. Включаем плагин

Откройте Edit > Plugins, найдите плагин Water и активируйте его.

Устанавливаем плагин Water
Устанавливаем плагин Water

После включения в папке Engine появится папка с готовыми материалами воды. Если ее не видно, то в настройках Content Browser включите Show Engine Content и Show Plugin Content.

-2

Шаг 2. Готовим ландшафт

У Landscape в Details включите параметр Enable Edit Layers, что позволит водному актору влиять на рельеф.

Шаг 3. Добавляем водный актор

В панели Place Actors в поиск введите Water и перетащите нужный актор на сцену.

Если используется многослойный ландшафт (например, у меня шаблон Open World), появится окно с выбором слоя. Если по какой-то причине элемент не оказался в нужном слое, просто перетащите Water туда вручную и нажмите Complete.

-3

После того как добавите актор на сцену, в Outliner автоматически появится WaterZone, который имеет дополнительные настройки.

Разберем основные параметры каждого актора. Настройки, влияющие на работу волн, рассмотрим в отдельной статье.

Река

Water body river — актор реки. Он представляет собой сплайн, точки которого могут находиться на разной высоте.

Чтобы изменить положение точки сплайна, кликните по ней и перетащите в нужное место. У каждой выделенной точки есть собственные параметры, которые отображаются в Details у актора реки. Так, в разделе Selected Points можно настроить:
— Location — координаты точки.
— Rotation — поворот относительно pivot.
— Arrive Tangent / Leave Tangent — положение манипуляторов, отвечающих за изгиб линии.
— Depth —
глубину реки в этой точке.
— River Width —
ширину русла.
— Velocity —
направление и силу течения. Положительные значения задают поток вдоль сплайна, отрицательные — в обратную сторону.
— Audio Intensity —
громкость звука воды в выбранной точке.

В категории Water перечисляются объекты, пересекающиеся с рекой: острова (Water Body Islands) и безводные области (Water Body Exclusion Volumes).

Параметр Blend Mode определяет, как актор формирует дно:
— Alpha Blend — повышает и понижает ландшафт; основной и самый универсальный режим;
— Min — только понижает рельеф;
— Max — только поднимает;
— Additive — добавляет форму с фиксированной высотой Z, сохраняя наклон и детали исходного ландшафта.

Режимы Min и Max чаще всего используют при пересечении нескольких водоемов, чтобы они не мешали высоте друг друга.

Отдельно настраивается и то, как будет выглядеть берег. За это отвечает Falloff Mode — параметр, определяющий форму перехода между водой и сушей:
— Angle / Falloff Angle — берег строится под заданным углом и адаптируется к рельефу;
— Width / Falloff Width — берег формируется с фиксированной шириной.

Falloff Mode
Falloff Mode

Edge Offset — задает ширину прибрежной полосы.

Edge Offset
Edge Offset

ZOffset — поднимает или опускает линию берега.

ZOffset
ZOffset

Curl Noise — добавляет к сплайну реки процедурные изгибы, чтобы берег выглядел более извилистым.
Curl Amount — сила искажения.
Curl Tiling — частота искажения.

Curl Noise
Curl Noise

Smooth Blending — сглаживает границу между водой и ландшафтом.
Inner Smooth Distance — отвечает за плавность перехода внутри русла.
Outer Smooth Distance — отвечает за плавность перехода снаружи русла.

Smooth Blending
Smooth Blending

Terracing (террасы) — добавляет речные пороги.
Terrace Alpha — видимость порогов (0 — не видны, 1 — видны).
Terrace Spacing — расстояние между ступенями.
Terrace Smoothness — сглаживание ступеней, например, 0 — резкие края, 0.5 — скругленные края.

Terracing
Terracing

Устранение артефактов

Blurring (размытие). Когда движок преобразует рельеф, то могут появиться артефакты. Параметр Blurring сглаживает эти дефекты. По умолчанию включен Blur Shape, который автоматически применяет размытие. Отключать его стоит только если автоматическое сглаживание не подходит и требуется вручную контролировать процесс.
Radius — настройка силы размытия, которая работает когда Blur Shape отключен. Позволяет вручную уменьшать или усиливать сглаживание.

Blurring (размытие)
Blurring (размытие)

Переходы между водоемами

В разделе Rendering есть два слота, определяющие, как река визуально переходит в другие виды водоемов:
Lake Transition Material — материал перехода реки в озеро.
Ocean Transition Material — материал перехода реки в океан.

Эти материалы убирают резкие границы между разными типами воды.

Отдельно доступен параметр Overlap Material Priority, указывающий, какой материал будет главным, когда несколько водоемов пересекают друг друга.

Озеро

Water body lake — актор озера. Все точки сплайна находятся на одном уровне.

Форму озера можно менять двумя способами:
— выделить точку сплайна прямо на сцене и перетащить ее в нужное место;
— задать точные координаты через параметр
Location.

Изменяем размер озера
Изменяем размер озера

Если к озеру добавить остров или безводное пространство, то можно их увидеть в параметрах Water Body Islands и Water Body Exclusion Volumes.

Дно озера формируется с помощью кривых глубины (Depth Curve). Параметр Use Curve Channel включен по умолчанию, а сам набор кривых задается в Elevation Curve Asset.
Основные настройки:
— Channel Depth — максимальная
глубина озера.
— Channel Edge Offset — расстояние от кромки воды до точки, где начинают применяться кривые глубины.
— Curve Ramp Width — плавность перехода от мелководья к глубине.

Falloff Mode — параметр, определяющий, насколько сильно озеро вмешивается в рельеф вокруг себя при формировании береговой линии. Для наглядности создадим озеро у пригорка. При выборе Angle прилегающий пригорок будет резаться под углом, заданным в параметре Falloff Angle. При выборе Width рельеф вокруг озера будет выравнен на фиксированную ширину, указанную в Falloff Width.

Falloff Mode
Falloff Mode

Edge Offset — площадка у кромки воды.

Edge Offset
Edge Offset

ZOffset — поднимает или опускает прибрежную линию.

ZOffset
ZOffset

Curl Noise — делает берег более извилистым.
Curl Amount — сила искажения.
Curl Tiling — частота искажения.

-15

Terracing (террасы) — создание ступеней.
Terrace Alpha — видимость ступеней: 0 — не видны, 1 — видны.
Terrace Spacing — расстояние между ступенями.
Terrace Smoothness — настройка плавностей ступеней: 0 — резкие края, 0.5 — скругленные края.

-16

Океан

Water body ocean — актор океана. Он использует замкнутый сплайн, точки которого находятся на одном уровне. Внутри сплайна располагается суша, а снаружи находится вода.

Также актор создает упрощенную геометрическую сетку, которая визуально продолжает океан до горизонта. Ее параметры настраиваются в Water Zone в разделе Far Distance. К примеру, в Far Distance Mesh Extent можно изменить размер сетки, если заметны пустоты на горизонте. Также при изменении материала океанической воды важно обновить материал и в Far Distance Material, чтобы дальняя сетка выглядела так же, как основная вода.

Вид на границе ландшафта: справа — океан с волнами и дном, а слева — сетка, имитирующая воду
Вид на границе ландшафта: справа — океан с волнами и дном, а слева — сетка, имитирующая воду

Дополнительно в акторе океана есть раздел Static Mesh Settings, который позволяет заменить эту динамическую сетку на статичный меш.
Enable Water Body Static Mesh — включает замену.
Section Water Body Static Mesh — делит статичный меш на секции (тайлы).
Section Size — задает размер одного тайла.

Береговую линию океана можно корректировать двумя способами: переместить нужную точку сплайна прямо на сцене или задать ее точные координаты в параметре Location. При выборе точки также становится доступен параметр Audio Intensity, отвечающий за громкость звука воды в этой области.

-18

Параметр Ocean Extents определяет масштаб океана, т.е. сколько плиток воды будет размещено от центра актора по осям X и Y. Если к океану добавлены острова или области без воды, они будут отображаться в списках Water Body Islands и Water Body Exclusion Volumes.

Островок привязан к океану
Островок привязан к океану

Дно океана создается с помощью кривых глубины (Depth Curve). По умолчанию активирован режим Use Curve Channel, а набор кривых задается в Elevation Curve Asset. Основные параметры здесь следующие:
— Channel Depth — максимальная
глубина океана;
— Channel Edge Offset — расстояние от границы воды до точки, где начинают применяться кривые глубины;
— Curve Ramp Width — ширина плавного перехода от мелководья к более глубоким участкам.

Falloff Mode — регулирует, как океан формирует линию соприкосновения воды с сушей и насколько сильно изменяет прибрежный рельеф. Работают два режима:
Angle / Falloff Angle — океан срезает берег под указанным углом.
Width / Falloff Width — берег оформляется ровно в пределах указанной ширины.

Falloff Mode
Falloff Mode

Edge Offset — ширина прибрежной полосы.

Edge Offset
Edge Offset

ZOffset — смещение уровня берега вверх или вниз.

ZOffset
ZOffset

Curl Noise — позволяет внести неровности в линию берега, чтобы контур океана не выглядел идеально ровным.
— Curl Amount — определяет, насколько сильно будет искажаться форма берега.
— Curl Tiling — отвечает за плотность этих неровностей; чем выше значение, тем чаще появляются мелкие вариации вдоль линии океана.

Curl Noise
Curl Noise

Terracing (террасы) — делает подводный склон ступенчатым, как будто дно состоит из небольших платформ.
— Terrace Alpha — насколько сильно видны ступени: 0 — не видны, 1 — видны.
— Terrace Spacing — расстояние между ступенями. Меньшие значения — ступени частые, большие — редкие и широкие.
— Terrace Smoothness — насколько плавные или резкие ступени: 0 — резкие края, 0.5 — скругленные края.

Terracing
Terracing

Остров

Water body Island — поднимает дно внутри океана, реки или озера, формируя остров.

ZOffset — опускает или поднимает остров над водой.

ZOffset
ZOffset

Curl Noise — добавляет волнистые очертания форме острова.
—Curl Amount — задает выраженность этих очертаний.
— Curl Tiling — регулирует частоту изменений вдоль границы острова.

Curl Noise
Curl Noise

Безводные площадки

Water body Exclusion Volume — область, внутри которой вода визуально и физически отсутствует (пещеры, гроты, подводные туннели).

В разделе Brush Settings задаются размеры безводной области:
— X — ширина,
— Y — длина,
— Z — высота.

Форма области выбирается в Brush Shape, можно выбрать куб, сферу, цилиндр и другие варианты.

Параметр Display Shaded Volume включает затемненную визуализацию области в редакторе. Это влияет только на отображение внутри редактора и не меняет поведение в игре. Прозрачность заливки регулируется значением Shaded Volume Opacity Value.

Работа безводного объема определяется списком Water Bodies и выбранным Exclusion Mode:
— Remove Water Bodies List from Exclusion — безводие действует на водоемы, которые не указаны в списке.
— Add Water Bodies List to Exclusion — безводие действует на водоемы, указанные в списке.

Дополнительные параметры управляют физикой внутри объема:
— Terminal Velocity — регулирует
скорость падения персонажа внутри зоны.
— Water Volume —
включает водную физику внутри объема, движения персонажа становятся более тяжелым и замедленным.
— Fluid Friction — регулирует степень замедления или ускорения движения персонажа (работает только при активном Water Volume).
— Physics on Contact — физика начинает действовать сразу при касании границы, без необходимости полностью заходить в область. Это полезно для эффектов, которые должны включаться у самого порога, например, при переходе в зону воды, тумана или энергетического поля.

Бассейн и т.д.

Water Body Custom — это актор не влияет на ландшафт, а создает водную поверхность для вашего Static Mesh (например, бассейна). Он использует источник волн из Water Wave Asset и подводную постобработку.