Журнал LinuxFormat - перейти на главную

LXF124:Blender

Материал из Linuxformat
Версия от 10:57, 26 октября 2010; Crazy Rebel (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Blender Нетривиальные приемы 3D-моделирования ля жаждущих большего, чем основы

Содержание

Blender: Бархат и теплота свечей

Часть 2: Считаете физику скучным предметом? Подумайте еще раз – Андрей Прахов докажет, что она бывает наглядной, выразительной... и романтичной.

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

Установим стол

Наш стол круглой формы будет сделан из темного стекла с зеркальным покрытием. Создание такой модели не должно вызывать затруднений, и я коснусь его вкратце (рис. 1).


Я использовал три примитива: Mesh Circle для крышки и основания, и Cylinder – для ножки. Создайте первый Circle с заливкой (Add > Mesh > Circle) и придайте ему объем с помощью операции Extrude. Продублируйте полученный объект, отмасштабируйте его и разнесите по координате Z. Примитив Cylinder (Add > Mesh > Cylinder) разместите точно между двумя кругами и, используя инструмент масштабирования, придайте ему форму, показанную на рис. 1. Осталось выделить все объекты и объединить их в один Mesh командой Join (CTRL+J).

Материал потребует больших усилий. Как мы договорились, стол будет сделан из темного, слегка непрозрачного стекла, способного отражать объекты. Здесь нам поможет урок из LXF123. Создайте новый материал, назовите его подходящим именем и установите базовый цвет в темно-серый (R=0.200, G=0.200, B=0.200). В качестве диффузного шейдера выберите стандартный Lambert с максимальным значением Reflection (Ref=1.000). Оптимальным бликовым шейдером будет BlInn со Specular=2.00, Hard=498 и Refraction=6.986.

В результате вы получите материал с сильно выраженным отражающим свойством, но при попытке отрисовать сцену заметите, что блик представляет собой яркую точку на ровной поверхности. Настоящий стеклянный стол дает блик в виде вертикальной полосы. Поправить дело поможет функция Tangent, находящаяся в закладке Shaders.

Перейдем к прозрачности. Откройте вкладку Mirror Transp панели материла и включите кнопку Ray Transp. Оптимальным значением показателя преломления (IOR) для стекла будет 1.52. Так как нам необходимо добиться лишь частичной прозрачности, установите параметр Fresnel равным 2.00.

Не менее просто настроить зеркальные свойства материала. В той же закладке Mirror Transp присутствует кнопка с характерным названием Ray Mirror. Среди обилия ее опций нас пока интересуют две: RayMir и Fresnel. Именно RayMir отвечает за степень зеркальности. Установите его в 0.20. Свойство Fresnel аналогично одноименному из Ray Transp и в нашем случае должно равняться 0 (рис. 2).


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

Накроем скатертью

Мы подошли к основной теме урока – работе с физикой мягких тел. Blender и раньше успешно поддерживал «soft body», но с недавних пор он обзавелся специальным инструментом, позволяющим имитировать физику тканей.

В качестве основы для скатерти послужит примитив Plane (Add > Mesh > Plane). Чем выше число полигонов модели, тем лучше будет выглядеть конечный результат – таковы особенности физики – но тут важно соблюсти баланс между красотой и временем работы.

Отмасштабируйте Plane до необходимых размеров и разместите над крышкой стола так, чтобы остался минимально возможный зазор. Разбейте поверхность примитива инструментом Subdivide (он доступен только в режиме редактирования в меню Specials по клавише W) минимум четыре раза и перейдите обратно в режим объекта. Нужные нам настройки находятся на панели Object (F7). В появившейся дополнительной панели кнопок нажмите Physics Buttons (рис. 3). Нас интересует вкладка Cloth. Нажмите одноименную кнопку для активации физики тканей.


Blender позволяет настроить параметры вручную или воспользоваться готовыми шаблонами по типу ткани. Их можно найти в выпадающем меню Material Preset. Каждая новая версия Blender обновляет и расширяет перечень, но бархата вы там пока не найдете. Поэтому просто подберем пресет опытным путем – к примеру, возьмем Cotton (Хлопок). Нажимаем ALT+A... и ткань уверенно пролетает сквозь стол. Дело в том, что мы не включили проверку столкновений при расчете физики.

В панели физики для объекта «стол» есть целых три вкладки с именем Collision. Не теряйтесь: просто Blender позволяет контролировать столкновения для каждого типа физики. Нам нужна закладка Collision, расположенная рядом с Cloth. Откройте ее и нажмите кнопку Enable Collisions. Вот и все: анимация показывает, что ткань элегантно обвивает стол.

Займемся настройкой материала. Создайте его и установите базовым цветом темно-красный (R=0.314, G=0.078, B=0.078). Нам необходимо имитировать ткань бархата. Хорошим выходом были бы статические частицы, придающие ткани объем, но это значительно увеличит время обработки сцены. Поэтому воспользуемся небольшим трюком и задействуем шейдеры. Среди коллекции таковых в Blender имеется диффузный MInnaert, который при должной настройке придает материалу бархатистый оттенок.

Итак, откройте вкладку Shaders и выберите MInnaert. Установите Ref=0.300 и Dark=0. В качестве бликового подойдет Bllnn со Spec=0.50, Hard=50, Refr=4.000.

Сделали? Отлично; прогоните анимацию примерно до 50‑го кадра (в нужный момент просто нажмите клавишу Пробел для остановки расчета). Установите Energy=0.5 для Ambient Occlusion (приглушенный свет более выгодно оттенит нашу сцену) и нажмите F12 для получения окончательного результата (рис. 4).


Физика в действии

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

А про пол забыли?

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

Создайте плоскость соответствующих размеров и разместите на ней стол. Установите базовым цветом плоскости темно-синий (R=0.205, G=0.271, B=0.497). Шейдеры можно оставить стандартные (Lambert и CookTorr), только не забудьте активировать кнопку TraShadow в панели Shaders для просчета теней трассировщиком лучей. Для смягчения результата работы диффузного шейдера можно также включить кнопку Cubic.

Откройте вкладку Mirror Transp и установите для зеркальности RayMir = 0.10 и Fresnel = 0.01. На этом основную настройку материала можно считать законченной. Для создания мозаики мы будем использовать одну из процедурных текстур.

Нажмите клавишу F6 для перехода в панель выбора текстур. Обратите внимание на одноименную вкладку с еще пустыми ячейками. Для добавления текстуры в желаемый слот достаточно выделить его и нажать кнопку Add New (если у вас уже имеется настроенный канал, можно выбрать его из выпадающего списка). Конкретный вид текстуры задается в меню Texture Type. Нам подойдет DistortedNoise. Установите для нее параметры DistAmnt = 0.020 и NoiseSize = 0.060. В этой же панели имеются два выпадающих списка для выбора генераторов текстуры: Distortion Noise и Noise Basis. Конечный вид процедурной текстуры зависит от сочетания этих двух генераторов. Установите для обоих списков вариант Voronoi Cracle. Настройка текстуры завершена — осталось надлежащим образом решить задачу смешивания ее с основным цветом материала.

Перейдите обратно в окно Material Buttons и откройте закладку Map To. Она используется для окончательной настройки выбранного текстурного слота. Здесь можно указать тип смешивания, эффекты бампинга и многое другое.

По умолчанию процедурная текстура накладывается на основной материал при помощи функции Mix и имеет фиолетовый цвет. Режим-то нас устраивает, но про цвет этого сказать нельзя. Щелкните по имеющемуся образцу для вызова плавающего окна настройки цветов и укажите следующие значения RGB: R=0.462, G=0.483, B=0.676. Остается только утопить кнопку Col для включения режима смешивания цветов. Пол готов! (рис. 5).


Процедурные текстуры

Вы, наверное, в курсе, что помимо основного материала в проекте Blender можно использовать загружаемые текстуры. Однако есть еще один вид текстур – процедурные, получившие свое название по способу создания. Если загружаемые текстуры представляют собой обычные графические файлы, то процедурные создаются в реальном времени при помощи хитроумных алгоритмов. Как правило, это разновидности шумов. Обычно такие текстуры используют для имитации неровностей поверхности, к примеру, при помощи технологии Normal Map. Иногда их можно применять для создания узоров геометрических фигур. Главными особенностями процедурных текстур является непрерывность (бесшовность) и богатство опций генерации. С помощью несложных настроек текстурных каналов в одном материале можно использовать до 10 типов текстур, с различной степенью смешивания.

Модель подсвечника

В прошлый раз мы создавали объекты с плавными изгибами форм выдавливанием поверхностей из заготовок NURBS. А сейчас познакомимся с еще одним способом, позволяющим создавать объекты более изощренных форм, и гораздо быстрее.

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

Откройте вид окна сверху и добавьте примитив Bezier Curve (Add > Curve > Bezier Curve), чтобы получилось нечто похожее на рис. 6. Spin достраивает объект, поворачивая контур по указанной оси на определенный угол. Но он работает только с mesh-примитивами, поэтому, если заготовка уже готова, ее следует преобразовать командой Convert (ALT+C).


Результат работы Spin зависит от выбранного окна просмотра, а также местоположения 3D-курсора. Откройте окно Front и установите курсор для отметки оси вращения.

Войдите в режим редактирования полученного mesh-объекта. Перейдите на панель Mesh Tools и найдите кнопку Spin. Под ней расположено поле Degr для ввода угла вращения (в градусах). Нам нужен полный оборот, так что укажите 360. Выделите все элементы (клавиша A) и смело жмите Spin.

Пора нашему подсвечнику обзавестись подходящим материалом. Попробуем создать нечто вроде металла, а в качестве основы воспользуемся уже готовым материалом стола. Выберите его из списка Link to Object (панель Links and Pipeline). В целом он замечательно подходит для нашей задумки, надо лишь подстроить зеркальность и убрать прозрачность. Только не забудьте перед этим сделать материал обособленным: в противном случае любые изменения отразятся и на других объектах. Для этого просто щелкните по числу рядом с названием (оно указывает на количество объектов, к которым присоединен материал).

Откройте вкладку Mirror Transp и отключите кнопку Ray Transp. Внимание: по неясным причинам Blender продолжит использовать параметр Fresnel, поэтому принудительно сбросьте его в 0. Для зеркальности подойдут следующие значения: RayMir = 0.20, Fresnel = 5.00.

Зажжем огонь свечей

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

Начнем с модели свечи. В качества примитива сгодится Cylinder. Добавьте его, отмасштабируйте по размерам подсвечника и вдавите внутрь верхнюю точку для создания углубления. Для фитиля можно использовать кривую Безье; добавьте ее в проект и придайте ей желаемую форму. При отрисовке сцены кривую вы не увидите: у нее нет объема.

Нажмите F9 – откроется панель инструментов Curve and Surface. Отожмите кнопки Back и Front: они влияют на заливку кривой при использовании функций вроде Bevel. А ею-то мы сейчас и воспользуемся.

Для управления Bevel имеются параметры Bevel Depth (глубина кромки) и BevResol (ее разрешение). Подстройте их по своему усмотрению, а мы перейдем к работе с частицами.

Использование частиц невозможно без излучающего их объекта: им может быть любой примитив из группы Mesh. В терминологии 3D он получил название «эмиттер» (Emitter). Нам идеально подойдет Circle: добавьте его в проект (Add > Mesh > Circle), уменьшите размер и разместите объект в верхней части фитиля.

Настройки частиц доступны через кнопки Particle Buttons в уже знакомой группе панели Object (рис. 3).

Присоедините к эмиттеру генератор частиц, нажав Add New — откроются несколько панелей с поистине обширными функциями. К сожалению, в документации Blender работа с частицами освещена крайне скудно, и зачастую разработчики не успевают выкладывать для нее обновления.


Панель Particle System содержит глобальные настройки частиц. Здесь можно выбрать их тип (динамические или статические), время начала и завершения генерации, некоторые параметры случайности. Для нашей задачи установите следующие: Amount (количество частиц, испускаемых за отведенное время) = 200, Start (номер кадра для запуска генерации) = 1, End (номер кадра завершения) = 100, Life (время жизни отдельной частицы) = 5.00. Все остальное можно оставить по умолчанию.

Следующая панель, Physics, настраивает поведение частиц (хаотичное перемещение по указанным координатам, вращение, разброс и т. п.). Здесь также можно указать их глобальное направление движения – именно это нам и нужно для имитации пламени свечи. Достаточно изменить всего лишь один параметр, AccZ (AccZ=2.00), и наши частицы устремятся вверх.

Для создания огня потребуется еще одна панель – Visualization: в ней мы задаем способ визуализации частиц в окне программы (секция Draw), объект-образец (отдельный примитив или даже группу), материал и свойства демонстрации при отрисовке. Секцию Render следует привести в такое состояние:

  • Material (порядковый номер материала, присвоенного эмиттеру) = 1.
  • кнопка Col включает только диффузный цвет эмиттера. Должна быть отжата.
  • кнопки Emitter и Parents отвечают за дополнительные генераторы частиц, присвоенные эмиттеру. Отжаты.
  • Unborn При ее включении все частицы, даже если они еше не «родились», демонстрируются на экране.
  • Died При ее включении остаются видимыми «отработанные» частицы.


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

Теперь создайте для эмиттера новый материал и установите в качестве базового цвета оранжевый (R = 1.000, G = 0.558, B = 0.000). В панели Links and Pipeline нужно включить кнопку Halo (набор эффектов свечения). Обратите внимание на панель Shaders, где появились новые опции. Нас интересуют только HaloSize (размер отдельной точки) = 0.020, Hard (жесткость излучения) = 127, Add (смешивание цветов) = 1.000.

Огонь получился неплохим (рис. 8); недочеты можно исправить, дополнительно поиграв с настройками материала.


Расставьте объекты по своим местам и попробуйте обработать сцену (рис. 9). Внимательно приглядевшись, вы заметите, что пламя свечей нигде не отражается. Для реализации полноценной игры света необходимо в корне пересмотреть генерацию частиц, но это уже тема для другого разговора. LXF

Персональные инструменты
купить
подписаться
Яндекс.Метрика