Pull to refresh

Comments 10

Результат больше на сияние похож чем на дым.
Для обучения и практики такой эффект пойдет, но все же не оч реалистично… Было бы классно, если добавили динамическую турбулентность. Она в общем-то не оч сложно пишется…

А вообще, глядя на пикчу, я надеялся на 3D дым или облака :'(
«Брейся — не брейся, а на ёлку не похоже». А как делается простая турбулентность? Если не считать простой Навье-Стокса. Сходу пришло в голову только: более яркие пикселы сильнее сдвигать вверх и сильнее блюрить. Какое-то подобие должно получиться.

А вообще, глядя на пикчу, я надеялся на 3D дым или облака :'(
Дым как на КПДВ делается гораздо эффективнее билбордами. Если не заморачиваться с освещением. Если заморачиваться — то там уже всё веселее. Сам сейчас играюсь с 3D облаками (рей марчингом). Получить реалистичную картинку в рилтайме ой как не просто.

Облака в Horizon Zero Dawn
Можно добавить генерацию векторных полей, скажем, на основе перлиновского шума. Соответственно вместо ЧБ карты мы получаем RG карту, которая указывает на направление движения (или ветра). Далее уже каждый новый кадр мы сможем брать разницу между пикселями по вектору и заменять цвет соответствующе.

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

Конечно это теория, на практике немного труднее, но все зависит от нужного результата… Было бы время, реализовал. Задача любопытная…
На основе Перлина турбулентность, вроде, не получишь. Хотя сложный вопрос. Если использовать два разных — может быть что-то выйдет. Но (навскидку) FBM выглядит более подходящем. Видел текстуры типа FBM(FBM(x,y)) — выглядят как корявая древесина.

Тут основная проблема в том, что турбулентность должна быть стабильной (условно, ессно), а со случайного шума поток может суммарно уводить в каком-то одном направлении. Но скролл текстуры (текстур?) и сильное рассеивание дыма частично эту проблему могут сгладить. Короче — требуются эксперименты.
Для турбуленции используют ротор(curl) от векторного поля, сконстурированного из нескольких шумов перлина с разными сидами (во всех коммерческих симуляторах дыма )
http://www.cs.ubc.ca/~rbridson/docs/bridson-siggraph2007-curlnoise.pdf
результирующее векторное поле сил обладает нолевой дивергенцией (т.е. не генерирует и не убавляет скорость суммарно по контейнеру)
К сожалению, сейчас только в первой вставке с Codepen есть какое-то изображение, на остальных только черный фон.
У меня одного самая первая картинка шевелится? Я уже сохранил что формат чекнуть…
Sign up to leave a comment.

Articles