Первые шаги в Maya. Урок 19. Проецирование материалов через UV-развертку

Светлана Шляхтина

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

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

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

Примеры наложения текстур с настройкой проецирования

Ваза

Настенные часы

Телефонная трубка

Рыба

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

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

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

 

Рис. 1. Пример модели и соответствующей ей развертки

Рис. 1. Пример модели и соответствующей ей развертки

 

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

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

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

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

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

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

  • NormalizeUVs (Нормализовать UVs) — размещает развертку внутри UV-пространства;
  • FlipUVs (Зеркально отразить UVs) — применяется для зеркального отображения проекционных координат;
  • RotateUVs (Повернуть UVs) — позволяет повернуть выделенные UVs-координаты на строго заданный угол;
  • Map UV Border (Вычерчивание UV-границы) и Straighten UV Border (Выпрямление UV-границы) — предназначены для распутывания границ развертки вдоль выделенных UV-координат, что актуально, например, в случае, если граница образует петлю. Обе операции используются при подготовке к операции RelaxUVs, которая работает лучше, если граница распутана. Операция Map UV Border позволяет расположить границу выделенного фрагмента UV-координат вдоль границ квадрата в диапазоне от 0 до +1 или окружности, вписанной в тот же квадрат. Операция Straighten UV Border подобных ограничений не имеет, и полученная после ее применения граница может иметь произвольную форму;
  • Relax UVs (Смягчить UVs) — позволяет распутать внутренние UV-координаты без нарушений границы развертки и, как правило, используется после применения операции Map UV Border либо Straighten UV Border;
  • LayoutUVs (Скомпоновать UVs) — обеспечивает расположение UV-координат так, чтобы они не перекрывали друг друга;
  • Align UVs (Выровнять UVs) — выравнивает проекционные координаты друг относительно друга;
  • CutUVs (Разрезать UVs) — позволяет разрезать развертку на части вдоль выбранных ребер;
  • Sew UVs (Сшить UVs) — обеспечивает сшивание фрагментов развертки вдоль выбранных ребер;
  • Move and Sew UVs (Переместить и сшить UVs) — позволяет сшить фрагменты развертки вдоль выбранных ребер с перемещением фрагментов друг к другу (меньший фрагмент перемещается к большему);
  • Merge UVs (Слить UVs) — позволяет слить выделенные координаты вместе (таким образом объединяются только координаты, разделяющие одну и ту же вершину); данная операция заменяет обычное сшивание, однако лучше подходит для слияния полигонов с однотипной геометрией, в то время как Sew UVs предпочтительно выбирать при сшивании разнотипных полигонов;
  • Delete UVs (Удалить UVs) — используется для удаления ненужных проекционных координат;
  • UVSnapshot (Снимок UV) — позволяет сохранить расположение UV-координат в графическом файле, который затем может применяться в качестве шаблона для рисования текстуры в PaintEffects или в любом графическом редакторе.
В начало В начало

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

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

 

Рис. 2. Исходное изображение

Рис. 2. Исходное изображение

 

Рис. 3. Рисование текстуры в графическом редакторе

Рис. 3. Рисование текстуры в графическом редакторе

 

Рис. 4. Текстура

Рис. 4. Текстура

 

Рис. 5. Первоначальный вид текстурированного куба

Рис. 5. Первоначальный вид текстурированного куба

 

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

 

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

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

 

Рис. 7. Масштабирование развертки

Рис. 7. Масштабирование развертки

 

Рис. 8. Игральная кость

Рис. 8. Игральная кость

В начало В начало

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

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

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

 

Рис. 9. Цилиндр и соответствующая ему автоматически сгенерированная UV-развертка

Рис. 9. Цилиндр и соответствующая ему автоматически сгенерированная UV-развертка

 

Перейдите в режим работы с гранями, нажав клавишу F11. Активируйте выделяющую кисть (команда Edit=>PaintSelection Tool) и выделите ею все грани боковой поверхности цилиндра (рис. 10). Назначьте данным граням цилиндрическое проецирование, применив команду EditPolygons=>Texture=>CylindricalMapping (рис. 11). Переместите созданный фрагмент развертки на свободное пространство (рис. 12) — если этого не сделать, то следующий фрагмент развертки будет наложен на только что созданный, после чего разобраться с ними будет проблематично. Из граней верхней поверхности цилиндра создайте новое выделение и назначьте данным граням планарное проецирование, воспользовавшись командой EditPolygons=>Texture=>PlanarMapping (рис. 13). Переместите полученный фрагмент развертки на свободное пространство. Аналогичным образом создайте фрагмент развертки для нижней поверхности. В режиме работы с UV-координатами (команда UV из контекстного меню) выделите все три фрагмента развертки, уменьшите их масштаб и переместите внутрь UV-пространства (рис. 14). Создайте снимок развертки, открыв из меню Polygons команду UVSnapshot (Снимок проекционных координат) и в появившемся диалоговом окне указав имя файла (поле FileName), размер (поля SizeX и SizeY) и формат изображения (список ImageFormat). Имейте в виду, что изображение должно иметь размер не менее чем 512х512, а лучше — 1024х1024.

 

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

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

 

Рис. 11. Получение развертки боковой поверхности

Рис. 11. Получение развертки боковой поверхности

 

Рис. 12. Перемещение созданного фрагмента развертки

Рис. 12. Перемещение созданного фрагмента развертки

 

Рис. 13. Получение развертки верхней поверхности

Рис. 13. Получение развертки верхней поверхности

 

Рис. 14. Перемещение фрагментов развертки в UV-пространство

Рис. 14. Перемещение фрагментов развертки в UV-пространство

 

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

 

Рис. 15. Полученное изображение в окне графического редактора

Рис. 15. Полученное изображение в окне графического редактора

 

Рис. 16. Многослойное изображение первой текстуры

Рис. 16. Многослойное изображение первой текстуры

 

Рис. 17. Готовая первая текстура перед ее сохранением

Рис. 17. Готовая первая текстура перед ее сохранением

 

Рис. 18. Первая текстура

Рис. 18. Первая текстура

 

Рис. 19. Вторая текстура

Рис. 19. Вторая текстура

 

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

 

Рис. 20. Полено

Рис. 20. Полено

 

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

 

Рис. 21. Исходный объект

Рис. 21. Исходный объект

 

Рис. 22. Вид объекта сразу после назначения шахматной текстуры

Рис. 22. Вид объекта сразу после назначения шахматной текстуры

 

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

 

Рис. 23. Получение развертки одной из боковых поверхностей

Рис. 23. Получение развертки одной из боковых поверхностей

 

Рис. 24. Развертка после создания всех фрагментов

Рис. 24. Развертка после создания всех фрагментов

 

Рис. 25. Масштабирование фрагментов боковых поверхностей

Рис. 25. Масштабирование фрагментов боковых поверхностей

 

Рис. 26. Окончательный вид развертки

Рис. 26. Окончательный вид развертки

 

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

 

Рис. 27. Многослойное изображение текстуры

Рис. 27. Многослойное изображение текстуры

 

Рис. 28. Набор кубиков с буквами

Рис. 28. Набор кубиков с буквами

В начало В начало

next

КомпьютерПресс 3'2008

Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует