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. Насыщенность

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

830 0 850 39
17
2013-12-09
Я понял, ты один из разработчиков Blenderа [smile=04] , а так офигенно очень!!!
2013-12-09
Отличная работа! Понравилась) 10/10
2013-12-09
ты просто мастер! Класс!
2013-12-09
Спасибо! рад, если статья показалась вам интересной.
2013-12-10
По больше бы таких мэйк офов по блендеру!
2013-12-10
Крута МЭН) 10/10
2013-12-10
Ты умеешь и делать и говорить и писать 10\10
2013-12-10
Офигенны как работа так и мейкоф, спасибо! Узнал даже новое кое-что!
2013-12-10
Спасибо за отзывы!
2013-12-10
Malefic - вот это очень здорово, что инфа оказалась полезной.
2013-12-10
Отлично. Хоть и не юзаю блэндер, но почитать было интересно. Идеальный рендер, поста почти не надо было! Круть!
2013-12-11
Очень понравилась работа. Автор мотчага!
2013-12-11
Спасибо!
2013-12-16
Большое спасибо) душевная работа, ну и радует что блендер)
2013-12-16
Большое спасибо) душевная работа, ну и радует что блендер)
2013-12-16
Замечательная статья! Особенно хорошо, что она раскрывает потенциал Блендера
2013-12-20
Добавить бы скорости и была бы вообще МЕЧТА !
RENDER.RU