Первые шаги в Maya. Урок 18. Основы проецирования материалов

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

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

Параметрическое проецирование

Проецирование в режиме AsStencil

Проецирование в режиме As Projection

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

Мандарин на листе

Плитка шоколада с гравировкой

Флакон с этикеткой

Крепостная стена

Большинство характеристик материала может быть задано с использованием текстурных карт, с чем мы ранее уже неоднократно сталкивались. Однако для того, чтобы объект выглядел естественно, недостаточно выбрать и настроить текстурную карту — необходимо также правильно проецировать ее на поверхность объекта, то есть задать координаты наложения текстур (mapping coordinates). Данные координаты определяют, по какому принципу текстура должна проецироваться на объект, и обеспечивают тем самым правильную ее визуализацию. Удачное проецирование текстуры позволяет показать игру цвета и фактуру материала (а их практически невозможно передать за счет геометрии) и повышает естественность представленных на сцене объектов, и наоборот — неверное наложение текстур может испортить все впечатление. Поэтому в данном уроке мы рассмотрим различные методы проецирования текстур.

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

Под проецированием карт (Mapping) понимают определение положения и ориентации текстурной карты на объекте, а также ее масштаб, особенности повторения и т.п. Без проецирования данные параметры наложения текстурной карты задаются по умолчанию, и совсем необязательно, что они будут установлены наилучшим образом. Исключением являются примитивы и объекты, построенные на базе NURBS-кривых, для которых правильное наложение текстурных карт определяется автоматически с учетом их геометрии. Кроме того, обычно не требуется проводить проецирование для трехмерных процедурных текстурных карт 3D Textures (например, для карт Marble или Wood), автоматически накладываемых с учетом осевой симметрии. А вот в случае полигональных объектов, наоборот, необходима тщательная настройка параметров проецирования (исходя из формы объекта), даже если они были построены на базе примитивов. Дело в том, что любые преобразования на базе подобъектов (масштабирование отдельных фрагментов, экструдирование граней и т.п.) тут же приводят к нарушению назначенных примитиву проекционных координат (координаты в ходе преобразований не перестраиваются), вследствие чего текстура будет наложена некорректно.

Основной задачей проецирования текстурных карт на поверхность объектов является присвоение объектам текстурных координат (UV-координат). Текстурные карты, так же как и сами объекты, описываются координатами, только для этой цели используются не координаты X, Y и Z, а соответствующим им координаты U, V и W. Данные координаты, в отличие от координат X, Y и Z, являются неявными, то есть не определяют точного положения текстур в пространстве, а лишь задают пропорции для их отображения. Координаты U и V изменяются в интервале от 0 до 1 и определяют центр вращения текстурной карты (рис. 1), а координата W изменяет проекцию отображения текстуры на 90°.

Рис. 1. Ориентация UV-координат

Рис. 1. Ориентация UV-координат

Текстурные координаты могут быть присвоены объекту несколькими способами. Самое простое — сгенерировать их автоматически, что обеспечивается включением флажка AsNormal при добавлении текстуры к материалу (рис. 2). Это так называемое параметрическое проецирование, которое используется в Maya по умолчанию. Данный вариант назначения текстурных координат очень удобен, так как автоматически обеспечивает оптимальное размещение текстур, но он работает лишь для примитивов и NURBS-поверхностей. Вдобавок при параметрическом проецировании возможности управления наложением текстуры достаточно скромны. Поэтому на практике данным вариантом проецирования обойтись можно далеко не всегда. Во-первых, из-за того, что параметрические текстурные координаты не могут генерироваться для моделей, построенных методом полигонального моделирования или на базе Subdiv-поверхностей. Во-вторых, при параметрическом проецировании все (включая второстепенные, никак не задействованные в анимации) элементы модели должны быть построены геометрически — это приводит к усложнению моделей и требует дополнительных компьютерных ресурсов. В то же время альтернативные варианты проецирования, помимо более точного управления процессом наложения текстурных карт, позволяют упрощать геометрическую структуру моделей, часть элементов которых (не важных с точки зрения анимации) становится возможным просто рисовать, а не создавать в виде подобъектов.

 

Рис. 2. Включение варианта наложения текстуры с автоматической генерацией проекционных координат

Рис. 2. Включение варианта наложения текстуры с автоматической генерацией проекционных координат

 

Альтернативным способом присвоения текстурных координат является внедрение текстур в виде проецируемых изображений (флажок AsProjection в диалоговом окне CreateRenderNode) или по трафарету (флажок AsStencil в окне CreateRenderNode). Данные варианты обладают большими возможностями в плане настройки параметров наложения текстуры и в комплексе позволяют текстурировать самые сложные поверхности.

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

Параметрическое проецирование

Как уже было отмечено, для примитивов и NURBS-поверхностей параметрические текстурные координаты при назначении текстур материалам в режиме AsNormal генерируются автоматически. Управление наложением текстурной карты при параметрическом проецировании осуществляется через узел place2dTexture, где можно регулировать такие параметры, как повторяемость (RepeatUV), смещение (Offset), угол наложения (Rotate UV) и др. Рассмотрим данный вариант проецирования на примере работы с тремя NURBS-примитивами: шаром, конусом и кубом (рис. 3). Вначале обеспечим отображение текстур в окне перспективы. Для этого включите режим аппаратного текстурирования, воспользовавшись командой Shading=>HardwareTexturing (Затенение=>Аппаратное текстурирование).

 

Рис. 3. Исходные примитивы

Рис. 3. Исходные примитивы

 

Откройте окно редактора материалов, создайте новый Blinn-материал и назначьте его всем трем примитивам. Выделите в окне Hypershade материал и установите наилучшее качество отображения текстур (иначе в окне перспективы они будут очень размытыми), выбрав в списке Texture Resolution свитка HardwareTexturing вариант Highest (рис. 4). Установите в поле Color для данного материала текстуру Checker, вызвав окно CreateRenderNode и удостоверившись, что переключатель присвоения текстурных координат установлен в положение AsNormal, и выбрав вариант Checker (рис. 5). Как видно, у всех трех примитивов текстура размещена корректно. Однако при необходимости ряд параметров ее расположения можно изменить. Для примера дважды щелкните на узле place2dTexture (рис. 6) — это приведет к открытию соответствующей вкладки в редакторе материалов (рис. 7). Уменьшите значения в полях RepeatUV до 2 — количество клеток в текстуре уменьшится вдвое (рис. 8). Установите значения параметров Offset равными 0,25 (рис. 9) — это приведет к смещению положения текстуры на 25% вправо и на 25% вверх относительно предыдущей позиции (рис. 10). Установите параметр Rotate UV равным 45 — на всех объектах ориентация текстурной карты изменится на 45° (рис. 11).

 

Рис. 4. Увеличение разрешения текстур при аппаратном текстурировании

Рис. 4. Увеличение разрешения текстур при аппаратном текстурировании

 

Рис. 5. Вид сцены после назначения материала с текстурной картой Checker

Рис. 5. Вид сцены после назначения материала с текстурной картой Checker

 

Рис. 6. Структура материала с выделенным узлом place2dTexture

Рис. 6. Структура материала с выделенным узлом place2dTexture

 

Рис. 7. Вкладка place2dTexture в редакторе материалов

Рис. 7. Вкладка place2dTexture в редакторе материалов

 

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

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

 

Рис. 9. Изменение положения текстурной карты

Рис. 9. Изменение положения текстурной карты

 

Рис. 10. Вид объектов после смещения текстурной карты

Рис. 10. Вид объектов после смещения текстурной карты

 

Рис. 11. Результат изменения ориентации текстурной карты

Рис. 11. Результат изменения ориентации текстурной карты

 

Откажитесь от всех только что проведенных в отношении узла place2dTexture изменений, активируйте узел Checker для данного материала и вместо одного из цветов (Color1 или Color2) установите текстурную карту Ramp, что приведет к заливке соответствующих клеток текстуры градиентом (рис. 12). Вновь активируйте в редакторе атрибутов узел place2dTexture и включите флажок MirrorV — в процессе повторения текстуры ориентация рисунка станет зеркально изменяться (рис. 13). А если после этого еще и увеличить значение параметров Offset и Rotate UV (рис. 14), то вырастет число повторений текстурной карты и изменится ее ориентация, что порой может приводить к получению интересных текстурных поверхностей (рис. 15).

 

Рис. 12. Результат назначения текстурной карты Ramp

Рис. 12. Результат назначения текстурной карты Ramp

 

Рис. 13. Вид объектов после включения режима формирования зеркального отражения текстурной карты

Рис. 13. Вид объектов после включения режима формирования зеркального отражения текстурной карты

 

Рис. 14. Параметры настройки узла place2dTexture

Рис. 14. Параметры настройки узла place2dTexture

 

Рис. 15. Вид объектов после изменения параметров наложения текстуры

Рис. 15. Вид объектов после изменения параметров наложения текстуры

 

Отметим, что на практике настройка параметров для узла place2dTexture используется не только для получения нужного варианта рисунка повторяющихся текстур на базе процедурных карт. Очень часто без них не обойтись при размещении растровых изображений, так как это самый простой способ добиться нужной их ориентации. Для примера создайте новую сцену с NURBS-кубом и масштабируйте его так, чтобы получился параллелепипед небольшой толщины (рис. 16). Текстурируйте его таким образом, чтобы используемая при текстурировании фотография размещалась в центре его верхней плоскости для создания иллюзии снимка в рамке. Вначале переключитесь в редактор материалов и создайте новый Blinn-материал с текстурной картой в виде растрового изображения на канале Color. Первоначально текстура окажется размещенной не совсем так, как нужно (рис. 17). Поэтому активируйте узел place2dTexture и измените ориентацию текстуры, введя для параметра RotateFrame (Поворот текстуры) значение 180. А затем установите левый и правый параметры Coverage (Область покрытия) равными 0,9, а оба параметра TranslateFrame (Смещение текстуры) — 0,05 (рис. 18). В итоге снимок будет иметь не только нужную ориентацию, но и благодаря обрамлению создастся иллюзия, что он находится в рамке, правда пока просто серой. Активируйте узел растрового изображения и измените по умолчанию установленный в поле Default Color серый цвет на любой другой или даже замените его текстурной картой (рис. 19). Теперь рамка будет иметь вполне подходящий для нее вид (рис. 20).

 

Рис. 16. Исходный параллелепипед

Рис. 16. Исходный параллелепипед

 

Рис. 17. Вид сцены сразу после назначения материала

Рис. 17. Вид сцены сразу после назначения материала

 

Рис. 18. Параметры настройки узла place2dTexture

Рис. 18. Параметры настройки узла place2dTexture

 

Рис. 19. Изменение цвета по умолчанию для растрового изображения

Рис. 19. Изменение цвета по умолчанию для растрового изображения

 

Рис. 20. Фотография в рамке

Рис. 20. Фотография в рамке

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

next

КомпьютерПресс 2'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
Популярные статьи
КомпьютерПресс использует