Как сделать тепловую деформацию в Blender

Тепловая деформация в Blender

В этом уроке Эндрю Прайса вы научитесь создавать в Blender эффект искажения пространства из-за тепловых волн.

Тепловая деформация — явление хорошо знакомо тем, кто живёт в тёплом климате. Она происходит при таком нагреве земле, когда поднимающиеся волны тепла искажают вид пространства вокруг вас.

В этом уроке вы научитесь:

  • искажать сцену без трассировки лучей;
  • создавать процедурную текстуру тепловой волны;
  • усиливать эффект по мере его удаления от вас;
  • использовать ноду расфокусировки для имитации шума вне зоны резкости.

Этот урок является адаптацией идеи Мэтта Эбба, изложенной в уроке по ноде смещения.

Для ориентировки вот увеличенная копия анимации выше:

Перед начало работы важно изучить как можно большее число материалов, на которых представлен этот эффект, чтобы точно усвоить, как он выглядит в реальном мире.

Фото: Matt Audet

Фото: Ken Koller

Фото: Michael Gwyther-Jones

Дополнительно советую посмотреть следующее:

  • Nevada Desert Heat waves
  • Heat in Arizona
  • Heat waves in Dubai
  • Powerlines in Nevada

Готовы к работе?

Зададим жару!

Чтобы точно следовать уроку, скачайте исходный файл.

Настройка сцены

1. Начните с добавления плоскости и размещения её прямо перед камерой. Поверните плоскость так, чтобы она полностью перекрывала обзор камеры.

Позднее мы применим к этой плоскости текстуру, которую используем в качестве карты искажения. Когда плоскость будет перемещаться, применённая текстура будет искажать всё, что за ней видно.

2. Необходимо увеличить высоту плоскости так, чтобы она могла свободно перемещаться перед камерой. Увеличьте размер плоскости по оси Z до тех пор, пока она не станет в 4 раза выше (нажать, S, Z, 4, ввод).

3. Расположите плоскость так, чтобы её верх перекрывал обзор камеры.

4. Перейдите к кадру 250 и разместите плоскость так, чтобы низ плоскости перекрывал обзор камеры.

5. При выделенной плоскости переключитесь в редактор графов.

В редакторе графов вы увидите искривлённую линию синего цвета для оси Z.

Эта кривая создаёт проблему, поскольку заставляет плоскость двигаться нелинейно, сначала медленно ускоряясь, затем постепенно замедляясь. Исправляется это превращением кривой в прямую.

7. Выделив эту синюю кривую, нажмите H и в появившемся меню выберите Vector.

Кривая должна превратиться в прямую:

Теперь плоскость будет перемещаться с одинаковой скоростью по всей анимации.

Если вы всё сделали правильно, по нажатию Alt+A вы получите примерно следующее:

Чем быстрее движется плоскость, тем быстрее будет выглядеть тепловая деформация.

9. Выделив плоскость, добавьте новый материал.

10. Оставьте все параметры как есть по умолчанию, но поставьте флажок напротив Shadeless и снимите флажок с Traceable, чтобы плоскость не отбрасывала тень.

11. Перейдите к панели текстуры и добавьте новую текстуру.

12. Оставьте тип текстуры переключенным на облака (Clouds), но поменяйте размер на 0.10, а глубину — на 1.

13. Поскольку мы изменили размер плоскости по вертикали, необходимо увеличить размер отображения (mapping size) Y на 4, чтобы текстура не растягивалась.

14. Поменяйте цвет текстуры на чёрный.

Искажение сцены

Теперь, когда основная сцена настроена, можно приступить к её искажению.

15. Выделив плоскость, перенесите её в отдельный слой, где больше ничего нет. Я использовал для этого слой 4.

16. В параметрах рендеринга нажмите кнопку + для добавления нового слоя рендеринга.

17. Переименуйте слой рендеринга в Heat Distortion и выберите слой, на который переместили плоскость.

18. Переключитесь в композитор (Shift+правая стрелка).

19. Добавьте новый слой рендеринга (Add>Input>Render Layer), из раскрывающегося списка слоёв выберите Heat Distortion.

21. Добавьте ноду смещения (Add>Distort>Displace). Соедините слой рендеринга сцены с её входом Image, а  слой рендеринга Heat Distortion — с её входом Vector. Установите значения X и Y равными 10.

Нода смещения должна при этом исказить сцену текстурой облака:

Проблема заключается в том, что искривлённым оказалась вся сцена независимо от расстояния каждого объекта от камеры.

В реальности тепловая деформация имеет свойство накапливаться по мере удаления от наблюдателя. Для достижения этого эффекта мы создадим массив нод для искажения изображения относительно оси Z.

Наращивание искажения на больших расстояниях

22. Добавьте ноду Map Value (Add>Vector>Map Value) и соедините её с выходом Z слоя рендеринга. Это даст нам возможность редактировать проход по оси Z. Установите значение смещения (Offset) равным -7.00, а размера (Size) — равным 0.020 (эти значения будут меняться в зависимости от каждой конкретной сцены). Соедините выход с нодой просмотра для контроля за результатом.

Должно получиться что-то вроде этого:

Чем темнее область, тем меньше эта область искажается.

23. Соедините выход ноды Map Value с нодой ColorRamp (Add>Converter>ColorRamp)

Это удалит нежелательные артефакты превращением глубины X в легко читаемый чёрно-белый вывод.

24. Добавьте ноду Mix (Add>Color>Mix) и соедините с ней выход слоя рендеринга сцены и выход ноды смещения (Displace).

25. Соедините выход ноды ColorRamp со входом Fac ноды Mix. Таким образом проход по Z будет использован в качестве маски для двух входов.

Теперь искажение будет нарастать по мере удаления объектов от камеры.

Создание шумного эффекта размытости вне зоны резкости

26. Добавьте ноду расфокусировки (Defocus) и соедините вход Image с выходом ноды Mix. Соедините вход Z c выходом Z слоя рендеринга сцены.

27. Поставьте флажок напротив Use Z-Buffer, чтобы нода расфокусировки использовала вход Z. Значение fStop определит, как быстро начнут размываться объекты. Для этой сцены я выставил значение равным 10. Чтобы эффект был шумным, оставьте флажок Preview нетронутым. Чем меньше количество выборок, тем зернистее будет вид эффект.

Создание миража

Этот шаг необязателен, и необходимость его выполнения тоже зависит от каждой конкретной сцены. Вы можете создать эффект миража добавлением плоскости с зеркальным материалом, либо попросту приподнятием объектов на землёй. Я выбрал последний вариант:

Готовая анимация:

Увеличенный вариант:

Скачать конечный файл .blend

Спасибо за прочтение!


Автор: Andrew Price
Оригинал: How to Create Heat Distortion

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*


Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.