#htmlcaption1 #htmlcaption2 #htmlcaption3 #htmlcaption4 #htmlcaption5

16 июл. 2011 г.

Продвинутое Многоканальное Текстурирование

  

Продвинутое Многоканальное Текстурирование Ziv Qual Израиль

перевод естественно мой :)

Продвинутое Многоканальное Текстурирование


Довольно длительное время я развивал и оттачивал свои навыки относительно комплексного текстурирования. Blood knight является одним из нескольких персонажей, что  делал, и так как он тот кто сражается в ближнем бою больше чем кто-либо другой , я решил, что это неплохая возможность получить много опыта по части текстуринга, ведь на доспехах будет множество деталей, таких как грязь, царапины, кровь, цвет, и различные декоративные элементы. Позже эту методику я назвал "Многоканальным текстурированием (Multi-Channel Texturing)". Основное внимание при создании этого персонажа было уделено текстурированию и настройке, и в этой обучалке  я одновременно рассказываю и показываю всё что делаю.

Многоканальное текстурирование - общее представление, доводы за и против
Метод который я называю "Многоканальным текстурированием (Multi-Channel Texturing подразумевает использование нескольких каналов (в других программах таких как например Maya этот способ текстурирования  называется UV Sets)  для одного объекта за счёт использования  материала с  несколькими картами (и разными каналами) смешанными вместе по маске.


Другими словами - почти весь процесс текстурирования доспехов персонажа произведён в 3Dмаксе за счёт использования лишь текстурных координат, одного материала, с несколькими каналами и парочки других текстур.


Конечным результатом работы является то что все части брони ( более 40 объектов )
используют один и тот же материал но имеют разные текстуры и маски. Противоположный этому методу поставим метод "классического" текстурирования, который обычно подразумевает использование кучи материалов с ещё большей кучей текстур  ( каждый материал будет  иметь несколько текстур таких как  color / bump / specular  и т.д.).





 Доводы "за"


- Разумное использование ресурсов - так как  все части брони используют только 1 материал и несколько текстур.


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




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


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


Доводы "против"


- Некоторое ограничение по части разнообразия детализации модели таким текстурингом ( создание "глобальных" текстур которые будут использоваться для всех частей модели  ограничивает ваши желания по части уникальности в деталях без создания  дополнительных текстур  для модели).


- Материал имеет тенденцию "Превращаться в дремучий лес". Как говорится  "Чем дальше в лес, тем больше извращенцев" :)  а по русски, чем больше текстур/карт вы добавляете в материал тем сложнее отыскать потом там то что тебе нужно и соответственно следить за всем что там лежит.

                                                               




Шаг 1 - Начало - Подготовка Модели и Основного  Материала.


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


Шаг 1 - работа над основной формой, а так же частями брони и подготовка топологии деталей, топологию делаем аккуратно с наименьшим числом полигонов которое можем себе позволить  ( топология это не тоже самое что и ретопология, топология - это процесс построения базовой геометрии ), в местах швов и фасок я не экономил на полигонах так как это делалось на большей части модели (чтобы модель правильно сглаживалась), такой полигонаж позволяет легко поправить, в случае чего, всё что потребуется. Ставим этим поликам первый айдишник ID 1 (выделяем нужные полики, вписываем айдишник, в окно показанное на рисунке ниже, в окне можно вписать любое число какое хотите. В окне  где кнопка Select ID можно тоже вписать число но уже для того чтобы выделить нужную группу по ID)
Так же желательно добавлять хотя бы 1 сегмент где есть переходы к какому либо крутому рельефу (смотрим 2ю картинку)









Чтобы в будущем если на этом участке будет текстура её  не растянуло как попало.


- 1. Текстура граничит с кривым рельефом (текстурные координаты растянуты)
- 2. Текстура отделена и граничит теперь с группой полигонов более менее одинаковой длинны  (текстурные координаты незначительно растянуты).


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




Шаг 2 - Добавляем модификатор Shell к модели и устанавливаем "Override Edge Mat ID" на 2.  Выдавливаем по желанию в любую сторону, после этого правой клавишей в списке модификаторов колапсите его (Collapse To) в Editable Poly и производите подгонку всего что мозолит глаз.


Шаг 3 - Тут нам нужна модель которую мы получили на  Шаге 1 для выдавливания внутренних полигонов в отверстиях для вставки туда Алмазов (подготовка гнезда для алмаза),  назначаем этим поликам группу  ID 3  и выдавливаем таким образом чтобы образовалось красивое гнездо для Алмаза.


Шаг 4 - (дополнительный) Помимо всего прочего  для большего разнообразия в материалах, я сделал  ID 4 для некоторых серебряных частей брони в том числе он будет использоваться и для лезвия меча.


На данном этапе моделирования мы имеем основной материал, готовый для начального тестирования, он на 100% состоит из процедурных карт, именно поэтому  до сих пор не требовалось создания развёртки текстурных координат, приступать к более продвинутому текстурированию следует только тогда когда модель будет окончательно готова.


Основной материал "Multi sub object" с 4-мя  айдишниками


ID 1 - Основной металл брони,
ID 2 - Золотые элементы на доспехах,
ID 3 - Алмазы,
ID 4 - Серебро.


Сейчас нам нужно сосредоточится на основном металле брони.


В качестве основного материала металла брони (ID 1) я  взял Ментал Реевский  "Arch & Design" шейдер. Размышления относительно его визуальной составляющей, привели меня к следующему варианту, - материал получился как бы тяжелым но всё же красивым  :-)   (вторая картинка, самый низ).


                                                                       


Следующим шагом я добавил такие  карты как, Diffuse color, Bump, Glossiness, Reflection color. Сейчас нам нужно выкручивать приведённые ниже параметры для карт которые мы только что  добавили, учитывая следующее:
 






Значение яркости цветов:
Diffuse color - яркость основного цвета.
Bump -  чем светлее - тем сильнее степень выдавливания рельефа ( в нашем случае используется черно-белый бамп аналогичный Displacement Map).
Glossiness - резкость отражений и света на объекте.
Reflection color  - сила отражения.
(Очевидно, что более темные цвета ниже 50%-ой серости означают противоположный эффект).


Карта созданная для этих параметров, состояла из нескольких процедурных текстур (Diffuse color, Bump, Glossiness, Reflection color), это облегчило управление уровнем яркости для каждого отдельного параметра (которые мы рассмотрели выше). Например - в одной из определенных текстур, я использовал яркий цвет для грязи в Diffuse color, но изменил его на более тёмный в карте Bump, чтобы был эффект вмятин внутрь  а так же сделал темнее карту Reflection color так как грязь почти не имеет отражения по сравнению с материалом металла брони. Создание основного материала с использованием процедурных текстур также выгодно и  потому, что простая комбинация из нескольких процедурных текстур даёт очень высокий уровень детализации и низкое потребление ресурсов системы и у каждой отдельной части брони будут различные особенности в деталях ( а не как  в случае с обычными текстурами ).




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


Подсказка - я часто использую Ambient occlusion  карту в качестве карты смешивания (за счёт того что она чёрно-белая есть возможность использовать её в качестве маски для смешивания с другими картами) для основного цвета (diffuse color), это добавляет большей глубины деталям, в белый цвет я запихиваю любые  карты которые хочу так или иначе использовать, в темный цвет я добавляю различные  карты шума (Noise maps )  для создания грязи на краях объектов.



Процедура добавления Уровня смешивания (mix level) и пара замечаний по редактору материалов.


Прежде чем мы двинемся дальше , я  хочу рассказать немного о добавлении в редакторе материалов всё большего  и большего количества  деталей  к существующей  карте - думаю это наиболее значимая часть следующего шага.


- Основная идея процесса добавления  Уровней смешивания (mix level).






Таким образом, у нас получился хороший основной материал, но мы хотим уже начать добавлять более определенные детали к картам, которые мы уже имеем в diffuse color / bump / glossiness / reflection color, как это можно сделать?


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


                                               


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




1) (Вариант через вырезание карт) Идём туда где находится карта к которой Вы хотите добавить уровень смешивания,  кликаем правой клавишей и вырезаем эту карту ( cut ). например - если карта находится в слоте diffuse color, тогда мы идем в слот Диффуза основного материала.  Другой пример - если карта лежит в в слоте смешивания карт (Mix), мы идем в этот слот смешивания карт (Mix) и берём карту оттуда.


2) Добавляем новую карту смешивания (Mix), туда где была Ваша карта, щелкните правой кнопкой по первому слоту и вставьте свою оригинальную карту обратно. После этого шага Ваш материал должен работать точно так же, как работал до этого, этим действием Вы просто подготовили свою карту к дополнительным действиям по добавлению деталей.


3) Добавляем черно-белую текстуру  в слот маски и называем карту смешивания в соответствии с её назначением (даём правильные названия материалам и картам чтобы в будущем не запутаться и не забыть, что она/они делают). Например - если Вы добавили  текстуру в карту смешивания "blood stains", Вы должны назвать эту карту смешивания   "blood stains". Черные пиксели Вашей маски означают что тут будет основная карта (лежащая в 1м слоте), белые пиксели  означают что тут будет видна  текстура  которая лежит во втором слоте (то есть белый цвет означает степень прозрачности с которой будет видна текстура).


4) Добавляем новую карту в слот 2 карты смешивания (Mix). Например - кровь:
В diffuse color вы добавляете карту Noise (карта шума) красного цвета, в слот цвета отражения, добавляем эту же карту но с более тёмным красным цветом, так как кровь суха и менее рефлексивна чем допустим металл брони. В слот bump, можно засунуть тоже эту карту но в серых тонах чтобы кровь немного выдавливалась и имела  объём (в противном случае такая кровь будет плоская  и не красивая).


5) Переходим в маску и выставляем там новый map channel (канал карты). Этот шаг является заключительным шагом в редакторе материалов . Если  Вы собираетесь использовать несколько различных масок, то вам нужно будет использовать различные каналы (map channel ) для каждой из них, чтобы можно было работать с разными текстурными координатами (UV). Далее  я объясню это поподробнее.










 Каналы карт (материал и UV карта / Unwrap)


Что такое каналы карт (map channels)?


Обычно когда мы добавляем текстуру с последующим использованием  модификатора UVWmap или же  Unwrap то для неё по умолчанию выставляется 1й канал. Но у объекта может быть больше чем один канал с текстурными координатами (UV), Вы можете назначить на объект несколько модификаторов для редактирования текстурных координат  таких как UVWmap и Unwrap,  установить везде  разные каналы и увидите что они будут правильно работать и не конфликтуют друг с другом.  Всё что требуется от вас это  правильная организация работы каждого канала.



- Вкладка Output

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


Я заметил что мало кто из людей знают насколько полезно пользоваться  вкладкой  "output". Через вкладку "output"  Вы можете легко переопределить и скорректировать любую карту которая входит в Уровень смешивания. Это позволяет Вам управлять цветами, яркостью карты и степенью её прозрачности на материале.


                                                                     



Пробежимся по основным параметрам вкладки "Output":


Output amount  - дает контроль над отображением карты  на материале со  всеми "накрутами" других параметров.


RGB offset - основной контроль тёмными цветами карты. Я часто устанавливаю  этому параметру значения ниже 0, чтобы тёмные цвета выглядели контрастнее на материале.


RGB level - этот параметр отвечает за управление более яркими цветами карты. Я часто играю с "RGB level" и с "RGB offset" - так как эти 2 параметра могут сбалансировать друг друга и далее за счёт этого от карты можно добиться большего контраста на материале.


Bump amount  - этот параметр отвечает за силу/глубину вмятин и царапин на материале, которые лежат в слоте "Bump"


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


- Работа с "Show map in viewport"


Одно последнее замечание по редактору материалов, прежде чем мы пойдём дальше. 3dMax очень ограничен по части корректного отображения финального материала в области просмотра, криво отображает масштаб процедурных карт и если в материале используется несколько карт которые мы получили путём их смешивания через альфу или другими способами. Именно поэтому Вам придётся каждый раз заходить в определённую маску(текстуру), если нужно её отредактировать  и нажимать финтиплюшку "show map in viewport". В любом случае, выполнение время от времени  тестового рендера поможет посмотреть как будет выглядеть всё вместе, это неотъемлемая составляющая работы  которая поможет делать правильные шаги.




                                                                      



ШАГ 5 - Смешивание деталей  на различных каналах (map channel) и  их корректировка на поверхности модели.


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


Map Channel 1 (канал 1) - Кровь и Основные карты.


Map Channel 1  является каналом по умолчанию, который появляется, когда Вы работаете с объектами и текстурами. Поэтому с этим каналом ничего особого не сделаешь кроме как настройки существующих текстурных координат (UV) этот канал содержит кровяку так что настраиваем её так чтобы она прилично смотрелась.  Тут я не разворачивал текстурных координат, да в этом и нет необходимости так как кровь разбросана хаотично по модели и в отличии от декоративных элементов не требует каких то строгих правил в отношение своего размещения на броне.  Существует определённый смысл в расположении карт при использовании уровней смешивания  тем более что кровь покроет остальную часть деталей на доспехах и должна быть сверху (глупо иметь кровь под декоративными элементами и царапинами, неправда ли?), это делает её основной картой.


Map Channel 2 (канал 2) - Декоративные элементы доспехов / градиент алмаза.


Этот шаг даёт возможность реально воспользоваться данной технологией по применению маски и тайлинга. Готовя маску, я должен был убедится, что она хорошо тайлится в нужном направлении и у неё должно быть достаточно чёрного пространства по краям для комфортной работы с текстурными координатами (UV).  Я прошелся по каждому участку брони разворачивая текстурные координаты модификатором "Unwrap UVW" с выставлением 2го канала.  При размещении крови на доспехах должна была получиться развёртка небольшая по размерам, её можно разместить где-нибудь с краю на пустом черном пространстве,  затем нужно выбрать несколько полигонов (где предположительно будут распологаться декоративные элементы) на поверхности модели развернуть их модификатором и включите отображение этой маски ( как я вас учил, нажав  "show map in viewport") это обеспечит вам удобную работу с редактированием этой маски.  Данный процесс нужно проделать с  каждым элементом брони,  затем выстраиваем все  полученные текстурные координаты (UV) в длинный ряд  и свариваем между собой (с помощью команды "Target Weld" и перейдя в режим редактирования вершин, двигаем одну вершину которую хотим сварить к другой (таким способом можно сваривать текстурные координаты которые даже  не являются соседними). Основное достоинство такого способа текстурирования состоит в том что я могу легко манипулировать этим рисунком сжимая или растягивая его и наблюдать как он отображается на модели в реальном времени, в добавок если  появится необходимость заменить этот рисунок  на  какой то другой, то его легко  можно будет быстро настроить так же растягивая или сжимая.

















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



Map Channel 3 (канал 3)  - Символы


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


Map Channel 4 (канал 4) - Царапины


Я добавил их позже, но так как царапины должны тоже присутствовать на декоративных элементах модели доспехов (как я упоминал ранее порядок слоёв очень важен  при таком подходе к текстурированию, и не имело бы смысла иметь царапины под художественной составляющей доспехов). Для большинства частей брони я проделал аналогичную операцию как и при нанесении крови но в отличии от крови, царапины лежат в 4м канале (не заморачиваемя с развёрткой и наносим царапины как больше нравится используя лишь Planar и аналогичные ему  маппинги. Для этих целей подойдёт и UVW Mapping за счёт своей простоты, которая нам и требуется на данном этапе, перейдя в подобъект, плейн или любое другое гизмо объекта можно крутить, перемещать, масштабировать до тех пор пока результат с отображаемой текстурой не удовлетворит ваш вкус)