В этом седьмом уроке серии об огне и дыме с использованием симулятора Fluid в Blender 4.5 мы рассмотрим, как применять Voxel Attributes, описанные в предыдущем уроке, для изменения материалов огня и дыма при рендеринге.
Этот урок является частью мини-серии из 10 эпизодов об основах огня и дыма в Blender 4.5. Чтобы просмотреть полный список эпизодов, нажмите здесь.
Текстовая расшифровка видео
Всем привет! В этом седьмом уроке серии об огне и дыме с использованием симулятора Fluid в Blender 4.5 мы рассмотрим, как применять Voxel Attributes, описанные в предыдущем уроке, для изменения материалов огня и дыма при рендеринге.
В сцене, которую я использую для первого примера в этом выпуске, излучение огня исходит из Vertex Group объекта с компонентом Fluid, настроенным как Inflow Fire. Domain симуляции охватывает только верхнюю часть горелки, поскольку именно там развивается пламя.
Говоря об эмиссии из Vertex Group, если испускаемые языки пламени не видны, проблема может быть связана с разрешением Domain. При слишком низком разрешении, а значит при слишком крупных Voxels, Voxels, содержащие вершины эмиссии, могут считаться пустыми и не создавать пламя. Поэтому попробуйте увеличить разрешение Domain.

При стандартных настройках начальное пламя будет очень низким, а сбоку может быть даже незаметным, но теперь мы знаем несколько способов изменить его внешний вид. Например, можно повлиять на начальную скорость объекта Inflow, чтобы придать пламени импульс вверх, или изменить скорость реакции Domain, чтобы сделать пламя выше. Что касается типа пламени, создаваемого этой горелкой, он может отличаться по уровню турбулентности и цвету. Чтобы получить пламя четвертого типа, почти без турбулентности, я уменьшаю значение Vorticity в разделе Fire у Domain до 0.
Перед тем как перейти к настройке Material, я добавляю больше вершин в Vertex Group эмиссии и ограничиваю анимацию Timeline последними 100 кадрами симуляции, то есть моментом, когда пламя уже полностью сформировано и стабильно.
Хорошо, перейдем к настройке Material. Я сразу перевожу 3D вид сбоку в режим Rendered и устанавливаю Strength фона World в 0, поэтому предварительный просмотр сначала будет черным. В Image Editor слева размещено референсное изображение, а в центре находится редактор Material с Domain, содержащим узел Principled Volume.
Как мы знаем из предыдущих уроков, увеличение Emission Strength и назначение однородного цвета в поле Emission Color дает довольно неудовлетворительный результат. Мы уже видели, как использовать Blackbody, но теперь пришло время научиться работать с режимом Emission.

Из предыдущего выпуска мы знаем, что симулятор Fluid хранит информацию для каждого Voxel. Эти данные можно получить с помощью узлов Attribute, введя имена атрибутов в соответствующее поле. Однако для объемных материалов существует специальный узел Volume Info, который предоставляет эти атрибуты в виде выходных сокетов.
Подключив выход Flame или Temperature к входу Emission Strength, внешний вид пламени резко меняется. Выход Flame дает более плавно интерполированные значения по сравнению с Temperature, при использовании которого сильнее заметно разрешение Domain.
По этой причине я буду использовать Flame.
Выходы Flame и Temperature также можно применять для Emission Color, особенно если между ними добавить узел Color Ramp. Таким образом можно изменять цвет пламени в разных участках на основе информации, содержащейся в Voxels Domain.

Я использую данные Flame для Color Ramp и, соответственно, для параметра Emission Color материала. Теперь задача состоит в том, чтобы определить цвет и уровень прозрачности для точек Color Ramp. Для этого можно использовать Color Picker в Blender, чтобы брать цвета прямо с референсного изображения.
Помните, что цвета различных точек могут включать уровень прозрачности. Это особенно полезно для внешних частей пламени, где часто видна полупрозрачная область перед более плотной границей.
Также необходимо тщательно выбрать тип интерполяции между точками Color Stop.
Среди доступных вариантов самым радикальным является Constant, который резко переключается от одного Color Stop к другому. Это не очень реалистично, но может использоваться для более художественных эффектов.
Если этот урок по материалам кажется коротким, то только потому, что мы опираемся на информацию и параметры, изученные в предыдущих выпусках.
На этом этапе мы уже знаем достаточно, чтобы начать формировать различные формы пламени через параметры Fluid у объектов Domain и Flow, а также настраивать их внешний вид с помощью Blackbody или Emission и различных узлов, предоставляемых Blender.

Не ограничивайтесь настройкой, которую я только что показал. Экспериментируйте и с другими узлами Material. Например, можно добавить узел Math в режиме Multiply или Power, чтобы изменить Emission Strength, модифицируя данные, поступающие из Flame. Кроме того, параметры этих узлов могут иметь ключевые кадры, поэтому вы можете анимировать интенсивность пламени через Material, не изменяя поля компонента Fluid в симуляции.
Перед завершением урока я покажу, как создал три объекта Inflow с тремя разными цветами внутри одного Domain. Результат не идеален, но я использую его как возможность продемонстрировать еще один пример применения узлов, в частности Color Ramp.
Как мы знаем, Material должен задаваться на уровне Domain, поскольку он формируется на основе Voxels Domain. Это означает, что нельзя назначить разные узлы Blackbody объектам Inflow внутри него.
Однако у объектов Inflow есть параметр Smoke Color, определяемый в панели Inflow.
Этот цвет можно получить в шейдере Domain через узел Volume Info, используя выход Color.

Используя это поле как Factor в узле Mix Shader, можно назначить разные Principled Volume разным Voxels в зависимости от цвета дыма, заданного для них.
Но один только Mix Shader просто смешал бы два шейдера поровну, поэтому необходимо использовать Color Ramp с резким разделением цветов, полученных из Volume Info.
Для этого я устанавливаю метод интерполяции Constant.
Затем я назначаю три разных цвета в поле Color для трех объектов Inflow: белый, серый и черный слева направо.
Первый Color Ramp отделяет черный от остальных цветов. Черный соответствует значению 0, поэтому он направляется на первый вход Shader первого узла Mix Shader, который в данном случае подключен к Principled Volume с красным Blackbody Tint.
Я также включаю Denoise в предварительном просмотре 3D, чтобы лучше различать цвета элементов в режиме Rendered.

Второй вход Shader первого Mix Shader подключен к Principled Volume с синим Blackbody Tint. Таким образом, если цвет дыма черный, мы получаем красный Blackbody.
Если цвет дыма не черный, мы получаем синий Blackbody.
Далее следует еще один узел Mix Shader, который получает на вход другой Color Ramp, также установленный в режим Constant, с точкой Color Stop, размещенной точно в середине шкалы.

В этом случае, если цвет дыма находится между черным и серым, используется первый вход Shader второго Mix Shader. Этот шейдер является результатом предыдущего разделения между черным и серым, поэтому итоговый цвет будет либо красным, либо синим.
Если же цвет дыма находится между серым и белым, используется второй вход Shader второго Mix Shader. Этот вход подключен к Principled Volume с зеленым Blackbody Tint.
Таким образом, объект с белым значением Smoke Color будет рендериться зеленым цветом.
Разумеется, это не единственный способ создать огненные сферы с двумя или тремя различными цветами, но я хотел показать его как пример применения. Как я упоминал ранее, разделение не идеально, поэтому я призываю вас предложить улучшения или альтернативные схемы в комментариях, если найдете более удачные решения.
