UV развертка для освещения

23.07.2019 Игры

Карта теней вероятно, самая трудная часть в создания визуального представления объекта. Мы используем их, чтобы получить запеченные свет и тень.
Они должны быть однозначно развернуты, так что каждая часть модели имеет свое собственное место в UV пространстве, чтобы в итоге получать корректную информацию о свете и тени.
Важно помнить, что разрешение карты теней крошечное по сравнению с размером UV пространства.
Важно также понимать, что чем больше уровень должен быть оптимизирован тем ниже дизайнер уровней должен использовать разрешение на лайтмапах, иногда доходя до 8 на 8 или 16 на 16 в случае с более мелкими объектами.
Эта тенденция требует, чтобы мы оставили много дополнительного пространства вокруг каждой секции из развертки объекта так, чтобы области, которые являются темными,
не воздействовали на светлые и не уничтожали иллюзию визуальной корректности теней в игре.

Есть 3 основных способа создания такой развертки:

BOX UNWRAP

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

PLANAR UNWRAP

Этот способ особенно полезен для плоских конструкций, таких как стены с несколькими фасками или выдавливаниями. Это также очень полезно для больших частей фасадов зданий, таких как, например, многоквартирные дома.
Planar будет разворачивать значительно лучше если использовать неразрывную геометрию, потому что здесь вопрос будет стоять лишь в “расслаблении” сетки развертки.
Иногда так же хорошее правило заключается в том, чтобы убедиться, что на подобной развертке больше места по горизонтали, чем по вертикали, так как отбрасывание теней, как правило, происходит со стороны при слегка повышенном угле,
а не прямо вниз. Так, большее горизонтальное пространство даёт более широкие возможности для построения более резкой тени, из-за тенденции выбора дизайнерами освещения под углом,
чтобы создать более интересные тени, чем при освещении сверху вниз.

CYLINDRICAL UNWRAP

Большинство других форм можно представить как вариации цилиндрической формы, если конечно они не близки к параллелепипедам или плоскостям.
Цилиндрическую развертку хорошо использовать для многих конструкций которые имеют переднюю и боковые части, но не имеют задней, иначе мы бы использовали метод BOX UNWRAP .

Примеры

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



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



Здесь мы видим что необходимо использовать максимально возможное пространство, так как карта теней в любом случае покроет всю развертку.
По этому между соотношением сторон объекта 1 к 1 и 1 к 7 вы увидите сещественную разницу. Так же вы видите что здесь отделены некоторые части развертки и отодвинуты от основной сетки.
Это сделано потому как эти части всегда останутся в тени. Они не должны воздействовать на остальную карту теней.



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



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



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



У некоторых проектов не выходит следовать этим простым правилам, как на скриншоте ниже.



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



Иногда развернуть объект легко, достаточно разбить его на несколько обоснованных частей. А затем просто “расслабить” развертку. Отличный пример объект ниже.



Такая конструкция является по существу цилиндром с плоским основанием поэтому здесь используются эти два основных метода развертки объекта.
Planar разворачивает части геометрии вниз по оси Z, а затем применяется модификатор “расслабления” и немного регулируется положение вершин чтобы убедиться, что ничего не получает слишком мало покрытия.
В середине схожий с основанием случай, здесь центральная часть разделена и использован Planar вместо Cylindrical для того что бы обеспечить большую зону покрытия.
Как всегда, мы больше озабочены охватом, чем чем соотношением сторон 1 на 1. Большим преимуществом будет располагать швы в их реальных местах, это позволит выглядеть теням более естественно.
Если на вашем объекте есть глубокие вырезы, крайне резкие стыки геометрии то это отличное место что бы здесь проложить шов, если конечно он требуется.


Lightmap Coordinates Index

По умолчанию, первый набор UV (индекс 0) статик меша будет использоваться при создании карты теней для статического освещения.
Это означает, что один и тот же набор координат, который используется для нанесения материалов на меш, так же будет использован для статического освещения.
Этот метод довольно часто не является идеальным. Одной из причин этого является то, что UV, используемые для генерации карты теней должны быть уникальными,
а это означает, что каждая грань сетки не должна перекрывать любую другую поверхность в UV пространстве. Причина этого достаточно очевидна: если фейсы перекрывают друг друга на UV развертке,
часть карты теней, соответствующая этому пространству будет применяться к обеим граням. Это приведет к неправильному освещению, появлению теней там где их в принципе быть не должно.
Статик меши имеют свойство LightmapCoordinateIndex , которое позволяет использовать заданную UV развертку под карту теней. Установите это свойство, чтобы указать на набор UV, который правильно настроен для освещения.

UV чарты и отступы

Группы обособленных треугольников с сопредельными UVs называются UV чарты (charts).


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


  1. Потраченный впустую отступ
  2. Необходимый отступ

Это означает, что для карты теней разрешением 32, отступы между частями UV развертки должны быть 12,5% от всего UV-пространства.
Однако, имейте в виду, что использование слишком больших отступов между частями UV развертки приведет к трате памяти, отведенной на карту теней, впустую на более высоких разрешениях.
Чем ближе ближе вы сможете расположить UV чарты, тем лучше. Это позволит уменьшить количество растраченной впустую памяти.



Это далеко не идеальная развертка.

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



Лучший способ создания развертки для карты теней является моделирование всего меша как одного непрерывного элемента или создание развертки вручную.



Это даст единую развертку, на которой почти нет швов и которая гораздо более эффективна.

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



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



Всем доброго времени суток. Сегодня я решила рассказать о различных способах создания развертки. Такая тема особенно актуальна для новичков. Способов значительно больше, чем будет описано ниже, но я приведу примеры, которые регулярно использую. Создание UV – не самая творческая часть из всего процесса 3d моделлирования. Хотя и жизненно необходима для каждого моделлера. Давайте посмотрим, какой из способов более эффективный и быстрый. У меня есть модель головы персонажа, делала его по туториалу. Есть несколько способов сделать эту работу – можно создавать развертку в Zbrush, Maya, или UVlayout. Итак, по порядку.

1) Zbrush. Плагин называется UV Master, версия программы должна быть не ниже 4R6. Ищем во вкладке Zplugins.

В Zbrush важно снимать UV-координаты с нижнего уровня сабдивайда, делаем во вкладке Geometry. Для моей модели это не важно, я импортировала её с Maya.

Теперь возвращаемся в UV master, нажимаем кнопку Work on clone. Такая процедура служит подстраховкой для модели, так как если она до того использовался polypaint, то при обычной развертке вся раскраска может слететь. Модель получает новый цвет, материал и пометку CL в названии.


Ищем самую главную кнопку Unwrap (развернуть) и нажимаем Flatten (показать развернутую модель). Результат с первого раза получается не очень. Швы прямо на лице – это совсем некрасиво. Кстати, показать швы – это кнопочка CheckSeams.


Значит покажем Zbrush,как нужно сделать. Включаем Enable Control Painting.

Есть 3 режима: Protect, Attract и Erase. Первый – защищает области, второй – указывает расположения швов, третий – стирает то, что вам не понравилось. Кстати само расположения швов не имеет смысла проводить тонкими линиями, обычно UV master всё равно сделает по-своему. Так что примерно вот так.

Вторая попытка – нажимаем Unwrapи всё чудесно!


Потом не забудьте скопировать ваши результаты на готовую модель.

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

2) Maya. Тут я удаляю половину, потом идем в Create UV’s => Planar Mapping. Выбираем Best plane (майка сама выберет самый удачный ракурс) и ставим галочку напротив keep image widht/height ratio (сохраняет пропорции).


Проджектим и идем в UV Texture Editor.



Идем в инструменты, выбираем ювишки, делаем Unfold и немного Relax ювишкам. Я отрезала уши, глотку и внутреннюю часть глаза, чтобы лучше их развернуть. Чтобы их отрезать необходимо выбрать ребра по которым собираемся резать и потом нажать Cut UV Edges. Потом их можно пришить обратно либо просто расположить в местах откуда они родом.

Пользуйтесь текстурой с любым чекером, чтобы эффективней видеть растяжения и сжатия.


Вот что вышло у меня.


На всю эту работу я потратила около 45 минут. Возможно потому, что я не так часто разворачиваю такие вещи в этом софте. Точная развертка, но, на мой взгляд, немного долгая и неудобная.

3) UVlayout – это ещё один способ снять качественные координаты быстрым способом. Сразу стоит закрыть глаза на интерфейс в стиле аля «2000-годы», так как возможности программы довольно мощные. Это именно тот самый случай, когда внешний вид не имеет значения. К недостаткам данной программы я бы отнесла то, что вся работа построена на горячих клавишах. Хотя, это возможно и преимущество, просто кому как удобней. Для применения действия нужно держать курсор либо над объектом, либо над ребром. Первое что нужно сделать – найти симметрию. Ищем во вкладке Display кнопку Symmetry, затем нажимаем on, потом Find, левой кнопкой мыши нажимаем ребро, которое проходит по середине меша и нажимаем Space. Таким образом мы экономим кучу времени на симметричных объектах. Если какие-то фейсы подсветятся желтым, то это означает, что эти части не симметричны.


Переключение по пространствам происходить при помощи клавиш 1, 2, 3. Но чтобы посмотреть на ювишки, их следует сначала туда отправить. Итак намечаем швы. С — наметить, W – снять выделение. Довольно удобно Edge Extend выставлять 10 (значит выделение 10 ребер за раз). Расположение швов приблизительно такое же как и описано в Zbrush выше. Готовые куски отправляем в UV- пространство клавишей d, вернуть обратно для исправлений-Shift+d. В 2d пространстве жмём Shift+f — unfold, space — relax (по аналогии с Maya). Таким образом разворачиваем все кусочки, которые есть. Перемещение деталей по UV-пространству осуществляется при помощи мыши и клавиши пробел. Вот пару хоткеев, которыми я пользовалась от избавления стяжек и растяжек (ярко красные и синие области). — W+Enter — сшить ребра; -ctrl+колесико мыши — переместить точку; -ctrl+shift+колесико мыши — перемещает группу соседних UV(как Soft Selection в Maya); — b- unfoldкисти точечно -/=- меняет радиус кисти; -shift+t -в режиме UV закрепляет бордюры и можно делать флатен (f) без потери формы; -p — закрепляет/прикалывает UV (пин деталей); shift+p — отменяет предыдущее; -t — перебирает варианты текстур на моделе; -s – переносит с все изменения, которые вы натворили на одной из симметричных частей Вашего меша.


Пин участков.


Цель — добиться как можно меньше ярко-синих и ярко-красных участков. В идеале вся модель должна быть зелёной, хотя такого можно добиться не так часто. Моя финальная модель не совсем идеальна, но совершенству нет предела и нужно ещё время, чтобы довести её до ума. Заняла 30-40 минут моего времени. Итак, можно сделать вывод, что Zbrush чемпион по скорости создания разверток и если нужно разворачивать органику. Maya – замечательная программа с широкими возможностями, но не самая лучшая идея для разверток. Хотя если приловчится, то может и понравится. UV layout – мощный инструмент, который наверняка понравится своей простотой. Выбирайте то, что удобно именно вам!

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

Автор этой статьи - уважаемый мной 3D моделер техники в 3ds Max - Александр Барсуков , известный еще под ником DesertBull. Так что публикую я статью как есть.

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

Маппинг представляет собой простой раскрой модели. Все наши модели состоят из сетки полигонов. По сути делая маппинг, мы условно разделяем нашу модель на отдельные части, которые помогут нам максимально точно и без потянутостей "натянуть" текстуру.

Работа с модификатором маппинга очень проста. Если вы ещё не умеете с ним работать, то ставьте это приоритетом номер один в очереди на изучение, иначе вы - не полноценный специалист.

Многие работают с модификатором UVW Map. Я же работаю с модификатором UVW Unwrap. Почему? Потому что что это абсолютно такой же модификатор, только при этом с кучей дополнительных возможностей. Настоятельно рекомендую работать именно через Unwrap.

Что ж приступим.

У нас есть простая модель.

Текстурирование и другие аспекты работы с CG Вы можете изучить на онлайн курсе по 3D графике "CG generalist" в онлайн школе CGTarian.

В настройках карты Bitmap есть опция UV Offset. Она позволяет использовать не только пространство внутри стандартного UV квадрата под свои текстуры, но также пространство вокруг этого квадрата.

О том, как это сделать смотрите в видео уроке по :

Программу 3ds Max с возможностью создания пользовательских инструментов, для качественного и быстрого создания проекта, а также другие программы включая AutoCAD Map 3D 2018, AutoCAD Civil 3D 2017 можно приобрести на сайте architect-design.ru .



Подробнее о создании работы "Побег" читайте в P.S.

ВАЖНО! Прочитайте этот абзац, если вы тут впервые! Вам попасть на мой блог! И хотя, вы НЕ найдёте здесь ссылки на крякнутый 3dsMax2012 (только на лицензионный, который можно скачать бесплатно), НО зато на моём блоге я выкладываю свои шикарные (так говорят, те кто их видел, а не я) БЕСПЛАТНЫЕ и , а также кучу другой полезной информации, которую вы не найдёте больше нигде в интернете: , и др.

Ссылки для скачивания.

Лицензионный диск 3ds Max (полностью рабочая версия без ограничений на протяжении 30 дней) можно скачать бесплатно :

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


Как, наверное, каждый тридешник знает, что – это самое муторное, долгое и уж никак не творческое занятие.

Порой я сам при создании 3d-персонажа (да и вообще любой 3d-модели) трачу на создание хорошей UV-развертки больше времени, чем на создание самой 3d-модели.

Следите за новостями и 3D вкусностями

Последние обсуждения

Лучшие статьи по 3D

Полезные программы, о которых вы могли не знать

Новые возможности 3D-редакторов


Проверьте свои знания и узнайте новое:

...интересный бесплатный тест на знание 3ds Max с обучающим эффектом...

Продолжаем работу над дизайном скрипки. Эта статья является по своей сути очень подробной инструкцией по тому, как делать UV мапинг и тому, как использовать модуль Render To Texture

Этапы, которые мы рассмотрим:

1. UV -мапинг;

UV

1. UV мапинг

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

Хорошие текстуры способны формировать отличную визуальную составляющую, вытягивая тем самым порой кривую модель и, наоборот, плохие текстуры, плохо подобранные могут испортить даже очень качественную сетку. В основе качественного текстурирования лежит корректный UV -мапинг (uv mapping). Именно правильно созданные UV развертки являются верным залогом качественных текстур. Это базис!

С него и начнем:

При работе со скрипкой я решил не обращаться к сторонним приложениям типа UV Layout или Unfold 3 d . Мне захотелось обойтись лишь силами Unwrap UVW среды 3 ds max 2015. У модификатора этой версии множество инструментов, делающих uv -мапинг достаточно комфортным, чего не скажешь о более ранних версиях. Также я не стал вопреки своей профессиональной привычки пользоваться сторонними пакетами для 3 d -текстурирования. Лишь Photoshop и Render To Texture . Ведь швы никуда не исчезают…

Начинаем с основы. Добавляем к ней модификатор Unwrap UVW :


Далее заходим в UV Editor и выбираем команду Flatten Mapping :


Настройки Flatten оставляем по умолчанию, жмем Ok :


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


Результат сортировки:


Теперь я выделяю основные части, так удобнее отслеживать полигоны:


И перехожу во вьюпорт макса, чтобы отследить выделение на самой модели. Как видите попадаются полигоны, которые не выделились. Это те полигоны, которые оторваны от основной части и находятся в «зернах», которые мы выкидывали из текстурного поля несколько ранее:


Выделяем эти полигоны отдельно:


Теперь все элементы собираем вместе и выделяем. Снова переходим в Mapping и выбираем Normal Mapping . Здесь следует подобрать экспериментальным путем направление проецирования. Правильное направление даст вам форму основу деки максимально похожей на истину:




Теперь самое время применить к нашей модели материал с картой Checker (шахматка). Сейчас я решил использовать в качестве проецируемой текстуры не банальную черно-белую шахматку, а цветовую карту с цифрами. Ей удобнее пользоваться:



Регулируем тайлинг, чтобы квадратиков стало больше. В 3 ds max Design за тайлинг отвечает показатель Size :


Судя по тому, что квадратики выглядят как прямоугольники, очевидно UV карта сильно сжата. Д авайте растянем ее вертикальным масштабированием:


Примерно такой результат должен получиться. Контролировать процесс можно по квадратикам. Как только они станут максимально квадратными, процесс можно закончить:


Я еще немного регулирую размер основных фрагментов и ориентирую их в квадратном поле наиболее оптимальным образом; так, чтобы потом удобнее было работать на стадии текстурирования:


Пришло время заняться мелкими фрагментами. Это внутренние грани вырезов деки – эфов:


Очевидно, здесь придется немного попотеть – вручную осуществить сшивку швов (Stich Selected ). Но прежде чем мы займемся этим советую назначить команду stich selected на какую-нибудь горячую клавишу, иначе замучаетесь, ведь применять эту команду предстоит с частотой пулеметной очереди. Переходим к меню Customize-Customize User Interface :


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


Далее снимаем выделение с ребер и выделяем только одно какое-то ребро в редакторе UV . Выделенное ребро примет красный цвет, а ребро, соответствующее ему станет синим. Тем самым 3ds max указывает нам на нужные ребра, которые нужно сшить:


Жмем клавишу, которую назначили на команду Stich (в моем случае это клавиша S ). Когда этот процесс будет полностью закончен, мы получим примерно такой результат:


Применяем команду Tools Relax (Распустить), чтобы снять напряжения с фрагмента и разровнять UV :


Роспуск осуществляем по полигонам:


Следует несколько фрагментов разделить, чтобы разместить в квадратном поле:


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


Выделяем полностью все точки ребра (только одного ребра) и жмем кнопку выравнивания по горизонтали:


Также поступаем с вертикальными ребрами:


В результате мы должны получить примерно такой результат:


Далее нам следует упаковать UV карту. Обратите внимание, что полоски, которые являются внутренними гранями вырезов – эфов значительно меньше оснований, поэтому их следует уменьшить (опять – таки ориентируйтесь по цветовой карте во вьюпорте, квадратики должны быть везде одного размера, тогда разрешение текстуры на все поверхности будет одинаковым). Результат упаковки:


В заключение я всегда запекаю шаблон, для последующего применения в фотошопе. Для этого заходим в Tools – Render UV Template.

Читай эксклюзивные статьи первыми

Здесь всего лишь выбираем разрешение. Я выставляю разрешение 4 k (4096 x 4096). Как можете понять текстура будет квадратной. Сохраняем готовый шаблон в формате png с альфа-каналом (в этом вся суть, он должен быть прозрачным):


После обязательно сворачиваем стек, чтобы сохранить UV координаты в геометрии модели:


У меня получился такой результат:


Аналогично проводим работу с остальными элементами. Это, например, кант деки:


Гриф скрипки:


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


Далее снова выделяем весь объект и применяем Flatten Mapping для начальной раскладки:


Получаем такой результат:


Далее я начинаю делить отдельные фрагменты (Break ), такие как спираль на рисунке ниже. Если этого не сделать, то распускание подобных элементов будет более проблематичным, еще я сшиваю отдельные фрагменты в одно целое:


К отделенному кусочку мы применим планарное проецирование и выбираем соответствующую ось. Вы поймете, что ось выбрана правильно, когда плоскость проецирования модификатора Unwrap UVW будет параллельна обрабатываемой поверхности:


Результат:


Обратите внимание, что фрагмент расположился в квадратном поле текстуры, заняв его практически полностью – верное свидетельство того, что направление проецирования (ось проецирования) выбрано правильно.


Результат:


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


Обратите внимание на разницу в размерах квадратов текстуры:


Повторите процедуры с остальными фрагментами, которые описаны в этом способе и чуть ранее:


После чего упакуйте текстуру в квадратное поле:


Не устану повторять важные моменты: сверните стек модификаторов, чтобы прописать UV координаты в меш. Только после этого можно считать создание uv развертки законченным. Далее следует добавить Symmetry и свернуть стек еще раз:


После обработки всех элементов мы получим примерно такой результат:


2. Подбор текстур, перепекание на UV

Начнем с подбора текстур. Итак для нашей скрипки я подобрал несколько текстур с хорошей фактурой дерева, текстуры на всякий случай тайлинговые, то есть бесшовные. Они будут применяться для деки и грифа:


Для канта деки скрипки я подобрал немного другую текстуру, чтобы выделить фактуру дерева на нем немного больше:


Обратите внимание на мост скрипки, который натягивает струны:


Чем-то напоминает текстуру пробки. Я сумел подобрать что-то подобное:


Не совсем то. Поэтому я подобрал более древесную текстуру (на стадии композитинга совместим эти текстуру и постараемся приблизиться к оригиналу):


К темным деталям скрипки типа грифа и струнодержателя я подошел немного оригинально. Я не стал «закрашивать» эти элементы в сплошной черный. Вместо этого я подобрал готовый материал VRay , имитирующий карбоновый пластик. Из него я выделил базовую текстуру, которую и применил дальше к темным деталям:


Базовые текстуры мы подобрали!

Как видите, не густо.

С этим мы и будем работать.

Теперь переходим к запеканию текстур. Рассмотрим этот процесс также на основе деки. Прежде всего к ней снова нужно применить модификатор Unwrap UVW , зайти в UV редактор и сохранить UV пресет.

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

Сохраняем:


Теперь настраиваем материал и применяем его к нашей основе:


В канал Diffuse закидываем первую текстуру для основы деки и грифа:


Добавляем модификатор UVW Map , чтобы настроить проецирование (вот с этого момента как раз UV координаты сбиваются, для этого мы их и сохраняли немного ранее):


Получаем вот такой результат:


Я немного меняю показатели Size , чтобы подкорректировать тайлинг, также можно поиграться со значениями сдвига Offset :


После всех настроек сворачиваем стек:


Теперь жмем клавишу «0», чтобы вызвать диалоговое окно Render To Texture . Как только вы выделите свой объект, он тут же загрузится в список Object To Bake :


В том окне мы и будем проводить т.н. texture baking. Для дальнейшей работы нам потребуется визуализатор Vray. Благодаря ему мы сможем отрендерить текстуры без запекания освещения (позже я покажу вам разницу):


Теперь переходим к разделу Output , чтобы настроить выводные данные. Здесь мы жмем кнопку Add (Добавить), появляется список добавляемых элементов:


В этом списке мы выбираем для рендеринга элемент VRayDiffuseFilterMap :


Далее настраиваем разрешение запекаемой текстуры 4096 x 4096 пикселей (наподобие того как мы рендерили шаблоны), на всякий случай включите замочек, чтобы сохранились пропорции:



Текстуру также как и шаблоны сохраняем в формате png с альфа-каналом:


В Target Map Slot выбираем Diffuse Color , чтобы указать программе, что в канале карты должна находиться цветовая карт (Diffuse Color ):


Теперь жмем кнопку в самом низу Unwrap Only , в стеке модификаторов появляется Automatic Flatten UVs . Эта штуковина проецирует имеющуюся UV карту и запекает по ней текстуру:


Он работает аналогично модификатору Unwrap UVW , в нем даже кнопки такие же, выбираем его и открываем редактор UV :


Как видите uv карта не та, что мы создавали. Кстати только что исходные UV координаты сбились еще раз. Вот почему важно было их сохранить. В редакторе жмем File Load UV :


И загружаем сохраненную UV карту:


Результат:


И жмем кнопку Render , начинается запекание текстуры, открывается два фрейм буфера: Windows Frame Bufer , который нам не нужен, вслед за ним открывается VRay Frame Bufer . В нем для наглядности я переключаюсь с RGB Color на VRayDiffuseFilterMap , та самая карта, которую мы и запекаем:


Обратите внимание на эффект запекания свето-теней на текстуре:


VrayDiffuseFilterMap исключает подобные недоразумения .

Теперь применяем к нашей основе созданную UV текстуру:


Однако нужно вернуть сбитые многократно UV координаты на свое место. Для этого добавляем в стек модификатор Unwrap UVW :


Открываем редактор UV и загружаем ту же самую карту, которую сохраняли:



Результат:


В итоге текстура ложится так как надо.

Так мы и подготовили необходимые текстуры для работы в 3ds max.

Теперь разберем еще один важный момент связанный с проецированием UVW Map . Итак кант деки:


Я также применил к нему модификатор UVW Map , но проецирование в отличие от предыдущего режима Planar назначил режим Cylindrical . И обратите внимание, как распределяется текстура:


Возникает радиальное растяжение на нижней части канта. Это исправляется совмещением разных текстур в Photoshop . Т.е. сначала мы перепекаем на текстуру такой вариант как на картинке. Затем я меняю направление проецирования и повторяю процесс перепекания.

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

.

В предыдущем уроке мы ознакомились с базовыми методами проецирования текстур: параметрическим проецированием и внедрением текстур в виде проецируемых изображений (As Projection ) или по трафарету (As Stencil ). Данные методы удобны при проецировании простых моделей, однако их может оказаться недостаточно при текстурировании более сложных моделей (такие объекты обычно требуют совместного использования нескольких типов проецирования и (или) коррекции наложения текстурных координат), а для текстурирования моделей, раскрашиваемых вручную, они и вовсе не подойдут. В подобных случаях приходится создавать развертку модели в редакторе проекционных координат UV Texture Editor . С одной стороны, подобная развертка позволяет более тонко настроить параметры проецирования, благодаря чему искажения текстуры оказываются минимальными. С другой стороны, по такой развертке можно нарисовать любую, даже самую замысловатую текстуру, а затем разместить ее на поверхности объекта с учетом развертки. Рассмотрению простых приемов создания и раскраски UV-развертки и посвящен данный урок.

Теоретические аспекты

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

Технически это выглядит следующим образом. Вначале поверхность объекта мысленно разбивается на фрагменты - во фрагменты объединяют находящиеся рядом грани, к которым будет применен один и тот же тип проецирования, а также одинаковый вариант раскраски. После этого для каждого из фрагментов создают развертку и все элементы развертки размещают на отведенном для этой цели поле редактора проекционных координат UV Texture Editor . Затем делается снимок развертки (UV Snapshot ), представляющий собой обычное растровое изображение. Данный снимок загружается в графическом редакторе, например в Adobe Photoshop, где по развертке (ее удобнее всего использовать в качестве верхнего слоя изображения) создается многослойная текстура (то есть развертка непосредственно разрисовывается), которая сохраняется в графическом файле уже в виде однослойного изображения. На последнем этапе необходимо вновь активировать Maya, создать новый материал, подключить у него на канале Color подготовленную текстуру и назначить данный материал модели, в результате чего текстура окажется наложенной на модель в точном соответствии с разверткой.

При проецировании материалов через UV-развертку следует иметь в виду следующие моменты:

  • в силу длительности и большой трудоемкости операций выделения граней и назначения группам граней вариантов проецирования обычно текструрируют несглаженные модели, сглаживают модели уже после наложения текстуры;
  • процесс выделения граней можно существенно ускорить, если выделять грани не обычным образом, а с применением выделяющей кисти, активируемой командой Edit =>Paint Selection Tool (Редактировать=>Выделяющая кисть). У данной кисти следует отрегулировать размер, после чего можно приступать к выделению, которое будет заключаться в рисовании (то есть проведении) данной кистью по выделяемым граням. При случайном выделении ненужной грани операцию можно тут же отменить;
  • обычно приходится выделять много граней, и совсем необязательно, что делать это придется однократно, поскольку далеко не всегда можно точно сказать, какой из вариантов проецирования обеспечит лучшие результаты. Чтобы избежать повторного выделения граней (что на порядок удлиняет процесс работы), в ряде случаев разумнее отдельные наборы граней запоминать в виде выделенных областей, применяя команду Create =>Sets =>Quick Select Sets (Создать=>Наборы=>Наборы быстрого выделения). После этого выделенную область можно в любой момент активировать, воспользовавшись командой Edit =>Quick Select Sets (Редактировать=>Наборы быстрого выделения).

В редакторе UV Texture Editor отображаются развертка с проекционными координатами и текстура. Если текстура не видна, то необходимо щелкнуть по кнопке Show Texture Image (Показать изображение текстуры) либо применить команду Image =>Display Image (Изображение=>Отображение изображения). Если текстура повторяется (а этого не требуется), то следует ограничить границы интервалов U и V , щелкнув на квадратике справа от команды Image =>Image Range (Изображение=>Интервал изображения) и выставив параметры Minimum U и Minimum V равными 0, а параметры Maximum U и Maximum V - 1.

UV-развертку можно использовать при текстурировании полигональных моделей и поверхностей с иерархическим разбиением (Subdivision Surfaces ). Команды, ответственные за работу с UV-координатами полигональной модели, находятся в меню Polygons редактора проекционных координат, а за управление UV-координатами подразбиваемых поверхностей отвечает меню Subdivs .

В окне редактора UV Texture Editor выделенные проекционные координаты можно перемещать, поворачивать и масштабировать. Для этого требуется перейти в режим работы с UV-координатами, применив команду UV из контекстного меню редактора, а затем воспользоваться инструментами Move Tool , Rotate Tool и Scale Tool . Кроме того, в отношении проекционных координат допустимо еще множество самых разных операций, доступных из меню редактора UV Texture Editor . Наиболее важные среди них следующие:

  • Normalize UV s (Нормализовать UVs) - размещает развертку внутри UV-пространства;
  • Flip UVs (Зеркально отразить UVs) - применяется для зеркального отображения проекционных координат;
  • Rotate UVs (Повернуть UVs) - позволяет повернуть выделенные UVs-координаты на строго заданный угол;
  • Map UV Border (Вычерчивание UV-границы) и Straighten UV Border (Выпрямление UV-границы) - предназначены для распутывания границ развертки вдоль выделенных UV-координат, что актуально, например, в случае, если граница образует петлю. Обе операции используются при подготовке к операции Relax UVs , которая работает лучше, если граница распутана. Операция Map UV Border позволяет расположить границу выделенного фрагмента UV-координат вдоль границ квадрата в диапазоне от 0 до +1 или окружности, вписанной в тот же квадрат. Операция Straighten UV Border подобных ограничений не имеет, и полученная после ее применения граница может иметь произвольную форму;
  • Relax UVs (Смягчить UVs) - позволяет распутать внутренние UV-координаты без нарушений границы развертки и, как правило, используется после применения операции Map UV Border либо Straighten UV Border ;
  • Layout UVs (Скомпоновать UVs) - обеспечивает расположение UV-координат так, чтобы они не перекрывали друг друга;
  • Align UVs (Выровнять UVs) - выравнивает проекционные координаты друг относительно друга;
  • Cut UVs (Разрезать UVs) - позволяет разрезать развертку на части вдоль выбранных ребер;
  • Sew UVs (Сшить UVs) - обеспечивает сшивание фрагментов развертки вдоль выбранных ребер;
  • Move and Sew UVs (Переместить и сшить UVs) - позволяет сшить фрагменты развертки вдоль выбранных ребер с перемещением фрагментов друг к другу (меньший фрагмент перемещается к большему);
  • Merge UVs (Слить UVs) - позволяет слить выделенные координаты вместе (таким образом объединяются только координаты, разделяющие одну и ту же вершину); данная операция заменяет обычное сшивание, однако лучше подходит для слияния полигонов с однотипной геометрией, в то время как Sew UVs предпочтительно выбирать при сшивании разнотипных полигонов;
  • Delete UVs (Удалить UVs) - используется для удаления ненужных проекционных координат;
  • UV Snapshot (Снимок UV) - позволяет сохранить расположение UV-координат в графическом файле, который затем может применяться в качестве шаблона для рисования текстуры в Paint Effects или в любом графическом редакторе.

Подгонка развертки под готовую текстуру

Для начала рассмотрим пример текстурирования игральной кости, на разных гранях которой должно быть от одной до шести точек. Сформируйте обычный полигональный куб (рис. 2). Поскольку мысленно разрезать куб по ребрам для получения его развертки не составляет труда, то несложно представить, как будет выглядеть необходимая текстура. Поэтому сразу откройте любой графический редактор, создайте в нем новое изображение размером 600x800, включите сетку и установите направляющие, разбив изображение на три квадрата по вертикали и на четыре - по горизонтали. Нарисуйте в определенных квадратах круги так, как показано на рис. 3. Сохраните полученное изображение в виде файла в формате JPG (рис. 4). Переключитесь в Maya и для отображения текстур в окне перспективы включите режим аппаратного текстурирования, воспользовавшись командой Shading =>Hardware Texturing (Затенение=>Аппаратное текстурирование). Откройте редактор Hypershade , создайте новый Blinn-материал, обычным образом (то есть в режиме As Normal ) подключите на канале Color нарисованную текстуру и назначьте данный материал кубу. Результат окажется совсем не таким, как хотелось бы, поскольку текстура на каждой из граней будет отображена в полном своем объеме, а не по квадратам (рис. 5).

Попробуем исправить ситуацию. При выделенном в окне проекции Perspective кубе откройте редактор проекционных координат, применив команду Window =>UV Texture Editor . поскольку куб является примитивом, то UV-координаты для него генерируются автоматически и потому развертка текстуры уже имеется, но ее положение по отношению к текстуре далеко от желаемого (рис. 6). Имейте в виду, что увидеть развертку в представленном на рис. 6 виде, скорее всего, вы сможете только после уменьшения масштаба ее отображения, что выполняется с помощью мыши точно так же, как и в окне проекции. К тому же обратите внимание, что размер развертки гораздо больше размера текстуры. Поэтому необходимо подогнать развертку по текстуре - в данном случае потребуется операция масштабирования. В окне UV Texture Editor щелкните правой кнопкой мыши и выберите команду UV (это позволит работать на уровне UV-координат), выделите все вершины куба и, воспользовавшись инструментом Scale Tool , уменьшите развертку так, чтобы текстура была наложенам требуемым образом (рис. 7 и 8).

Рис. 6. Развертка в окне UVTextureEditor



Создание развертки

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

Рассмотрим пример текстурирования обычного полена, в роли которого будет выступать полигональный цилиндр. Текстура на боковой поверхности объекта и торцах должна быть различной, а потому без построения развертки не обойтись. Создайте цилиндр, выделив его, откройте редактор проекционных координат, где будет отображена автоматически назначенная цилиндру как примитиву UV-развертка (рис. 9). Однако, руководствуясь ей, нужный по замыслу вариант текстурирования не реализовать, поэтому переключитесь в режим работы с текстурными координатами (команда UV из контекстного меню UV Texture Editor ), выделите все координаты развертки и удалите их при помощи команды Polygons =>Delete UVs (Полигоны=>Удалить UVs).


Перейдите в режим работы с гранями, нажав клавишу F11. Активируйте выделяющую кисть (команда Edit =>Paint Selection Tool ) и выделите ею все грани боковой поверхности цилиндра (рис. 10). Назначьте данным граням цилиндрическое проецирование, применив команду Edit Polygon s =>Texture =>Cylindrical Mapping (рис. 11). Переместите созданный фрагмент развертки на свободное пространство (рис. 12) - если этого не сделать, то следующий фрагмент развертки будет наложен на только что созданный, после чего разобраться с ними будет проблематично. Из граней верхней поверхности цилиндра создайте новое выделение и назначьте данным граням планарное проецирование, воспользовавшись командой Edit Polygons =>Texture =>Planar Mapping (рис. 13). Переместите полученный фрагмент развертки на свободное пространство. Аналогичным образом создайте фрагмент развертки для нижней поверхности. В режиме работы с UV-координатами (команда UV из контекстного меню) выделите все три фрагмента развертки, уменьшите их масштаб и переместите внутрь UV-пространства (рис. 14). Создайте снимок развертки, открыв из меню Polygons команду UV Snapshot (Снимок проекционных координат) и в появившемся диалоговом окне указав имя файла (поле File Name ), размер (поля Size X и Size Y ) и формат изображения (список Image Format ). Имейте в виду, что изображение должно иметь размер не менее чем 512х512, а лучше - 1024х1024.

Рис. 10. Выделение граней боковой поверхности цилиндра инструментом PaintSelectionTool




Откройте полученный графический файл в любом графическом редакторе (мы выбрали Paint Shop Pro) - рис. 15. Создайте дубликат слоя с разверткой, а затем установите под него слой с фоновым изображением, а также слои со спилами и текстурой коры (рис. 16). Сделайте слой с копией развертки невидимым (рис. 17) и сохраните изображение в графическом файле с объединением слоев (рис. 18). Откройте созданное изображение текстуры (уже однослойной) в графическом редакторе, переведите изображение в режим Grayscale и увеличьте контрастность изображения (рис. 19), сохраните изображение под другим именем.




Переключитесь в Maya, создайте новый Lambert-материал и установите для него на канале Color в качестве текстуры первое созданное изображение. Подключите вторую (черно-белую) текстуру на канале Bump и подберите подходящее значение параметра Bump Depth (мы остановились на значении 0,2). Проведите рендеринг, и вы увидите примерно такое же полено, как представлено на рис. 20.

А теперь несколько усложним задачу: текстурируем объект, полученный из полигонального цилиндра путем экструдирования граней (рис. 21). Попробуем назначить ему такую текстуру, чтобы данный объект стал напоминать набор выстроенных в ряд детских кубиков с буквами алфавита. Сложность в том, что при формировании развертки придется не только учитывать то, какие грани следует объединять вместе, но и добиться минимальных искажений текстуры, поскольку буквы должны иметь одинаковый размер на всех кубиках и не быть растянутыми. Поэтому создайте новый материал, подключите у него на канале Color шахматную текстуру и назначьте данный материал объекту (рис. 22) - изначально ничего хорошего не выйдет, поскольку сгенерированные первоначально для куба UV-координаты совершенно не соответствуют модели.


В режиме работы с UV-координатами выделите все координаты и удалите их командой Polygons =>Delete UVs . Выделите грани одной из боковых поверхностей объекта и назначьте им автоматическое проецирование (Edit Polygons =>Texture => Automatic Mapping ) - рис. 23. Переместите фрагмент на свободное пространство. Выделите грани другой боковой поверхности, также назначьте им автоматическое проецирование и вынесите фрагмент развертки за пределы UV -пространства. Аналогичные операции произведите для двух других боковых поверхностей, а потом и для двух оставшихся отдельных граней (рис. 24). Перейдите в режим работы с UV-координатами, выделите все текстурные координаты боковых поверхностей и масштабируйте их так, чтобы размер квадратов шахматной текстуры на всех поверхностях стал одинаковым (рис. 25). По окончании все фрагменты развертки равномерно масштабируйте и разместите внутри UV-пространства (рис. 26). Создайте снимок развертки, применив команду Polygons =>UV Snapshot .




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