Как сделать туман в блендере

Обновлено: 17.05.2024

Как понятно из названия, темой этого поста является создание т. н. полых фигур в открытом редакторе трехмерной графики Blender.

На самом деле прежде, чем наконец-то понять, каким образом выполнить поставленную в заголовке задачу, я потратил часа 2. Сразу оговорюсь, что подробно процесс создания самого куба равно как и интерфейс Blender я описывать не буду, предполагая, что вы уже знакомы с рабочей областью, горячими клавишами и основными командами.

Что такое "полые фигуры" и зачем они нужны? Если вы соберетесь создавать какое-либо здание в Blender с внутрениими интерьерами, комнатами и другими помещениями, в которые можно войти с улицы, то знайте, что ваш дом - полый. Можете представить его себе как куб с вырезанной сердцевиной и оставшимися тонкими стенками.

Что же нужно сделать, чтобы добиться эффекта полой фигуры? Расзберем это на примере куба:

1. Переключитесь в проволочный режим просмотра (Z). Так будет удобнее.
2. Создайте в Blender обычный, но достаточно большой куб.
3. Продублируйте куб (Shift-D), уменьшите размер копии (выделите копию и нажмите S).
4. Поместите получившийся меньший куб внутрь большего
5. Выделите сначала внешний куб (шелчок по нему правой кнопкой мыши), а потом, зажав клавишу Shift, внутренний куб. Получится, что вы выделили оба куба сразу.
6. Нажмите клавишу W, из выпавшего списка выберете Difference, схватите полученную фигуру и оттащите в сторону. На ее месте останется куб с двойными стенками. Вы оттащили такой же. Удаляйте его, он больше не нужен.
11. Все, получили полый куб, который стал цельным объектом. Если теперь попробуете его подвигать, то увидете, что оба куба перемещаются одновременно.
12. Сделаем дверь нашему домику. Создадим еще один небольшой куб, шириной в дверной проем.
13. Пересеките вновь созданный куб со стенкой полого так, чтобы одна стенка "дверного" кубика торчала наружу.
14. Выделите полый куб, а потом "дверной" ( с нажатой клавишей Shift). Повторите действия с пункта 6.
15. Заготовка для домика готова

Итак, у нас есть объект с материалом и наложенной текстурой – пора, наконец-то, отрендерить его! Рендерингом (или визуализацией) в компьютерной графике называют процесс перевода математической модели объектов в графическое представление. В Blender это делается путем проецирования вершин, составляющих объекты, на экранную плоскость и вычисления пикселей между ними путем растеризации полигонов.

Существует также другой подход – расчет траекторий лучей (или, как говорят специалисты, трассировка лучей). Для каждой точки растрового изображения проводится луч в некоем известном направлении (это может быть, например, вектор от позиции наблюдателя). Затем происходит перебор всех объектов-примитивов трехмерной сцены. Трассировщик проверяет луч на пересечение с примитивом и получает координаты точки пересечения. Если на сцене присутствуют источники света, проводятся дополнительные лучи от полученной точки к источникам света. На основании полученной информации (а также заранее определенных констант), вычисляется цвет пикселя в данной точке.

Blender использует трассировку лучей при расчете зеркального отражения и преломления. Кроме того, на основе трассировки лучей построен новый рендер-движок Cycles, который теперь также является частью Blender (впрочем, Cycles, будучи большой и достаточно сложной в освоении системой, выходит за рамки охвата этой книги).

Камеру можно перемещать и поворачивать, как и любой другой объект. Чтобы понаблюдать, как сцена видна через камеру, можно сменить вид: выберите в меню View → Camera. Теперь нажмите клавишу N и в появившейся левой панели инструментов найдите вкладку View. Поставьте галочку напротив Lock Camera to View. Рамка паспарту теперь станет красной, а камера будет привязана к точке наблюдения навигации. То есть, если вы повернете точку наблюдения средней кнопкой мыши, камера тоже повернется соответствующим образом – это позволяет быстро настроить камеру наилучшим для вас образом. Не забудьте только отключить этот режим привязки, когда закончите позиционировать камеру.

Настройки рендеринга находятся на той же панели свойств, в первой группе – Render. На вкладке Dimensions можно изменить разрешение финального изображения, а также указать процент масштаба финального изображения – это необходимо для быстрой визуализации маленьких промежуточных картинок. Сделав рендер клавишей F12 , вы можете сохранить его: выберите в меню Image → Save As Image… В диалоге выбора файла вы можете указать формат сохранения (PNG, JPEG, Targa, OpenEXR, HDR, TIFF и др.), коэффициент сжатия и другие параметры.

Добавим, что любое отрендеренное изображение можно не только сохранить, но и использовать внутри Blender для дальнейшей работы – в качестве текстуры для объекта или где-нибудь еще.

Любой меш объект может излучать частицы. По умолчанию частицы излучаются из вершин объекта в невидимом луче.

Вы можете определять цвет и прозрачность частиц, скорость и направление в котором они перемещаются, а так же их размер и область перемещения. Эти значения являются "атрибутами" частиц. Комбинируя различные атрибуты, вы можете сделать частицы похожие на пули, светящийся меч Джадая (Звездные войны), облачка дыма или языки пламени.

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

Некоторые скриншоты в этом туториале могут оказаться очень полезными

Для полного понимания этого туториала вам необходимо.

  • Понимать как работает 3D интерфейс Blender'a, вам необходимо уметь выбирать объекты и манипулировать ими в 3d пространстве.
  • Знать как выбирать опции и изменять их значения.
  • Уметь создавать, освещать меш простой меш с помощью ламп.
  • Уметь настраивать камеру.
  • Знать как конфигурировать настройки рендера и анимации.

Начнем работать с стандартной конфигурацией окон блендера, которая выглядит как 2 панели - окно 3D вида и находящееся под ним окно кнопок.

  1. Создайте меш объект icosphere с 3-делениями в центре 3d окна. Эта исо-сфера будет нашим первым "эмиттером частиц".
  2. Добавьте пару ламп area с очень маленьким значением энергии (около 0.075). Разместите лампы по обе стороны от icosphere.
  3. Нажмите клавишу F10 для отображения окна кнопок рендера.
  4. Настройте опции рендера так, чтобы получить быстрый рендер с низким разрешением, используйте следующие настройки:
    1. Отключите кнопки OSA, SHADOW, ENV MAP и RAY
    2. Установите размер изображения 50%
    1. В окне вида нажмите 'Num1', для перехода в вид спереди.
    2. В окне вида, 'кликните по камере' для того, чтобы ее выбрать.
    3. В окне вида, нажмите 'Alt + R' для сброса вращения камеры.
    4. В окне вида, нажмите 'N' для редактирования свойств камеры.
    5. Установите значения для 'LocX' и 'LocY': '0', после этого камера будет сосредоточена в центр icosphere.
    6. Вы можете, также настроить дистанцию от icosphere с помощью опции 'LocZ', установите значение 15 или более (в зависимости от размера вашей icosphere), этого для начала должно быть достаточно.
    7. Нажмите 'Num0' для возврата в режим вида из камеры и нажмите 'F12' для повторного быстрого рендера. Icosphere теперь должна находится в центре изображения.

    (Примечание - вы можете также использовать виджет вращения для позиционирования камеры).

    (Примечание для Новичка: Я использую YafRray как основной Рендерер, однако частицы при рендере не отображаются. Однако при использовании стандартного Рендера - частицы видны. (Я заметил, что по каким то причинам YaFray не признает эффекта Halo.)

    (Примечание - вы можете также создать Ограничитель TrackTo для камеры, для того, чтобы при передвижении камеры icosphere оставалась в центре видимости. Это делается так: Выберите камеру, затем icosphere. Нажмите Ctrl+T и выберите Ограничитель TrackTo. Перемещайте камеру для того, чтобы проверить работу ограничителя.

    Теперь у вас должна быть icosphere с эффектом Halo на каждой вершины, которая выглядит примерно так :

    HaloSphere.jpg

    Дым легче моделировать, и мы начнем изучение системы частиц именно с него. Для начала создадим простое излучение частиц, которые можно увидеть в окне просмотра:

    1. Кликните 'ПКМ' по icosphere для того, чтобы ее выбрать
    2. Нажмите 'F7' для перехода к кнопкам Объекта ('Object buttons')
    3. Перейдите во кладку "'Physics'" и во второй панели обозначенной, как "'particles'" нажмите "'NEW'"
    4. Вы можете видеть вкладки 'Particles' и 'Particle Motion' (** Можно разделить вкладки, что позволит вам видеть обе сразу. ЛКМ кликните по маркеру вкладки - Particle или Particle Motion и перетащите в сторону. Теперь панели отделены. ** Это необязательный шаг, и он в принципе не имеет какого-либо отношения к этому уроку.

    Прежде чем продолжить, нажмите 'F12' для того, чтобы сделать рендер текущего состояния объекта. Пока на изображении рендера либо ничего не отображается, либо просто белая сфера. Ваша icosphere, наверно, исчезнет, или станет меньше. Это потому, что Вы назначили каждую вершину эмиттером частиц. Помимо этого частицы пока не имеют каких либо атрибутов и поэтому на рендере они не отображаются. (ПРИМЕЧАНИЕ :(ПРИМЕЧАНИЕ: Если вы используете версию Blender 2.42, после всех этих манипуляций вы возможно увидите небольшой ореол в центре сферы)

    Не снимая выбора с icosphere, выполните следующие два изменения в системе частиц:

    1. Кликните 'ЛКМ' по вкладке Particles.
    2. Активизируйте кнопку 'Static'.
    3. Кликните по вкладке "'Particle motion'".
    4. Измените значение 'Norm' с 0.000 на '0.100' (Совет: кликните несколько раз по левой стрелоске числового поля Norm).

    Как вы можете заметить сфера теперь отображается как поток частиц (Это можно увидеть только в Объектном режиме), исходящий из каждой вершины и сфера теперь немного похожа на звезду. Используйте 'СКМ' для вращения вида, это позволит оценить симметричность потока частиц. Нажмите 'NUM1' для возврата в вид спереди или 'NUM7' для перехода в вид сверху.

    Нажмите 'F12' для того, чтобы сделать быстрый рендер изменившегося объекта (см. рисунок).

    HaloSphere2.jpg

    У вас должно получится что-то вроде белого излучения. Возможно вам придётся немного изменить положение камеры, чтобы все это увидеть. Каждая частица при рендере отображается как яркий шарик, но если частиц довольно много в одной точке- вы не увидите их как отдельные частицы.

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

    1. В окне кнопок нажмите 'F5' для отображения окна затемнения ('shading window').
    2. Кликните по иконке 'кнопок материала' (красный шарик) для отображения настроек материала.
    3. Измените название материала на MA:smoke

    По умолчанию цвет материала - светло-серый, выглядит немного ярким для дыма. Мы откорректируем некоторые из атрибутов частиц:

    1. Кликните по вкладке 'Shaders' для отображения панели затемнения.
    2. Установите значение для 'Hard - 15'
    3. Установите 'Halo size' (размер ореола) - '0.300'
    4. Во вкладке материала установите значение для 'A (Alpha)' - '0.80'.
    5. Во вкладке материала установите значение 'RGB' цвета на '0.56', '0.55', и '0.50' соответственно.

    В окошке предварительного просмотра образец выглядит как будто исчезнувший. Однако нажмите 'F12' для быстрого рендера и вы увидите, что что прежнее белое излучение теперь похоже на звездоподобный дым. Однако это пока не похоже не настоящий дым потому, что частицы слишком организованы - при рендере вы должны увидеть приблизительно следующее (см. изображение справа)

    HaloSphere3.jpg

    Продолжаем моделировать дым, нажмите 'F7' для отображения кнопок Объекта. Когда мы начали создавать дым, мы установили статический тип излучения частиц (кнопка "Static"). Однако возможно вы хотели бы сделать анимацию движения дыма в финальной сцене, значит в следующем шаге мы придадим частицам некоторую случайность и заставим их двигаться как дрейфующий дым.

    Вначале давайте рассмотрим анимацию по умолчанию частиц дыма:

    1. Кликните по кнопке 'Static'. Заметьте, что звездоподобность частиц исчезла и меш вновь отображается только как вершины - нет полигонов.
    2. Убедитесь в том, что 'сфера выбрана' (подсвечена розовым).
    3. Нажмите 'Num0' для перехода в вид в камеру.
    4. Направьте свой курсор в 3D окно и нажмите 'Alt-A'. Заметьте, что каждая вершина теперь излучает частицы, в той же схеме звезды.

    Давайте сделаем быстую анимацию следующим способом:

    То, что Вы должны видеть - это облачко дыма, начинающихся с местоположения icosphere (которая является невидимой), и излучающееся за пределы. Это немного походит на выбросы дыма, однако частицы все ещё слишком организованы, что бы быть похожими на дым.

    Теперь, когда потратили определенную часть времени на создание анимации, не мешало бы .blend файл. После того, как вы сохраните файл как smoke1, вы можете экспериментировать с настройками частиц. Вернитесь к настройкам:

    и экспериментируйте со значениями опций Halo Size, Hardness, Alpha и цветом дыма. Нет необходимости создавать новый материал, вам нужно только изменить значения RGB и A (Alpha).

    Для примера со значениями Halo Size - 0.900, Alpha - 0.100 и Hard - 1.0 - получается более густой и реалистичный дым. После того, как вы закончите эксперименты со значениями, используйте эти значения и сохраните файл.

    Если вы моделируете дым исходящий от огня, вам необходимо, чтобы система частицы перемещалась более беспорядочно, но дрейфовала в предсказуемом направлении, как будто перемещаемая бризом или просто вздымающаяся от огня.

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

    Для настройки модели, первое, что нам необходимо - это вернуть статический вид частицам, как описано ниже:

    1. В окне кнопок, нажмите 'F7' для отображения кнопок Объекта.
    2. В панели 'Particlesнажмите на кнопку 'Static'. Теперь частицы сферы вновь похожи на зведу.
    3. Нажмите 'Num1' для перехода в вид спереди.
    4. В панели Particle Motion найдите группу настроек обозначенных "'Force'" и измените их следующим образом:
      1. Измените значение 'X' на '0.500'. Обратите внимание, что частицы немного наклонились вправо.
      2. Измените значение 'Z' на '0.500'. Теперь частицы немного вытянулись вверх.

      То, что было прежде организованной звездой частиц, теперь стало случайной массой. Вы можете сделать предпросмотр анимации следующим образом:

      1. В панели 'Particles' кликните по кнопке 'Static' для, того чтобы вернуть частицам анимационные свойства.
      2. Нажмите 'Alt-A' в 3D окне.

      Облачко частиц теперь дрейфует беспорядочно в право. делаем настоящую анимацию следующим образом:

      1. В окне кнопок нажмите 'F10' для отображения кнопок Сцены.
      2. Нажмите на кнопку 'Anim' для начала анимации.

      Теперь вы должны видеть более реалистическое дрейфующее облачко дыма. Однако осталась одна существенная проблема - вы до сих пор можете видеть контуры объекта из которого излучаются частицы. Один из способов сделать это менее заметным является сокращение масштабов объекта, сделать максимальное сближение вершин объекта, хотя это заставит источник дыма казаться очень плотным. Используем опцию редактирования меш-объектов decimator, которая позволит нам сократить число вершин, сделает наш эмиттер менее плотным, а так же повысим значение Alpha.

      • Лучший* способ действительно перемешать излучения частиц - это выбрать эмиттер, перейти в режим редактирования (кнопка TAB), выбрать ВСЕ вершины эмиттера(кнопка "A"), зайти в меню редактирования (F9), затем во вкладку Mesh Tool. Найдите здесь и нажмите кнопку HASH, затем покиньте режим редактирования (кнопка TAB). Теперь вы може увидеть, что излучение частиц ДЕЙСТВИТЕЛЬНО случайно.

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

      Однако для этого урока мы оставим несложный дым и перейдем к следующему шагу анимации простого огня и искр, смешивающихся с дымом.

      В этом месте вы можете сохранить файл а затем экспериментировать с изменениями значений опций системы частиц. Для дыма, изображение которого находится ниже были использованы Halo size 2.0, 2000 частиц, Alpha 0.5 и техника рандомизации с помощью "Hash", описанная выше.

      HaloSmoke.jpg

      Огонь создает дым, поэтому сохраните .blend файл с дымом на будущее. Теперь нажмите F7. под вкладкой Particle Motion установите значения для X и Z - 0.00. Затем нажмите F5 во вкладке материалов. Какой цвет для огня вы выберете? Я выбрал оранжевый и желтый. Измените цвет на R=1 G=0.273 B=0. Нажмите F6 для перехода в панель текстур. Кликните по Add New и выберете текстурный тип Noise. Затем вернитесь к кнопкам материала и вы увидите что цвет материала стал оранжевый с фиолетовыми вкраплениями. Фиолетовый? В огне? Так не пойдет, поэтому перейдите во вкладку Map To и измените R на 1, G на 1 и B на 0. Теперь цвет материала стал оранжевый с желтым. Так то лучше.

      Для начала нужно создать поверхность воды. Сделать это можно разными способами.

      Способ 0: Dynamic Paint

      Добавленную в сцену плоскость необходимо несколько раз подразделить (выделить всё в режиме редактирования W Subdivide). Чем больше подразделений — тем выше→→качество, но и больше нагрузка на комп.

      После подразделения отправляемся во вкладку Physics (панель инструментов), жмём кнопку Dynamic Paint Add Canvas Surface Type: Waves. Водная поверхность готова.→→Теперь создаём объект, который будет создавать, собственно, волны. Для этого сойдёт любой меш. Выбираем его, опять идём в Dynamic Paint, но на этот раз вместо Canvas выбираем Brush, жмём Add Brush и больше ничего не трогаем.

      Перемещаем Brush — создаём волны. Только при этом не забыть включить проигрывание анимации (Alt+A). Для наглядности сделал убогую гифку:

      Способ 1: Displacement map

      Правда, такая рябь будет статичной (разве что попробовать анимировать какие-то параметры у Noise Texture, но сам не пробовал).

      Суть сводится к тому, что добавленному в сцену плейну добавляется модификатор Ocean, после чего настраиваются его параметры. Подбирать параметры — по вкусу. Из наиболее значимых:

      1. Resolution — чем больше — тем лучше, более-менее оптимально — 15-17.

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

      3. Scale — высота волн.

      4. Chopping — увеличение этого параметра делает гребни волн более отчётливыми.

      Если хочется, чтоб этот океан был не статическим (например, при создании видеоролика),то нужно анимировать параметр Time (который по умолчанию 1.00)

      Теперь, когда поверхность создана понравившимся способом, создадим материал воды.0. Добавляем новый материал плейну.

      1. Difuse BSDF удаляем.

      2. Вместо него ставим Mix Shader.

      4. Добавляем Transparent BSDF и подключаем на нижний инпут Shader у Mix Shader’а.

      5. Добавляем узел Layer Weight, аутпут Fresnel подключаем к инпуту Fac у Mix Shader’а.

      6. Между Layer Weight и Mix Shader’ом втыкаем узел RGB Curves. Как настраивать? Как больше нравится. Включите режим просмотра Rendered и играйтесь с кривыми, пока результат не начнёт нравится.

      7. Теперь желательно сделать так, чтоб по мере увеличения глубины становилось темнее. Для этого добавляем Volume Absorption и подключаем к инпуту Volume у узла MaterialOutput. Цвет и Density, опять же, подбираем сами по вкусу и ситуации.

      Читайте также: