Статьи: Эксклюзив

Making Of "Кисти"

Всем привет! Меня зовут Глеб Александров (Spelle). Участвую в cg-проектах, веду блог Blender-game.com, где строю планы по захвату мира. Сегодня мы поговорим про Кисти —  натюрморт с претензией на фотографичность. В случае наших кистей, идея произошла из эстетического переживания. На моём столе стоит банка с кистями. Она настолько вросла в обстановку, что перестала обращать на себя внимание. Необычное в обычном помогло разглядеть солнце, которое в это время года около 11 часов утра заглядывает в моё окно. Однажды кисти засветились настолько ярко и радостно, что грязноватая банка в миг оказалась живой и интересной. Решил зарендерить.

Модель

В плане моделинга сцена простая и приятная, если не считать ворс (о нём поговорим отдельно). Деревянные ручки кистей повторяют друг друга по геометрии. Исключение составляют обжимные кольца — сделал пару-тройку таких колец.

Банка делалась модификатором Screw из кривой. В 3ds max аналогичный модификатор называется Lathe. После этого, применил модификатор Solidify для создания толщины. Как видно из картинки, используя модификатор Screw, можно из одного сплайна сделать несколько моделей.

Кольца вытягивал из цилиндра, у основания ворса сплющивая геометрию с помощью пропорционального редактирования (Proportional Editing).

Текстуры и материалы

При первых тестах освещения, ракурса и положения объектов использовались простые материалы, состоящие из одной текстуры — дерево, алюминий и т.д. Но с ходом времени крепло желание сделать кисти-близнецы живыми и разными.
Чтобы представить, что было дальше, достаточно вспомнить пресловутый совет, как нарисовать сову в два этапа: рисуем кружочки, дорисовываем остаток совы. С одной стороны, костяк сцены был готов и могло сложится обманчивое впечатление завершённости, с другой стороны — предстояло сделать ещё в десять раз больше, учитывая уникальность материалов.
Итак, каждой кисти был назначен отдельный материал. Для всех моделей были сделаны текстурные развёртки. Не планировал их использовать для отрисовки текстур в редакторе изображений. Uv-координаты предназначались в первую очередь для бесшовных текстур. Соответственно, шов прятал за пределы видимости камеры.
Наряду с uv-координатами, для наложения текстур часто использовал generated-координаты, а нужного положения текстуры добивался с помощью узла Mapping, подбирая параметры масштаба, вращения, позиции и наблюдая результаты в реальном времени (режим rendered в рабочем окне).

Чтобы текстура проецировалась равномерно и с нескольких сторон сразу, переключал метод проецирования текстур в режим box. С помощью параметра Blend добивался того, чтобы швы в точках схождения проекций не были заметны.

Итак, строение материала выглядело следующим образом:

Базовый шейдер — использует нейтральную бесшовную текстуру, наложенную по Uv-координатам

Дополнительные шейдеры (иными словами, набор mix-шейдеров). В качестве фактора смешивания для каждого из таких mix-шейдеров используется бесшовная чёрно-белая текстура, так называемая «маска».

Координаты для наложения такой текстуры, как правило, процедурные (generated либо object). Дополнительных шейдеров около трёх в каждом материале: грязь, следы краски, царапины.

Для нанесения маркировки, текста, картинок использовалась дополнительная uv-карта. С помощью узла attributes можно переключать uv-карты в редакторе материалов, используя векторный выход. 

Материал банки

Материал банки можно разложить на следующие элементы:

1. Два основных материала — стекло и краска

2. Оба этих материала содержат несколько смешанных материалов

3. Материал стекла состоит из непосредственно стекла и пыли, грязи, отпечатков

4. Материал краски состоит из полупрозрачного (translucent), диффузного (diffuse), отражающего (reflective), светящегося (emissive) шейдеров. Следовательно, содержит диффузную текстуру, текстуру выпуклостей, текстуру прозрачности и т. д.

5. Текстура прозрачности в материале краски определяет, какие участки краски просвечивают (нарисованы тонким слоем), а какие - нет.

6. Карта смещения применяется также в качестве карты нормалей

Освещение

В качестве ключевого источника света использовал солнце с достаточно мягкими тенями — размер для сэмплирования теней — 12 см.
Светящаяся плоскость в окне поддерживает основной источник, даёт мягкое свечение. Верхушки кистей отдельно выхвачены прожектором (spot light).

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

Сферическое HDRi изображение мягко освещает сцену со всех сторон и практически не создаёт теней — это нам на руку в данном случае. Что очень важно, в алюминиевых частях кистей и в банке начинают отражаться особенно яркие участки hdr-ки. Эти блики придают объектам объём и делают металл «металлическим», если вы понимаете, о чём я.

Вращая hdr-ку с помощью узла mapping, искал самое удачное положение для бликов.

Симуляция волос

Переходим к симуляции волос. Вкратце опишу процесс создания волосяного пучка.

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

Дальше делал так:

2. Тип эмиттера – hair.

3. Длина волос и их количество (number, length). Оптимальное значение угадать почти невозможно, следует подготовить себя к неминуемому возвращению к этой стадии.

4. Адаптивный рендер — геометрия волос адаптируется к разрешению и зависит от минимального изгиба исходной геометрии. Данные значения влияют на количество полигонов при рендере. Важно об этом помнить, чтобы втиснуть сцену в лимит видеопамяти для быстрого GPU – рендеринга.

5. Cycles Hair Rendering. Форма — Ribbons

7. В графе Children проставляем значение Interpolated. Display – 2-5, Render 2-5. Финальные значения зависят от мощности компа и плотности шерсти. Теперь возле каждого волоса вырастут ещё несколько. Насколько эти дополнительные волосики будут беспорядочными, регулирует параметр uniform в разделе roughness. Сбивать их в пучки можно с помощью параметра clump.

8. Изгиб (kink) переводим в режим завитков (curl).

7. Остальные значения можно оставить по умолчанию.

8. Дальше переводим вьюпорт в режим редактирования частиц (Particle Edit), и пробуем себя в роли стилиста, причёсывая и выстригая волосы.

Материал волос

В новых версиях Блендера появился специальный шейдер для волос — hair shader. В режиме transmission выглядит очень достоверно. Но, по крайней мере у меня на компьютере, вызывал падение Блендера и выглядел очень требовательным по отношению к ресурсам. Помимо этого, в некоторых случаях сцена с этим шейдером рендерилась в 2-3 раза дольше. Однако, для финального композа отдельно отрендерил ворс, используя этот шейдер, так как оно того стоило.

Для создания материала волос стоит обратить внимание на узел под названием Hair Info.

Используя атрибут Intercept и Color Ramp (Градиент), можно контролировать градиент цвета волос — от корней до самых кончиков. Отметим, что у градиента может быть несколько стадий.

Комбинируя эту информацию с возможностями текстуры, наклыдываемой по uv-координатам, можно уверенно красить волосы — используя их длину (Intercept) и расположение относительно объекта, испускающего частицы (UV).

Рендер

Поскольку сцена тяготела к фотореализму, решил оставить каустику включённой, и максимальное количество отражений не тронутым (8).
Использовал path tracing, а не его branched версию, как более привычный алгоритм. Возможно, сейчас поступил бы иначе, т. к. branched в купе с ручной регулировкой сэмплов на источниках света решает проблему шума точечных ламп и вообще любых ламп, если между ними и камерой много преград.

Рендер был инфернально медленным: на моём компе (i7 3690, 16gb ram, nvidia 650m) рендерилось около двух суток в разрешении 1100-2200 (12000 сэмплов).

Причины:
* сложные и местами непродуманные материалы,
* завышенное значение максимальных отскоков,
* новый шейдер волос,
* количество волос (заметил и сделал ниже),
* классический path tracing в интерьерной сцене с множеством световых переотражений и с большим количеством объектов между солнцем и камерой

Ситуация была такой весёлой ещё потому, что количество пост-обработки решил свести до минимума.
Произошло удачное стечение обстоятельств — сделать тестовые рендеры и несколько раз отрендерить финалку мне помогли ребята из Renegatt (GPUBOX software). За что им спасибо.

Композ и постобработка

Использовал средства Блендера для композа.
Вкратце опишу последовательность обработки.

1. Банка (яркость, контраст). В качестве маски использовал Material ID.
2. Стол — усилил солнечный свет (Diffuse Direct).
3. Ворс (яркость, контраст).
4. Туман (самую малость), через Mist pass
5. Передний план — ярче.
6. Свечение (glare)
7. Хроматическая аберрация — эффект спектрального сдвига по краям картинки (оО)
8. Пыль
9. Виньетирование
10. Кривые
11. Насыщенность

Последний этап — косметическая обработка в фотошопе. Блики, эффекты линзы, высветление/затемнение — то, что можно назвать полировкой изображения. На этом у меня всё, спасибо за внимание! Терпения, зоркости и удачи!

13004 Автор:
Актуальность: 824
Качество: 821
Суммарный балл: 1645
Выбор Публики
Голосов: 78 оценки

Отзывы посетителей:

аватар
 
СМЕРТЬ 1 0
Добавить бы скорости и была бы вообще МЕЧТА !
аватар
 
Apofis 7 1
Замечательная статья! Особенно хорошо, что она раскрывает потенциал Блендера
аватар
 
Romo 7 1
Большое спасибо) душевная работа, ну и радует что блендер)
аватар
 
Romo 7 0
Большое спасибо) душевная работа, ну и радует что блендер)
аватар
 
Gleb Alexandrov 515 1
Спасибо!
аватар
 
Kalinich Michail 262 0
Очень понравилась работа. Автор мотчага!
аватар
 
Павел Кондратенко 245 0
Отлично. Хоть и не юзаю блэндер, но почитать было интересно. Идеальный рендер, поста почти не надо было! Круть!
аватар
 
Gleb Alexandrov 515 0
Malefic - вот это очень здорово, что инфа оказалась полезной.
аватар
 
Gleb Alexandrov 515 0
Спасибо за отзывы!
аватар
 
Malefic 234 0
Офигенны как работа так и мейкоф, спасибо! Узнал даже новое кое-что!
аватар
 
spitfirerr 2 0
Ты умеешь и делать и говорить и писать 10\10
аватар
 
Kolbasnikov 320 0
Крута МЭН) 10/10
аватар
 
FlyAnt 76 0
По больше бы таких мэйк офов по блендеру!
аватар
 
Gleb Alexandrov 515 0
Спасибо! рад, если статья показалась вам интересной.
аватар
 
Schekobon 1 0
ты просто мастер! Класс!
аватар
 
Man5ON 2637 0
Куратор комьюнити
Отличная работа! Понравилась) 10/10
аватар
 
afaun 43 0
Я понял, ты один из разработчиков Blenderа , а так офигенно очень!!!
Зарегистрируйтесь, чтобы добавить комментарий.
Эту страницу просмотрели: 616 уникальных посетителей