«STAR WARS REIMAGINED: african totem C3PO» © 2016, Евгений 
CGtalk.by CG Award 2016: «STAR WARS REIMAGINED: african totem C3PO», Евгений
   
Главная Форумы Галерея Теория Конкурсы Вакансии
Назад   CGtalk.by > Теория
Новые сообщения Зарегистрироваться

Моделирование и текстурирование сложной техники. Часть 4. "О UV"
» Моделирование и текстурирование сложной техники. Часть 4. "О UV"
Jan 11, 2014 - 10:18 PM - Автор: id
<< Часть 3. "Моделирование"

Содержание:
  • Проверка текселя
  • Паддинг
  • Компоновка
  • Мысли о UV
  • Самопроверка 3
Временные затраты: 16-24 часа

Поздравляю, вы вложили в работу массу времени и сил - и вот модель готова! Можно делать UV-развертку!

Еще пару слов о модели. Если у вас простая модель, какой-нибудь ящик с ручками, то он будет mono-mesh. Т.е., к основному объему “приаттачены” все остальные элементы.
Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	monomesh.gif
Просмотров:	325
Размер:	52.2 КБ
ID:	42276

Если это машинка или самолет, то те части, что вращаются или двигаются, должны быть реализованы отдельно. Надо сделать “детач” элемента и выставить Pivot point объекта в нужную точку. Для вращающихся объектов это как правило центр (там, где ось вращения).

Существует технология, когда вращается не сам объект, а UV-координаты этого объекта. Т.е., вращается не геометрия колеса (полигоны, эджи и точки), а текстура на нем. Это значит, объект можно не отделять от основного объема, но этот случай мы рассматривать не будем.

Напоминаю, что мы будем работать с текстурой 2048х2048px. Она будет использована для всех частей модели. Тайлинга не предвидится.

Это значит, что вы должны применить модификатор Unwrap UVW на всю модель.

Тексель
У нас будет тексель 1м = 256 пикселей (приблизительно).

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	divider_part_1.gif
Просмотров:	667
Размер:	1.2 КБ
ID:	42386
Как проверить плотность пикселей?
Опишу самый простой способ проверки текселя. Он же может служить первым шагом к раскладке UV (ваша работа не пропадет).

Для осуществления проверки понадобится:
  • текстура с шашечками 2048х2048рх
  • текстура с шашечками256х256рх
  • Половинка модели
  • Куб 1х1х1м
Меньшую текстуру мы вырезаем из большой текстуры. Ссылка на готовые текстуры в формате PNG (676Кб).

Алгоритм действий:
  1. Делаем копию файла с моделью и удаляем все зеркальные и повторяющиеся элементы - с этой “половинкой” мы будем работать.
  2. Назначаем 2048 текстуру на объект.
  3. Применяем на объект модификтор Unwrap UVW
  4. Нажимаем Open UV Editor …
  5. Выбрав полигоны, нажимаем в меню Mapping - Flatten Mapping и нажимаем OK (параметры не трогаем).
  6. Создаем куб 1х1х1м.
  7. Назначаем на куб, с размером стороны 1м - текстуру 256 (на куб, в 3ds max, мапинг делать не обязательно, он создается автоматическии. Каждая сторона будет растянута от 0 до 1 в UV координатах. Вы получаете 256 пикселей на 1 метр бесплатно!).
  8. Сдвигаем куб до пересечения с объектом проверки. В результате мы должны видеть какую-то большую ровную плоскость нашего объекта и весь куб. В ортографической проекции (left или right viewport подойдут лучше всего).
Вот что получилось у меня.
Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	texel_etalon.jpg
Просмотров:	710
Размер:	126.3 КБ
ID:	42286

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

Название файла:	texel_etalon_changes.jpg
Просмотров:	801
Размер:	185.0 КБ
ID:	42296

И вот результат этих манипуляций.
Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	texel_etalon_final.jpg
Просмотров:	665
Размер:	199.4 КБ
ID:	42306

Будем считать, что теперь у моей развертки тексель 256рх на 1м. Ура!

Примечание для точных людей
Есть очень точные и аккуратные люди, которые могут спросить:
- А где точное математическое доказательство того, что после этого “аналогового” ручного изменения масштаба шашечки на объекте и на кубе равны на 100%?

Увы, такого доказательства у меня нет. Они очень похожи, единственное, что я могу сказать в свою защиту.

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	divider_part_1.gif
Просмотров:	667
Размер:	1.2 КБ
ID:	42386
Про паддинг
У нас есть полуфабрикат развертки, и мы можем начинать складывать этот пазл.

При раскладке надо помнить про паддинг. Паддинг - это расстояние между элементами развертки. Как распаханная полоса на границе между некоторыми странами.

Паддинг нужен для того, чтобы при mip-mapping’е контрастные элементы текстуры не смешивались и не появлялись швы.

Старая статья про паддинг с примерами.

Давайте договоримся и будем делать следующий паддинг между элементами UV-развертки:
  • 16px для корпуса и для больших деталей, которые всегда на виду
  • 8px между другими, менее заметными элементами
Как быстро проверить расстояние между элементами, ведь их может быть очень много и эта операция повторяется постоянно?

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

Название файла:	padding_example.jpg
Просмотров:	253
Размер:	104.5 КБ
ID:	42316

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

Расстояние между элементами меньше 8рх может стать в будущем причиной артефактов. Хотя существуют случаи, когда расстояние между элементами может быть и 2-4 пикселя и никто не заметит ошибки. О таких случаях вы можете сами подумать на досуге или обсудить с друзьями на формуе cgtalk.by

Можно ли делать паддинг больше, чем 8/ 16рх?
Да, можно, если есть свободное место. Но надо помнить, что наличие слишком большой свободной площади на текстуре может говорить о неоптимальной развертке.
Напоминаю, мы говорим про текстуры для игр. Где оптимизация пока очень важна, и пустого места на текстурах должно быть минимум.

На сколько процентов должна быть заполнена площадь текстуры?
Вне зависимости от размеров отличной плотностью считается 90-95%.

Как узнать, на сколько заполнена текстурная площадь?
Есть специальные плагины.

Визуально эти 90-95% выглядят так.
Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	uv-95-density.gif
Просмотров:	789
Размер:	22.9 КБ
ID:	42326

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	divider_part_1.gif
Просмотров:	667
Размер:	1.2 КБ
ID:	42386
Про UV-раскладку и компоновку
В примере проверки текселя я использовал стандартный Flatten Mapping для создания базовой развертки. Потом разбросанные элементы сшиваются и “релаксятся” и помещаются на место. Для этих операций вы можете использовать любые плагины или сторонние программы. Главное, чтоб было быстро и качественно!
Играем в 3D-пазл!

Обязательно делайте Relax. Следите за искажениями.

Старайтесь скомпоновать развертку в квадрат. Если она выйдет за пределы UV-координат 0.0-1.1 ее легко будет отмасштабировать.

Главные элементы при компоновке те, которые видно лучше всего. Это детали корпуса, хвостовая балка, башни и т.д. В начале размещаем их в пределах координат 0.0-1.1 и если надо масштабируем, чтобы они вписались в этот диапазон. При этом должны быть отмасштабированы и все остальные элементы!
Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	uv-componovka-1.jpg
Просмотров:	661
Размер:	172.9 КБ
ID:	42396

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

Название файла:	final_componovka.jpg
Просмотров:	314
Размер:	122.7 КБ
ID:	42406

Если какие-то из элементов не влезли - уменшаем все целиком, но чуть-чуть и пытаемся "впихнуть" эти элементы.

В идеале вы сошьете элементы, аккуратно разложите их в пределах UV-координат 0.0-1.1 и тексель не изменится.

В реальности у нас есть 10 моделей техники от 7 до 17 метров в длину, с различным количеством деталей и т.д. Размер текстуры для всех один - 2048. Вписаться в один тексель не получается…

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

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

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

Король-тексель
“Он сделал тексель на 5% меньше! Отрубите ему голову!” - кричит этот злобный коротышка.

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

Но всегда надо смотреть по ситуации, друзья. Идеальная модель мира плохо уживается с реальностью!

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

Не будьте роботами!

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	divider_part_1.gif
Просмотров:	667
Размер:	1.2 КБ
ID:	42386
Мысли про создание UV-развертки и компоновку для моделей авиационной техники, которые пришли мне в голову во время работы и во время поездки в метро.

Ни единого разрыва!
Чем меньше разрывов (швов) на UV-развертке, тем проще будет создавать текстуру и делать LOD’ы.

Швы на UV-развертке надо стараться сделать в тех местах, где они расположены на реальном объекте.

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

Название файла:	seams_hiding.jpg
Просмотров:	142
Размер:	53.4 КБ
ID:	42336

Искажения текстуры
Можно увлечься бесшовностью и напрочь забыть про “потяжки” - искажения текстуры.

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

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

По вертикали и горизонтали
На развертке все элементы должны по возможности лежать строго горизонтально или вертикально. Это нужно для более простого текстурирования, для создания швов и заклепок и т.д.. Гораздо легче повернуть элемент ЮВ-развертки, а затем рисовать ровные швы, чем выкладывать сотни заклепок с углом в 2-3 градуса.

Пример.
Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	hor_vert_position.jpg
Просмотров:	469
Размер:	243.2 КБ
ID:	42346

Север и юг
Положение элементов на развертке в идеале должно совпадать с их положением на реальном объекте. Если у шасси есть вертикальный элемент, то и на развертке этот элемент должен лежать вертикально. Верх смотрит на север, низ на юг. Так проще рисовать и ориентироваться в текстуре. Это не жесткое правило, но мне так удобнее. Пробовать и решать вам.

Пример
Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	real_position.jpg
Просмотров:	462
Размер:	115.6 КБ
ID:	42356

Но на этом примере есть и ошибка - разрыв координат сделан на передней плоскости крыла и будет заметен. Заметил слишком поздно... Пришлось затратить больше времени и сил на исправление ошибки на этапе текстурирования.

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

Несколько примеров “вторичных” элементов:
  • днище объекта (если точно известно, что вероятность его увидеть близка к 0)
  • нижние части крыльев и лопастей
  • элементы, которые будут быстро вращаться
  • элементы и плоскости, которые всегда в тени или перекрыты другими объектами (внутренности турбин, пространство под главными роторами вертолетов)
Незаметные (скрытые), подвижные, вращающиеся элементы можно легко уменьшать на развертке в 2-4 раза. Таким образом можно сэкономить место для важных элементов.

Стыковка элементов
Края стыковок частей объекта должны по возможности быть выровнены по горизонтали или вертикали (желтый маркер).
Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	straight_seams.jpg
Просмотров:	404
Размер:	193.5 КБ
ID:	42366

Это улучшает качество карты нормалей (при запекании) и упрощает стыковку элементов на текстуре.

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

Отдельно про “половинку” объекта

В процессе работы и общения между дизайнерами это очень удобная вещь. На этой “половинке” сразу видно, что в модели будет уникальным. Можно ничего не описывать, а просто показать эту модель - и все станет понятно.

Запекание UV-развертки в Photoshop Path
Гораздо удобнее использовать в качестве подложки для рисования текстуры пути (вкладка Path), а не растровую картинку, полученную из Render UV Template в 3ds max.

У путей нет толщины. Вы всегда будете очень точно видеть сетку объекта. По путям удобно выделять.

Ингридиенты
  • Нам понадобится бесплатный скрипт PSDPathUnwrapper для 3ds max, который можно взять тут (100% работает с 3ds max 11): http://www.rpmanager.com/freeTools.htm
  • Половина модели
Устанавливаем скрипт.

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

Название файла:	psd-path.gif
Просмотров:	638
Размер:	19.3 КБ
ID:	42376

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

Однако, сделанная обычным способом UV-развертка тоже нам пригодится. Желательно поместить ее над всеми слоями в Photoshop.

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	divider_part_1.gif
Просмотров:	667
Размер:	1.2 КБ
ID:	42386
Самопроверка 3
Сразу после раскладки UV-координат (на уникальной геометрии) мы должны проверить:
  • тексель (сравниваем с эталоном)
  • плотность раскладки (нет ли пустот?)
  • паддинг (не слишком ли близко элементы)
  • “потяжки” на текстуре
  • отраженные полигоны (на уровне полигонов, Select - Select Inverted Polygons)
  • уникальные полигоны (все ли на месте, всего ли хватает?)
  • места разрывов UV-координат (все ли недостатки скрыты?)
  • ориентация элементов в пространстве (север и юг)
Удачи!

Часть 5. "Normal и AO" >>

Вопросы. Комментарии. Обсуждение.
Все права защищены © Иванов Дмитрий aka i.d. При цитировании ссылка на cgtalk.by обязательна.
Polygon.by. Учебно-практический центр компьютерной графики.

Онлайн журнал о магии компьютерной графики и цифрового искусства «Magic CG»
Пакет инструментов для обеспечения качества 3D-контента для игр

Текущее время 12:03 (GMT +4)


Powered by vBadvanced CMPS v3.0 RC1
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Хостинг и облачные решения — Active Technologies

Все права защищены © 2006 — 2014, CGtalk.by