Третья часть серии уроков по созданию дальнобойного оружия (на примере лука) для игры Skyrim. В уроке разбирается запекание и редактирование текстурных карт - Normal Map, Color ID, Ambient Occlusion.

Cоздание модели лука для игры Skyrim

Часть 1 | Часть 2 | Часть 3 | Часть 4 | Часть 5 | Часть 6 | Часть 7

 

Добрый день, друзья. И вот наступил тот момент, когда я собрался, исправился и сел за продолжение серии уроков по моделированию лука. В этой части мы займемся достаточно масштабной работой – созданием текстурных карт для нашей модели. Прежде всего, немного общей информации.
Что собой представляет текстурная карта? Если грубо, то это растровое изображение, которое несет в пикселях какую-либо информацию. Текстурных карт существует достаточно большое количество, каждая из них нужна и используется для работы, но я вижу смысл упомянуть лишь основные, которые используются для игрового моделирования (в частности, в Skyrim)
Diffuse Map.
Diffuse Map - базовая текстура цвета, которая определяет общий цвет материала. То есть, это то, в котором значении применяется обычно слово "текстура". Естественно, присутствует на большинстве моделей (за редким исключением). В игре она обозначается без всяких суффиксов, например, Texture.dds. Изредка можно встретить обозначение Texture_d.dds. В диффузной карте может присутствовать альфа-канал. Там он отвечает за прозрачность-непрозрачность объекта. Черный цвет - прозрачно, белый - не прозрачно. Применяется достаточно часто. Пример - для моделирования белья. Модель тех же чулок будет весить достаточно много, если закинуть её в игру с сохранением всей геометрии. Но вот если заменить сетку и узоры на карту прозрачности в альфа-канале, то этого хватит для красивой визуализации без лишней нагрузки от полигонов.
Normal Map.
Карта нормалей или Normal Map. В игре обозначается суффиксом _n - Texture_n.dds. Карта нормалей содержит в каждом пикселе информацию о освещении/затенении объекта, тем самым создавая эффект рельефа. Поскольку освещение карты нормалей является фейковым, то, ясное дело, реальной топологии она не создает. Она лишь проецирует нормали, сгенерированные с диффузной карты посредством 2D программ либо запеченные с высокополигональной модели. Вся геометрия, которая конкретизирует модель – шершавость, борозды на металле, трещины на дереве – отрисовывается посредством карты нормалей.
Specular Map.
Либо карта блеска. Черный цвет - матовая поверхность без бликов и отражений. Подходит для старого дерева, обычной ткани, которая не предусматривает отражения. Белый цвет будет пригоден для  чистого стекла, драгоценных камней или жидкости. Практически для всех других объектов используются цвета в градации от светло- до темно- серого. В играх серии TES является альфа-каналом карты нормалей.  Цвет спекуляра, для придания различных эффектов, можно менять в NifScope (вернее воздействовать на модель с помощью других действий, но с аналогичным эффектом. В TES сама карта спекуляра - черно/белая).
Glow Map.
Третья карта, которая может вам встретиться - карта свечения - glow map. Имеет суффикс _g. Texture_g.dds. Она определяет, какие области текстуры будут светиться, а какие нет. 
Mirror Map.
Последняя карта, которую имеет смысл упомянуть - карта  глянца, которая в серии древних свитков появилась в Skyrim. Маркировка у неё - _m. Texture_m.dds. Признаться, когда начинал разбирать моделирование для скайрима, очень долго ломал голову - что это за карта. Для неё альфа-канал не нужен, так как она сама по себе выполняет функцию альфа-канала. Принцип тот же - белый - отражает, черный - нет.
По сути, обязательными практически для всех моделей картами являются следующие - Diffuse Map, Normal Map с альфа-каналом в виде Specular Map, и Mirror Map. Они и являются целью данного урока. Так же (для способа текстурирования, который я выбрал) нам понадобится Ambient Occlusion – модель затенения. Крайне интересная и полезная карта. Эту карту вы могли наблюдать в черно-белых рендерах, которые выглядят крайне презентабельно даже с отсутствием источников света или других карт. Для игрового моделирования её можно использовать при создании Diffuse Map для имитации эффекта объема и конкретизации мелких элементов путем добавления теней на текстуру.
Так же мы запечем Color ID – своеобразная “подложка”, где каждый элемент развертки закрашен определенным цветом. Все элементы, у которых будет один материал, идут под одним цветом. Например, дерево – красный цвет, металл – синий, а кость – фиолетовый.
Примемся за работу. Откроем 3Ds MAX и загрузим сцену с луком.  Сначала мы произведем запекание карты нормалей, чтобы после этого спокойно удалить хай-поли модель (дабы она не тормозила сцену). Перед запеканием я рекомендую подготовить сцену – сделать так, чтобы элементы модели не пересекались друг с другом, чтобы избежать артефактов.  Так же хай поли должна находиться ровно поверх лоу-поли.

Не забудьте передвинуть заклепки вместе с элементами, на которых они находятся.

Теперь выделим лоу-поли модель и нажмем на клавиатуре 0. Появится окно Render to Texture.

Projection Mapping – Pick. Из списка выбрать хай-поли модель. Либо один, либо несколько элементов, если вы их не объединяли.

Получится следующее. Синие грани – Cage, в пределах которого будет происходить запекание геометрии. То, что он из себя представляет сейчас – полный мрак. Поэтому в модификаторе Projection, который появился в стеке модификаторов лоу-поли модели, пролистайте до свитка Cage и нажмите Reset. Тогда Cage встанет ровно по лоу-поли модели. Естественно, это тоже не лучший вариант, так как те же заклепки у нас не запекутся при таком расположении Cage.  Поставьте галочку напротив Shaded, чтобы видеть поверхность Cage.

Для равномерного масштабирования Cage используйте Amount до тех пор, пока Cage не будет покрывать заклепки.

Внимание – сетка Projection (cage) не должна пересекаться ни друг с другом, ни с лоу поли, ни с хай поли. Она как бы лежит на них.
Для более точечной настройки перейдите в меню подобъектов – Cage, Face или Element. Последние два уровня аналогичны полигонам и элементам в Edit Poly. Первый – Вершины. Выбираете вершины либо полигоны, выделяете их и передвигаете так, чтобы образовать необходимую форму. Когда форма будет готова, возвращайтесь в меню Render to Texture.
В свитке Projection Mapping нажмите на Options.

Из часто использующегося тут – Orientation – направление цвета. Каждый цвет в карте нормалей несет параметр расположения нормалей. Например, Green –высота. Иногда некоторые цвета приходится инвертировать. Это делается либо здесь, либо в программах текстурирования. Жмем кнопку Setup. Появится окно настроек рендера. Включим Global Supersampler. В списке выбрать Hammerslay. Quality можете изменить до 1, но предупреждаю – это сильно увеличит нагрузку на компьютер и скорость рендера. Я пока что повременю с изменением этого параметра. Настроив, закрываем окно рендера и Projection options. Идем далее.
Mapping Coordinates – везде Use Existing Channel. В свитке выбираем – 1.

Output – Add – Normals Map.
Ниже вы можете выбрать имя файлу, его расположение и тип. Тип файла выбирайте либо TGA (тяжелый файл) ибо PNG (легче). НИ В КОЕМ СЛУЧАЕ НЕ JPG. Никогда не используйте JPG при сохранении текстурных карт. Альфа канал отключаем.



Ниже можно выбрать размер изображения. Пока что поставьте  128х128, чтобы запустить тестовый рендер и прогнать запекание для проверки деформаций – всё ли запечется, или нет. Когда с настройками будет закончено, жмем рендер (перед этим сохранитесь).

Красные места – артефакты запекания. Их нужно исправить

Выше показана причина артефакта на лезвии – хай поли выходит за пределы Cage.

Так лучше. Теперь красным выделено только 1 место – петля. Я убрал её с хай-поли вообще, так как решил скопировать узор карты нормалей на неё с другой части тетивы. Теперь ставим нужный нам размер – я выбрал 2048. Жмем на рендер и идем пить чай – в зависимости от тяжести лоу-поли модели, конкретизации развертки и выбранного размера изображения запекание можно проходить достаточно долго. Так же не следует забывать об общей загрузки программы от хай-поли модели.
Вот то, что получилось у меня.

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

Розовый цвет – косячная карта нормалей, которую нам надо исправить – как раз отсутствие хай-поли модели на этом месте.

Это модель с картой нормалей (еще не доработанной в фотошопе). Но не будем пока что забегать слишком далеко, вернемся к 3Ds MAX – нам осталось сделать еще две карты - Ambient Occlusion и Color Map. Начнем с последнего – есть несколько способов его запекания. Я предпочитаю следующий – откройте окно Render to Texture (0 на клавиатуре), удалите из Output карту нормалей и добавьте Diffuse Map. Измените формат на PNG и при сохранении установите галочку напротив Alpha Channel. Далее нажмите на рендер.

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

Нескольких пикселей для этого вполне достаточно.
Несмотря на чисто вспомогательную помощь ID Map, некоторые используют её и как элемент текстуры – делая “подложку” не случайного цвета просто для объединения элементов развертки в группы, а подбирая цвет под основную текстуру, тем самым оставляя швы текстуры на однородную “подложку”, максимально маскируя их. Я предпочитаю швы править несколько иначе, поэтому ID Map для меня играет вспомогательную роль.
Теперь нам осталось запечь только одну текстуру - Ambient Occlusion. Амбиент запекается следующим образом – сначала нам нужно создать материал Ambient Occlusion. Прежде, чем сделать это, нажмите F10 и во вкладке Common окна Render Setup найдите свиток Assign Render. Напротив надписи Production нажмите на “…”

В окне Choose Renderer выберите NVIDIA Mental Ray.

Теперь в Material Editor нажмите на кнопку Standart

И выберите Mental Ray.

Basic Shaders – Surface. Поставьте Ambient/Reflective Occlusion.

Теперь визуализируйте сцену.

Если вам кажется, что затенения слишком резкие, то увеличьте параметр Max Distance.

На мой взгляд, такой проблемы в данный момент нет. Зато есть другая – слишком зернистые тени. Увеличьте параметр Samples до 64-128.

Так лучше. Теперь запечем наш Ambient Occlusion так же, как запекали карты до этого.  Projection mapping > Enabled. Mapping coordinates: Object: use existing channel, Sub-Object: use existing channel. Add -> Diffuse Map. Размер – 2048х2048. Жмем рендер. В отличие от предыдущих примеров, файл, созданный в указанной директории, нам не нужен. Нам нужна именно картинка рендера. После окончания рендера жмем на иконку дискеты в окне render и сохраняем в PNG.

Черные элементы – закрытые другими моделями. Плечами, лезвиями рогами и т.д. Так что можете не опасаться – они видны не будут итак.
Теперь доработаем наши карты для последующей работы – Откроем ID Map и карту нормалей.
Для начала, разберемся с ID Map. Выберем все элементы лезвий и зальем их синим(выделяйте инструментом Волшебная палочка). Дерево – красным. Плечи – зеленым. Рога – оранжевым. Тетиву – коричневым, а оставшиеся мелкие металлические элементы (зажимы для тетивы) – например, бирюзовым. Каким именно цветом, в сущности, не важно. Главное, чтоб они отличались.

Теперь разберемся с картой нормалей. Если мы её откроем, то увидим, что высота вывернута в обратную сторону – что должно было быть выемкой стало возвышением.

Если это произошло, то сделайте активным канал Green (он отвечает за высоту нормалей), во вкладке Image -> Adjustments выберите Invert. Или нажмите Ctrl + I.

Так намного лучше.

Теперь, займемся нормалями петель тетивы. Сделайте копию слоя,  выберите один элемент тетивы и перенесите его на косячный участок. Для удобства и точности можете подложить под карту нормалей слой с разверткой.

Аналогично сделайте со второй петлей. Не забывайте оставлять несколько пикселей расстояния между краями развертки и краями элемента текстуры.

Редактирование острых углов на грубом лезвии можно сделать с помощью инструмента штамп небольшой кистью с 50% мягкостью.

Сохраните изображение.
На этом урок подошел к концу, Diffuse Map мы будем создавать в следующей части. С вами был Lord Beowulf, до новых встреч!

 


Lord Beowulf, для TesAll.ru