Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ponimayka1

.pdf
Скачиваний:
131
Добавлен:
07.06.2015
Размер:
37.11 Mб
Скачать

Это связано с тем, что текстура с надписью накладывается не на все грани, а только на те, которые были выбраны при создании пленарного маппинга для UV-сета SpartakUV.

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

Чтобы исправить эту ситуацию, надо открыть Attribute Editor для текстуры file2 и сделать атрибут Default Color черным. Это определит, что в всех областях, где нет текстурных координат, текстура будет просчитываться, как черный цвет.

Откройте также Attribute Editor для Layered Texture и поиграйте с параметрами смешивания слоев Blend Mode, аналогичными фотошопным. Учтите, что они влияют на то, как данный слой накладывается на слои, расположенные справа от него в Attribute Editor. Иначе говоря, слои слева выше, чем слои справа.

Мультитекстуринг как средство борьбы со швами

Если вспомнить наше пернатое чудовище, можно попробовать применить мультитекстуринг как средство замаскировать швы на поверхности. В самом деле, можно перенести раскладку крыльев в отдельный UV-сет, затем нарисовать разные текстуры для тушки и крыльев, смешать их в Layered Texture, нарисовать маску перехода и ... И тут возникает логическая засада. Раскладки для крыльев и тушки, сделанные нами, предназначены для непересекающихся граней. Иначе говоря, участок крыльев не пересекается с участком тушки, поэтому просто невозможно сделать так, чтобы одна текстура плавно переходила в другую в районе шва.

Вывод: для мультитекстуринга надо делать пересекающиеся раскладки в разных UV-сетах.

Откройте файл duckUVhalfOK.ma.

Выберите все грани крыла (это легко сделать, выбрав BTexture Editor ювишки крыла и сконверировав выбор в грани). Добавьте к ним соседние грани, на спине, в районе крепления крыла.

Скопируйте ювишки выбранных граней в новый UV-сет, названный wingUV: Copy UVs to UV Set=>Copy into New UV Set.

Теперь вы находитесь к новом UV-сете. Пришейте грани спины к раскладке крыла.

511

Теперь мы имеем UV-раскладку утки, где ювишки для крыла и тушки разнесены по разным UV-сетам и имеют пересекающиеся грани.

Сохраните файл как duckUVmultitex.ma.

Для тренировки назначим две сильно разные текстуры на тушку и крылья, а точнее смешаем их в Layered Texture.

Назначьте на канал цвета материала lambertl текстуру Layered Texture.

Перетащите в нее из HyperShade уже имеющийся checker, а также создайте и перетащите туда же fractal. Пусть fractal будет слева, a checker справа.

Сейчас обе текстуры используют UV-сет mар1. Присоедините текстуру fractal к UV-сету wingUV.

512

Теперь видно, что fractal лежит на крыле, a checker просвечивает из-под него, в тех местах, где нет UV-координат в UV-сете wingUV.

И, наконец, немного магии. Рисуем маску перехода между текстурами. Выберите утку и позовите 3D Paint Tool.

Выберите канал Transparency для рисования новой текстуры. Выбор канала произволен, потом мы просто отсоединим эту текстуру и используем ее в качестве альфа-канала для текстуры fractal.

Назначьте новую текстуру, нажав Assign/Edit Textures. Вся поверхность почернеет.

В принципе нам все равно, какой UV-сет использует текстура прозрачности. По умолчанию она присоединяется к основному сету mар1. Нам важно нарисовать белую маску с мягкими краями на поверхности - там, где должна быть видна текстура крыла, то есть fractal. Однако чтобы минимизировать покраску и заодно узнать любопытные особенности мультитекстуринга, перекинем текстуру, которой мы сейчас рисуем в UV-сет wingUV.

Присоедините текстуру file1 к UV-сету wingUV.

Почернеет только крыло и кусочек спины, так как в этом UV-сете есть UV-координаты только для этой области.

Выйдите из 3D Paint Tool и зайдите в него опять, чтобы обновить разрешенную область закрашивания. Залейте крыло белым цветом, используя кнопку Flood. Затем нарисуйте на спине черные полосы по краям границы, а дальше, используя режим Blur, сделайте мягкий переход между черным и белым цветом.

Нажмите кнопку Save Textures.

Откройте Attribute Editor для материала lambert1. Отсоедините текстуру file1 от канала прозрачности. Откройте закладку для Layered Texture.

513

Перетащите из HyperShade нарисованную текстуру file1 на канал Alpha для слоя fractal в Layered Texture.

Если ваша видеокарта достаточно крута, чтобы отобразить всю эту вакханалию, то вам повезло. Менее везучие текстурщики могут просто отрендерить изображение.

Возможно, с первого раза вы еще не «попадете», но вооружившись передовой технологией,I сможете докрасить маску перехода. Как видите, fractal и checker мягко смешиваются на спине. Если это будут более похожие текстуры, вряд ли кто-нибудь заметит шов.

Остается несколько моментов.

Явно видно, что на шее шашки несколько темнее, чем в области перехода. Тут уместно вспомнить, что мы нарисовали маску file1 для UV-сета wingUV, который покрывает только область крыльев, следовательно на области шеи, этой текстуры просто нет, она там «не лежит». Там же «не лежит» и fractal, присоединенный также к wingUV. Здесь еще более уместно будет вспомнить, что у каждой текстуры есть атрибут Default Color, задающий цвет, в который окрашивается поверхность там, где текстура «не покрывает» поверхность, например из-за отсутствия UVкоординат. Следовательно, на шее «из-под» фрактала «вылез» серый дефолтный цвет, который наша маска file1 не отрезает, поскольку она туда просто «не дотягивается». Маска file1 тоже представляет собой серый цвет в области шеи. У нас есть три выхода из сложившейся ситуации. Первый состоит в том, чтобы назначить текстуру для тела, то есть checker, на атрибут Default Color для fractal.

Второй, более элегантный способ состоит в том, чтобы Default Color для текстуры file1 назначить черный цвет, сделав, тем самым, маску черной везде, где бы она ни лежала. Это отрежет серый цвет, торчащий из-под фрактала.

514

А какой же третий способ? Он плавно переходит в универсальный совет для мультитекстуринга.

Совет.

При создании раскладок для разных

UV-cemoe старайтесь,

чтобы

в каждом

из них

UV-координаты

были

созданы

для

всей

поверхности,

иначе

в «дырках»

полезет

серый цвет.

Причем

на тех

участках (гранях), которые не

видны под

маской,

маппинг может

быть

какой угодно,

лишь

бы был.

 

 

Если вам не лень, можете быстро проделать следующий эксперимент в порядке борьбы с серым цветом.

В UV-сете wingUV выберите все ювишки. Превратите их в выбранные грани.

Прямо на поверхности, инвертируйте выбор граней, выбрав, тем самым, не замапленные грани. Набросьте на них пленарный маппинг.

Стяните их в точку, пользуясь Align UVs.

Разместите эту точку в области, где нарисована черная маска. Шашки станут нужного цвета.

Мультитекстуринг с масками перехода часто используется в ситуациях, когда на соседних участках поверхности используется принципиально разный маппинг, например в области плеча. Еще одним примером может служить использование фотографий в качестве текстур. Представьте, что вы смоделировали голову по двум фотографиям: в фас и в профиль. Чтобы использовать эти изображения как текстуры можно сделать два UV-сета, в одном из которых будет планарная проекция в фас, а в другом в профиль. Соответственно, в Layered Texture должны быть смешаны эти две текстуры, подсоединенные к своим UV-сетам. А дальше остается хитро нарисовать маску «по диагонали», чтобы фас плавно переходил в профиль. Вот это уже будет настоящее шаманство.

515

Для тех, кто случайно не в курсе.

Если вы стали крутым трехмерщиком совсем недавно, то можете еще быть не в курсе, что разрешается назначать разные материалы на разные грани одной и той же поверхности. Достаточно их выбрать, а потом выполнить в HyperShade команду Assign Material to Selection, Соответственно, на разных гранях могут быть не только разные текстуры, но и разное освещение. Поэтому не обязательно пилить поверхность на куски (то есть на более мелкие объекты) , чтобы затекстурировать разные участки по-разному.

«Оверлампинг»

Приходит маленький двухмерщик к большому трехмерщику и спрашивает: -Дядя, а что такое оверлампинг?!». На что последний отвечает, горестно таращась в монитор: «Это, брат, такая штука, когда добавляешь-добавляешь источники света, а текстура от этого лучше не становится...»

Шутка! То есть, на самом деле, опечатка! Реально, конечно, речь идет об оверлапинге (overlapping). То есть о ситуациях, когда UV-координаты поверхности пересекаются между собой в Texture Editor. Точнее говоря, когда пересекаются куски (shells) одной UV-раскладки в рамках одного UV-сета.

Как правило, в подавляющем большинстве источников информации эта ситуация заклеймена как чудовищная, зловредная и антигуманная. Однако все не так радикально плохо.

Во-первых, если на разных гранях будет лежать разный материал и, соответственно, разные текстуры, то эти грани вполне могут иметь пересекающиеся UV-координаты в Texture Edi­ tor: ведь они текстурируются независимо.

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

В-третьих, мы сейчас разберем конкретный пример, когда пересечение UV-координат позволяет ускорить рендеринг, но сначала поговорим, в каких ситуациях все-таки стоит избегать оверлампинга - пардон!, оверлапинга.

Самый очевидный пример - это 3D Paint Tool. Если вы хотите хоть что-то нарисовать с его помощью, куски вашей UV-раскладки не должны пересекаться. Иначе вы будете в одном месте рисовать, а ваши безумные мазки появятся совсем в другом.

Другой небанальный пример - это мех или волосы. Эти UV-рэкетиры требуют непересекающегося маппинга, расположенного в UV-квадрате [0-1]. Причем они не отказываются создавать щетинистый покров, однако работать с ним - и уж тем более - красить его свойства будет невозможно. Поэтому если вы собираетесь красить не только обычные текстуры, но и просто карты атрибутов, вам понадобится непересекающийся маппинг.

Если вы собираетесь экспортировать карты каких-нибудь весов, например скининга, вам также понадобится «хороший» маппинг на поверхности.

При создании Paint Effects на полигональной поверхности, путем рисования по ней, штрихи будут создаваться совсем не там, где вы их ожидаете увидеть. Попробуйте сами: бросьте на полисферу пленарный маппинг, сделайте ее Make Paintable и попробуйте посадить на ней травку.

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

А теперь поговорим о пользе оверлапинга, известного также под названием овермаппинг, да простят меня любители изящной русской словесности.

516

Овермаппинг. Экономия экономия времени и нервов

Здесь я приведу пример, который прислал мне мастер UV-дзен Сергей Луценко. Пример выдернут из реального производства и показывает, что к процессу текстурирования надо подходить не только творчески, но и аккуратно, принимая во внимание множество деталей, на первый взгляд незаметных или неважных.

Для примера использована модель аудиоколонки, скромной участницы одного из эпизодов мультфильма «Элька». Майская сцена с моделью и текстурами находится в файле kolonka.mb. (Автор модели - Сергей Луценко, автор текстур - Лена Зацепина.)

С топологической стороны объект, сам по себе, не Бог весть какой. Модель, соответственно, тоже несложная. Но для иллюстрации метода подходит идеально.

Итак, что мы имеем? По сути ящик о четырех сторонах. Пусть и несколько необычной формы. С полукруглыми вздутиями, скосом в верхней части и углублением лицевой панели. На лицевой панели разместились «накладные детали» - выходы «спикеров», нечто вроде сабвуфера внизу и декоративные гайки.

Первое, что мы должны сделать, это определить, сколько файлов текстур нам нужно, чтобы все это раскрасить и зашейдить? Естественно их будет столько, сколько UV-кусков мы произведем. А сколько их произвести?

Ведь можно все выкройки уместить на один лист. И у нас получится нечто вроде набора непересекающихся деталей.

517

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

Сколько предметов будут присутствовать в кадре единовременно, на момент моделирования объекта известно не было. Схема расположения камеры не была еще готова. И про движение камеры тоже ничего не было известно. Но мы рассчитывали, что могут возникнуть случаи, когда в кадре присутствуют одновременно все объекты.

Это означало бы, что нагрузка на текстурную память MAYA может возрастать многократно! А с этим делом у нее всегда проблемы. И, значит, наша задача помочь программе управиться с таким большим объемом текстур. А как это можно сделать?

Известно (и проверено экспериментально), что MAYA быстрее считает сцену, в которой есть две текстурки по 1000-1000 пикселей каждая, чем сцену с одной текстурой в 2000-2000. (Кстати, это - самое ценное замечание, следующее из данного примера.)

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

1.Корпус.

2.Опять корпус. Так как на него приходится две группы.

3.Внешняя часть спикеров

4.Сердцевина спикеров

5.Выкройка сабвуфера и внешняя часть овального спикера

6.Гайки

Это условное деление можно представить в Texture Editor как пять областей (рисунки взяты из папки Kolonka).

Можно было, конечно, свести число групп до пяти, объединив все внешние части спикеров в одну раскладку. Ну, да ладно. Шесть так шесть.

Шесть групп объектов означают шесть листов UV-выкроек.

UV-листом назовем набор выкроек, умещающихся в пространстве UV-квадрата (в пределах от 0 до 1), который создается с помощью команды UV Snapshot.

Перед тем, как закончить первую, «осмыслительную» часть анализа модели, до ее

518

обмапливания, назову еще одно соображение, которого следует придерживаться. Причем всегда.

Это крупность предметов в кадре при финальном рендеринге. Она влияет на размер создаваемых файловых текстур.

Если предмет попадает на передний план и виден во всех деталях, размер выкройки должен «выдерживать» такое увеличение. Другими словами, размер выкройки детали должен обеспечивать качественный просчет без того, чтобы MAYA нe пришлось производить доинтерполяцию недостающих пикселей.

Вернемся к нашему кино. Разрешение кадра у нас составляет 1920x1080 пикселей.

Было известно, что никто не станет наезжать камерой на гайку, так, чтобы она занимала даже полкадра (не говоря уже обо всем кадре). Хорошо, если камера захватит крупным планом саму колонку. И то вряд ли. Но на всякий случай мы подготовимся к «крупняку».

Предположим, что колонка будет иметь в кадре крупность «в полный рост».

Видно, что корпус использует всю высоту кадра и даже слегка выходит за его пределы. А гайки при финальном рендеринге займут хорошо если 50 пикселей картинной плоскости кадра. Спикеры тоже покрывают небольшую площадь.

Значит, выкройка для корпуса должна иметь большее разрешение, чем для других деталей. И оно должно быть несколько больше, чем высота кадра. Скажем около 1200 пикселей на все про все. А для гаек, если мы их всех разместим на одном листе, размер выкройки не стоит делать большим, чем 200 на 200 пикселей.

Если бы у нас был «дешевый» видеопроект или игрушка, то для гаек мы бы не стали делать каждую выкройку отдельно, а создали бы одну выкройку на всех, и она была бы еще меньше. Теперь подбираем размер листов для всех деталей колонки, то есть шесть листов выкроек будут иметь разные размеры.

На этой стадии анализа модели в расчет берется следующее:

1.Композиция кадра - то есть размер модели на экране.

2.Сложность деталировки, или «иерархия размеров», которые определят впоследствии количество UV-листов.

3. Количество текстурной памяти, которое весь этот набор отъест у MAYA. Или MAYA отъест

у него.

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

нет.

С точки зрения моделирования и маппинга колонка не представляют из себя ничего

519

интересного. Все накладные детали - по сути полусферы - были обмаплены простым планаром.

Ну, с легким, последующим Relax UVs.

Потом все это было загнано в UV-листы.

520

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]