Урок по реалистичному текстурированию в Modo
Здравствуйте.
Меня зовут Карен, студент из Израиля. По образованию программист (Bar-Ilan. Computer Science). Последние несколько лет работаю фрилансером в сфере телерекламы (VFX Artist/TD) и вёб-дизайна.
В этом уроке рассмотрим основы реалистичного текстурирования. Попытаюсь показать весь процесс, как прийти от чистой модели к созданию трёх текстур *(Diffuse, Bump, Spec). Основные цели: понять характер поверхности и как можно точнее его сымитировать максимально приближенно к топологии* объекта. Вся работа происходит в Modo 302 + Photoshop CS2. Предполагается, что читатели хорошо знают основы этих программ.
*Топология - рельеф и общие характеристики поверхности модели.
*Diffuse - текстура цвета поверхности.
*Bump - текстура псевдо-рельефа поферхности.
*Spec - текстура контроля над бликами на поверхности.
Итак, начнём!
Этап первый: Подбор *референсов.
В нашем распоряжении следующая модель:
Описание: старая мусорная бочка.
Материал, из которого сделана наша бочка - жесть. Крашеная жесть. Референс важен для понимания характера коррозий этого металла, стоит также обратить внимание на то, как именно краска отходит от ржавой поверхности. Возможно какие-то элементы из референсов потребуются в дальнейшем как части текстуры, поэтому после того как выбрали набор картинок, стоит опираться только на них во всём, что касается особенностей (стиля) коррозий и ржавчины.
Этот этап кажется довольно лёгким, однако многое остаётся «за кадром». Важно не только подобрать все подходящие примеры элементов, но уже начать представлять как именно наш объект будет выглядеть в таком антураже. Текстурирование - это как стилистика иллюстрации. Один и тот же сюжет можно отобразить в разном «свете». Данный этап это именно выбор «стилистики» нашей «иллюстрации».
*Референс - вспомогательный материал, пример определённого элемента, эталон. Реальные фотографии объектов подобных создаваемому.
Этап второй: Подбор рабочего материала.
Текстурировать мы будем в Modo и поэтому для начала надо сделать набор кистей (трафаретов), которыми будем пользоваться в течение всей работы. Потребуются карты потёртостей, царапин, облезлой краски. В поисковиках вбиваем «Brushes, scratch, grunge, photoshop».
Список кистей которые мне пригодились:
http://www.touchoftexture.com
http://qbrushes.com/
http://www.brusheezy.com/
http://getbrushes.com/
http://www.turkhitbox.com/
http://www.brusheezy.com/
http://www.brusheezy.com/
Открываем Photoshop, создаём полотно белого цвета и довольно большого размера(1600*1600 вполне хватит). Заливаем холст белым цветом и с неким расстоянием между элементами заполняем изображение кистями, которые только что скачали. Если есть элементы, требующие бОльшего места, сохраняем их как отдельный файл. В итоге у меня получилось следующее:(Рис.003) Обратите внимание, что изображение черно-белое. Цветные изображения не будут иметь никакого смысла, потому как эти трафареты будут использованы для создания рельефа (bump'а), а также масок.
Для будущих проектов советую создать папку, куда будут нумеровано сохраняться изображения с таким содержанием (возможно, даже с тематической категоризацией).
Такое кол-во трафаретов более чем достаточно для текстурирования целой серии объектов.
Этап третий: Техника и теория
Прежде чем создавать первую (и основную) текстуру в Modo, рассмотрим на чём основывается эта техника.
Что такое Open GL? Это интерфейс программирования графических приложений, открытая графическая библиотека (Open Graphic Library). Она разработана для создания изображений с помощью ресурсов видео карты в реальном времени. Иными словами, набор комманд для работы с видео картой и создания спомощью неё 3д изображений во viewport'e. С эволюционированием этой библиотеки (и видеокарт) возможности расширились и теперь помимо 3д модели и освещения мы можем смотреть в реальном времени текстурированные объекты с bump'ом и бликами.
В Modo OpenGL один из поддерживаемых способов отображения объекта на экран.
Казалось бы, это всё существует и в других программах, какое отношение имеет к уроку?
Продолжим практические шаги:(Рис. 005)
1.Открываем в Modo сцену с объектом.
2.Присваимваем объекту новый материал.
3. Создаём новую карту нужной нам резолюции (2048*2048) с белой заливкой.
4. Переходим в Layout -> Paint
5. Накладываем на созданный материал новую текстуру в виде Bump.
6. Включаем в режимах вьюпорта Advanced OpenGL.
Итак, мы присвоили объекту материал, положили текстуру в режиме bump'а, всё готово к текстурированию. Далее выбираем конфигурацию кисточки с трафаретом, как показано на рисунке (Рис. 007).
Обратите внимание на все подчёркнутые элементы.
Air Brush + Smooth Brush + Image Ink
Image Ink:
Blend Mode: Multiply
Repeat : on
Image: созданный нами один из трафаретов.
Начинаем проводить кисточкой сквозь трафарет по модели.
Получаемый результат:(Рис.007)
Теперь вернёмся к изложенному выше материалу по Open GL. Только что, мы настроили инструмент, с помощью которого можно рисовать в трёхмерном пространстве bump на модели и, что самое главное, видеть в реальном времени как он отображается на модели. Не в виде чёрно-белой карты, а в виде РЕАЛЬНОГО рельефа.
OpenGL обеспечивает нам вид bump'a во viewport'e, а Modo даёт возможность рисовать этот самый bump в самой 3д. Такая связка инструментов даёт нам возможность полностью основывать нашу bump текстуру на топологии объекта, а не опираться на UV-развертку, представляя, как это будет выглядеть на модели.
Этап четвёртый: Рисовать – значит мыслить.
Мы настроили инструмент, осталось научиться им пользоваться с умом. Заготовленные ранее трафареты, как уже понятно, нужны для создания углублений в bump'е. Самое важное сейчас - как можно больше деталей в bump'е основывать на особенностях модели. Поясню: Если в модели есть сильно выпирающие углы - скорей всего они будут поцарапаны сильнее. Если есть трещины в металле, в этой области объекта металл сильно проржавел и есть характерная шершавая поверхность и отслоение краски.
Прежде чем нанести какую-то деталь - задумайтесь, соответствует ли это топологии объекта. Ищите ярко выраженные моменты в модели, чтоб ещё сильней их подчеркнуть царапиной или отслоением краски. Примеры: Ручки на клёпках держатся плохо, от трения краска слетает. С самих клёпок краска отошла. Место, где крышка соприкасается с бочкой при закрытии, очень поцарапанное. Нижние борты бочки часто ударяются об асфальт и прочие объекты, там краска давно стёрлась. Из-за брызг и просто жидкостей в мусоре проржавеет скорей всего нижняя часть бочки, нежели верхняя. И так далее…
Стараемся, также, покрыть всю поверхность небольшими царапинами, потёртостями, чтобы не оставалось гладких участков.
Результат :(Рис. 009)
Сохраняем текстуру.
Точно таким же способом, только не в режиме bump'а, создаём карту грязи.
Карта, на которой поверхность объекта вероятней всего будет будет загрязнена.
Этап пятый: Bump диктует.
Bump - это основа для создания карты цвета. Теперь нашей задачей будет передать все детали из бампа в карту цвета и из карты цвета в бамп. Диаграмма показывает общий процесс создания конечных результатов. (Рис. 011)
Находим подходящую текстуру железа, если есть необходимость, красим её в нужный цвет. Аналогично с текстурой ржавчины. (Хороший сайт с бесплатными текстурами http://touchoftexture.com/ )
Далее, фактически всё, что белое, в bump'е – покрашено, а всё что чёрное – это ржавчина. Все царапины по металлу, углубления, шершавости - всё это покрыто ржавчиной, потому как краска там стёрлась. Для более выразительного контура на слой маскированной ржавчины можно наложить эффект drop inner shadow (distance:0). Оттенить ржавчину в зависимости от изначального цвета краски. Грязь ложится поверх ржавчины и краски. Потёртости на ручках и рёбрах - всё это может быть любого тёмного оттенка. Желательно, прежде чем накладывать текстуру грязи, заменить чёрный на любой тёмный оттенок. Это нужно для того, чтобы при наложении в нужном моде (Color Burn, Multiply, Darken…) в местах где есть грязь не образовалось глухих чёрных пятен, а всё же были вариации тёмных цветов. Оригинальное дерево текстуры цвета выгладить вот так (Рис. 012) Все вариации основаны на масках bump'а и грязи.
Этап шестой: Цвет диктует.
Для того чтобы наши текстуры были полностью в корреляции друг с другом, нам необходимо передать в bump те элементы, которые существуют в карте цвета.
Рассмотрим элемент крашенного металла без ржавчины.
Царапины, мелкие углубления, пятна краски - все эти элементы должны присутствовать в bump'е.
Получить хороший исходный материал для добавления к bump'у можно следующим путём:
Открываем текстуру крашеного метала в Photoshopе. Меняет цветовую палитру на Lab (Image->Mode->Lab color). Выделяем канал Lightness (Image->Apply Image (Layer: merged, Channel:Lightness, Blending:Normal)) Возвращаем изображение в чёрно-белую гамму (Image->adjustsments->desaturate). Инвертируем изображение (ctrl+i) и с помощью Levels добиваемся ярко выраженных деталей, а также белого фона в остальных частях. Результат примерно такой.
Накладываем получившийся bump на bump, нарисованный в Modo в blending mode: multiply. Далее, пятна краски и цифра девять, которая присутствует в текстуре цвета, должна так же присутствовать в bump'е небольшой выпуклостью. Кладём эту карту на комбинированный bump с небольшой прозрачностью в режиме screen. Конечный результат комбинированного bump'а.(Рис. 015)
Обратите внимание, что теперь царапины на краске, которые были только в цветовой текстуре, будут углублением в рельефе. А жёлтая краска и цифра 9, наоборот, будет немного выпуклая.
Этап седьмой: Бесплатная карта
Осталось нарисовать карту бликов.
Она контролирует в каких местах будет сильное отражение (белые участки), а в каких местах отражений не будет вовсе (чёрные). В нашем же случае любые царапины, ржавчина, неровности - всё это не будет отражать, так как гладкая поверхность краски. Фактически, комбинированный bump может служить нам как карта бликов. Для этого на полученный bump наложим в режиме multiply карту грязи и поднимем контраст тёмных областей. Примерный результат:(Рис. 016)
Рис. 016 (я исключил влияние пятен краски и цифры "9")
Полученный результат
Несколько вариаций сочетания разных карт и советы.
До последнего момента я не был точно уверен какой цвет хочу использовать как ведущий цвет краски металла. Плюс ко всему, работать параллельно требовалось с двумя картами цвета (крышка и мелкие детали и карта самой бочки). Поэтому очень практично в этом случае использовать в Photoshopе слои вроде FillColor или Curves. Выбрав текстуру металла, просто положите поверх него FillColor в нужном режиме. Или положите поверх Curves как слой с изменёнными каналами. Нежелательно делать изменения самой текстуры. Потому как в любой момент, отключив эти слои, вы получите оригинальную текстуру без потери качества, а также сами корректирующие слои можно просто скопировать и перенести в другой файл, где требуется такая же корректировка.
Почти окончательный вариант, без жёлтой краски.
Очень интересный метод подчеркнуть псевдо объем в текстуре.
Положив ржавчину поверх краски возможно она не будет хорошо смотреться.
Сделаем пару математических преображений.
1. Для начала сменим Blending Mode ржавчине на multiply.
2. Негатив чёрно-белой карты bump'а положим под ржавчину blending mode:screen.
3. Сдвинем на один пиксель эту карту bump'а в одну из сторон (вверх, например).
Таким образом, создался псевдо рельеф текстуре.
Рассмотрим математическую сторону аспекта: когда ржавчина умножается на цвет что под ней, мы получаем тёмный результат, потому как оба исходных цвета тёмные. Когда же мы положили bump под ржавчину, то именно в тех местах, где ржавчина ложится, в моде multiply bump выдаёт белые участки. А, как известно, если помножить белый на определённый цвет мы получим этот самый цвет. А далее, смещение карты даёт небольшой контур белого цвета, тем самым создавая эффект объема.
Последнее напутствие.
Принтскрин непосредственно из Modo (Рис. 020).
После создания bump'а и карты грязи не стоит забывать, что в Modo можно сразу не рендеря посмотреть, как сочетаются карты друг с другом на самом объекте.
После создания первичных карт цвета и блика в Photoshop'е загрузите их в Modo, и смотрите как они сочетаются с bump'ом. Для этого не нужно ничего рендерить, вьюпорт Modo в режиме OpenGL передаёт довольно точную информацию о поведение бликов и цвете вместе с рельефом. Очень хороший feedback при текстурировании.
Творческих успехов!