Эффект дыма от Мэтта Старка

<?the_title()?>

Попытаюсь объяснить, как я недавно сделал эффект дыма. С ним объект окружен аурой волнистых клубов. Вот, как это выглядит в действии:

Состоит эффект из частично прозрачной текстуры на билборде (кваде, который всегда поворачивается лицом к камере). Центр квада примерно совпадает с центром дракона, и квад достаточно большой, чтобы вместить дым.

квад, внутри которого уместится эффект дыма

Сначала я отрисовываю копию вида камеры, содержащую только силуэт дракона. Моя камера имеет черный фон и отображает только один слой сцены. В качестве альтернативы вы можете использовать буфер трафарета, но в Unity к нему сложно получить доступ после рендеринга сцены.

маска

Затем я нахожу экранные координаты углов билборда, чтобы можно было сэмплировать соответствующую область текстуры.

вырезанная маска

Я блендирую эту область текстуры силуэта с существующей текстурой билборда. Это имитирует дым, который исходит из источника с постоянной скоростью и постепенно исчезает. Затем я искажаю текстуру билборда, используя векторы скорости, основанные на карте потока. Это текстура, где красные и зеленые значения цвета представляют x и y компоненты скорости. Я также добавляю постоянную скорость вверх. Такое искажение текстуры имитирует завихрения от восходящих вверх потоков воздуха.

потоки, пока в инвертированном цвете
текстура

Наконец, я использую текстуру в материале, нанесенном на билборд. Шейдер материала преобразует черный и белый в прозрачный и черный. Материал исчезает там, где находится близко к поверхности позади себя, поэтому вы не увидите отсечение сквозь дракона. Он также исчезает вблизи краев билборда, чтобы не обнаружить тот резкими переходами.

Вот и все! Я очень доволен тем, как выглядит этот эффект дыма и как мало он влияет на производительность. Можно создать более простую версию для чего-то вроде пылающего факела, где просто из текстуры читается силуэт, но в этом случае проще использовать флипбук текстуру.

Оригинал статьи: https://matt.stark.scot/2019/10/11/smoky-aura-effect.html

Понравилась статья? Поделиться с друзьями:
Автор natalya
Переводит для Вас самые интересные статьи про разработку игр. По образованию физик-программист. Техническими переводами начала подрабатывать еще на старших курсах и постепенно это переросло в основное занятие. Интересуется гуманитарными технологиями, пробует себя в журналистике.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *