Визуализация объемных флюидов Рассмотрим теперь как рендерить флюиды не с помощью поверхностей, а в виде объемов, заполненных газообразной средой с различной степенью плотности. Такая визуализация применяется при создании облаков, взрывов, тумана и всяческой загазованности атмосферы. Сделаем небольшой пример на создание облаков и экономичного пролета сквозь них. Мы совершенно не будем использовать динамику, это сбережет нам нервы и дисковое пространство, а для организации движения будем анимировать атрибуты встроенных текстур.
Создайте объемный контейнер следующего разрешения (80, 5, 50) и размера (16, 1, 10).
Коль скоро мы не собираемся использовать динамику, сразу зайдите в раздел Contents Details и установите Velocity=Off, Density=Gradient, Density Gradient=Y Gradient.
Это выключит всю динамику и зальет контейнер плотностью равномерно убывающей снизу вверх. Таким образом, в нашей моделиоблака снизу будут выглядеть насыщеннее, чем сверху.

К счастью, можно пропустить кошмарное количество атрибутов, связанных с динамикой, и сразу перейти в раздел Shading.
Мы не собираемся вылетать за пределы контейнера или смотреть на него сбоку, поэтому установите Dropoff Shape=None, чтобы убрать затухание по краям контейнера.
Попробуем покрасить контейнер.
Добавьте к градиенту в разделе Color несколько разноцветных слоев.
Однако чтобы распределить эти слои внутри контейнера, необходимо задать, как этот градиент «ляжет» на контейнер.
Ведь у контейнера нет UV-координат, поэтому плоский градиент должен как-то распределяться внутри него. Закон и направление такого распределения задаются атрибутом Color Input, где можно указать зависимость градиента не только от пространственных координат точек, но и от любого атрибута в точке контейнера.
Выберите Color lnput=X Gradient, и цвета распределятся вдоль оси X.

Однако если задать Color lnput=Density, каждый цвет будет зависеть от значения плотности в точках контейнера. Левый край градиента соответствует нулевому значению атрибута Density, правый - единичному значению.

Конечно, редко нужно делать цвет зависящим от плотности. Ведь от плотности, как правило, зависит прозрачность, о чем свидетельствует значение по умолчанию атрибута Opacity lnput=Density в разделе Opacity.
Поэтому удалите все цвета, кроме белого, из градиента Color.
Затем справа создайте темно-серый слой, a Color Input задайте как Y_Gradient.
Это создаст эффект того, что облака сверху светлее, чем снизу, так как солнце находится над облаками.

Пытливые умы наверняка разгрядели, что градиент самосвечения или раскаленности (Incandescence) по умолчанию зависит от температуры. Это позволяет делать участки с более высокой температурой более яркими (желтый цвет справа соответствует большим значениям температуры, черный слева - меньшим). Таким образом, флюид может окрашиваться по разному в зависимости от физических свойств, а не только от положения в пространстве. У нас температура не задана, и мы не будем использовать этот градиент.
В разделе Opacity градиент представлен в виде графика, так как прозрачность в данном случае представляет из себя числовую величину. Так как Opacity lnput=Density, этот график трактуется просто: чем больше плотность в точке, тем более непрозрачный объем в этой области. Вы можете отредактировать график как угодно, и даже задать обратное распределение прозрачности: где плотнее, там прозрачнее. Однако обычно этот график редактируют для создания более плотных объемов с четкими границами, когда начало графика сдвигают влево, чтобы исключить из отображения (сделать прозрачными) области с низкой плотностью. К этому мы еще вернемся. Чтобы распределение цвета от серого к белому не было столь равномерным и искусственным, можно назначить на любой из слоев Selected Color обычную текстуру типа Volume Noise или Cloud, однако мы будем использовать встроенные к любой контейнер фрактальные текстуры, атрибуты которых располагаются в разделе Texturing.