Фейковый туман (fog volume) в Unreal Engine 4

Простой туториал, который позволит быстро создать подобие fog volume (буду звать объёмом) в Unreal Engine 4.

Фейковый туман (fog volume) в Unreal Engine 4

Это скорее хак, нежели супер-технология, а поэтому у неё есть минусы:

  • Эффект выглядит совсем не круто, если заглянуть в этот объём камерой
  • У объёма нет сторон. Хотя это можно обойти с помощью кубов и немного другого кода, пример этот я рассматривать не буду. Хотя если нужно (например, сделать стену из тумана, как в Silent Hill) - дайте знать, запилю.
    UPD: Запилил:

Материал

Создаём новый материал и называем его M_FakeFog. Не забудьте поменять Blend Mode на Transculent.

Фейковый туман (fog volume) в Unreal Engine 4

На всякий случай объясню некоторые ноды:

  • Color и Emissive Color - это Vector Parameters.
  • EmissiveStrength, DepthOpacity и DepthFadeDistance — параметры (создаются через S + левый клик, например). Их дефолтные значения можете увидеть на пикче, рядом со словом "Param" в скобках.
  • 0, который втыкается в Alpha ноды Lerp - это константа (создаётся через 1 + левый клик). Вообще, с таким сетапом Lerp не нужен в принципе, т.к. будет всегда работать только первый вход - просто мне параметр был не нужен, поэтому я его разжаловал в константу. Но вы можете конвертировать её в параметр.

С материалом всё. Сохраните его и создайте его экземпляр (instance), чтоб легко можно было настраивать параметры.

Блупринт

Создайте новый блупринт типа Actor (я свой назвал BP_FakeFog).

  • Добавьте компонент InstancedStaticMesh
  • В нём выберите меш, который планируете испольхзовать в качестве слоёв тумана (можно угореть и использовать хайполи модель персонажа на 2кк полигонов, но я использовал простой plane, который был в проекте по дефолту). Там же укажите в качестве материала экземпляр, который создали чуть раньше.
  • Добавьте две интовых переменных - NumberOfInstances и SpawnDistance. Дефолтные значения можно поставить по 5, например.

В Construction Script изобразите следующее:

​Мы просто добавляем NumberOfInstances плейнов поверх друг друга через SpawnDistance расстояние
​Мы просто добавляем NumberOfInstances плейнов поверх друг друга через SpawnDistance расстояние

Поместите блупринт на уровень. Настройте параметры в экземпляре материала как вам угодно. Вы великолепны!

Можно получить даже вот такой эффект ТОКСИЧНОЙ СВЕТЯЩЕЙСЯ ЛУЖИ КИСЛОТЫ™
Можно получить даже вот такой эффект ТОКСИЧНОЙ СВЕТЯЩЕЙСЯ ЛУЖИ КИСЛОТЫ™
7373
11 комментариев

Комментарий недоступен

9
Ответить

А зачем нужен Lerp, если там в альфе постоянная 0, и всегда будет первый вход работать?

Ответить

На самом деле вместо константы был параметр, но я именно у себя упростил этот момент, т.к. мне он был не нужен. Упустил. Укажу этот момент, спасибо)

Ответить

Комментарий недоступен

Ответить

Ну, это партиклы. Я с ними не особо дружу, плюс,  думаю, они довольно дорогим решением будут.

Ответить

Комментарий недоступен

Ответить