Первые шаги в Maya. Урок 18. Основы проецирования материалов
Проецирование в режиме AsStencil
Проецирование в режиме As Projection
Примеры наложения текстур с настройкой проецирования
Проецирование в режиме As Projection
Создание текстурных координат посредством внедрения текстур в виде проецируемых изображений используется как при текстурировании полигональных и Subdiv-моделей, не имеющих встроенных проекционных координат, так и при текстурировании NURBS-поверхностей, для которых UV-координаты генерируются автоматически. Данный вид проецирования обеспечивается при назначении текстур в режиме AsProjection (рис. 37), при этом текстура проецируется на поверхность в соответствии с выбранным типом проецирования и возможно осуществление более точной настройки наложения карт, что позволяет практически исключить искажения текстур при наложении. Это достигается путем более детальной настройки выбранного типа проецирования через параметры либо визуально с помощью изменения положения и ориентации узлов. Данный метод оптимален при использовании готовых текстурных карт, однако его может оказаться недостаточно при слишком сложных для текстурирования моделях (например, с множеством закругленных поверхностей, переходящих друг в друга через сглаженные ребра). Кроме того, использование данного метода, как правило, не позволяет создавать модели, раскрашенные вручную. В таких случаях приходится прибегать к более трудному в понимании методу проецирования — созданию развертки модели в редакторе проекционных координат UVTextureEditor. Он позволяет вручную нарисовать любую, самую замысловатую текстуру по готовой развертке, а затем разместить ее на поверхности объекта в соответствии с данной разверткой. Однако в этом уроке мы ограничимся визуальной настройкой проецирования и управлением особенностями наложения текстуры через параметры, а проецирование через UV-развертку мы рассмотрим в одном из ближайших уроков.
Рис. 37. Назначение текстурной карты в режиме AsProjection
К основным типам проецирования текстурных карт относятся следующие (рис. 38):
- Planar (Планарный) — производится по нормали к поверхности и применяется к любым плоскостям и подобным им объектам, часто служит основой для построения более сложного проецирования;
- Spherical (Сферический) — применим к объектам, форма которых близка к форме шара, и реализуется путем оборачивания текстуры вокруг сферы с формированием шва от одного полюса к другому и деформацией текстуры у полюсов;
- Cylindrical (Цилиндрический) — предназначен для объектов, имеющих цилиндрическую форму (вазы, бутылки, ножки стола и пр.). Данный тип проецирования обеспечивает оборачивание текстуры вокруг цилиндрической поверхности с образованием шва на стыке противоположных сторон текстуры;
- TriPlanar (Граневый) — реализуется путем наложения текстуры для каждой грани в отдельности и применяется чаще всего в отношении узорчатых текстур.
Рис. 38. Примеры объектов, имеющих разные типы проецирования
При поиске оптимального типа проецирования для конкретного объекта, как правило, предпочтение следует отдавать тому типу, форма узла place3dTexture которого близка к форме объекта, так как это обычно позволяет минимизировать или даже полностью избежать деформации текстуры. Однако далеко не всегда заранее можно с точностью сказать, какой из типов проецирования окажется лучше, ведь на практике форма отдельных объектов модели лишь с большой натяжкой может быть приближена к строго геометрической. Поэтому прежде чем принимать решение, стоит поэкспериментировать с разными типами проецирования и оценить, при каком из них степень деформации текстуры наименее заметна. Более того, если в сцене имеется несколько однотипных объектов, то совсем необязательно, что оптимальным для них будет один и тот же тип проецирования: возможны ситуации, когда один из них лучше смотрится, например, при цилиндрическом типе проецирования, а другой — при планарном.
Для первого эксперимента откройте сохраненное ранее изображение с цилиндром, текстурированным материалом с рисунком, внедренным в режиме AsStencil. Создайте новый материал, но на этот раз с текстурой, установленной в режиме AsProjection, и назначьте его цилиндру (рис. 39). Как видно из рисунка, текстура размещена совсем не так, как хотелось бы. Исправить ситуацию совсем несложно — достаточно изменить некоторые настройки проецирования. Но перед этим обратите внимание на структуру материала (рис. 40): в сравнении с материалом, имеющим текстуру с параметрическим проецированием, в нем появились узлы projection и place3dTexture. Первый отвечает за управление типами проецирования, а второй позволяет регулировать положение и ориентацию текстуры. Перейдем к коррекции положения и вида наложенного на цилиндр рисунка. По умолчанию для текстуры устанавливается планарное проецирование, однако в нашем случае материал наложен на цилиндр, а потому изменим тип проецирования на цилиндрический, активировав узел projection и установив в списке Proj Type (Типы проецирования) вариант Cylindrical (Цилиндрический) — рис. 41. Это приведет к тому, что текстура будет корректно растянута по поверхности, однако окажется все равно неверно расположенной (рис. 42). Поэтому требуется еще переместить узел place3dTexture (рис. 43), воспользовавшись инструментом Move Tool.
Рис. 39. Результат назначения материала с текстурой в режиме AsProjection с параметрами по умолчанию
Рис. 40. Структура материала с текстурой, назначенной в режиме AsProjection
Рис. 41. Установка цилиндрического проецирования
Рис. 42. Результат назначения объекту материала с цилиндрическим проецированием
Рис. 43. Перемещение узла place3dTexture
Теперь немного усложним задачу. Создайте новую сцену с двумя полигональными кубами и измените их параметры так, чтобы кубы превратились в параллелепипеды и при этом заметно отличались друг от друга по размерам (рис. 44). Создайте новый материал и установите для него на канале Color в режиме AsNormal в качестве текстуры растровое изображение (рис. 45), назначьте данный материал обоим объектам. Результат будет неутешительным (рис. 46) — в первую очередь в глаза бросаются две вещи: текстура не повторяется, а размеры кирпичей меняются в зависимости от размера объекта, чего быть не должно. Первую проблему устранить несложно — достаточно увеличить для узла place2dTexture значения в полях RepeatUV, например, до 5 (рис. 47).
Рис. 44. Исходные параллелепипеды
Рис. 45. Растровое изображение
Рис. 46. Вид сцены сразу после назначения материала в режиме AsNormal
Рис. 47. Результат увеличения повторяемости текстуры
Вторая проблема средствами параметрического проецирования неустранима, поэтому придется внедрять текстуру как проекцию. Создайте новый материал с той же самой текстурой на канале Color, но установите ее уже в режиме AsProjection. Первоначальная картина будет выглядеть еще хуже, чем при параметрическом проецировании (рис. 48). Активируйте узел place2dTexture и увеличьте повторяемость текстуры по обоим направлениям до 10 (рис. 49). Качество изображения улучшится, и на торцах текстура станет отображаться вполне нормально (рис. 50). Неверное отображение текстуры на основной поверхности объектов связано с тем, что по умолчанию устанавливается тип проецирования Planar, который не подходит в данном случае. Для изменения типа проецирования выделите узел projection (рис. 51) и в поле Proj Type установите для него вариант TriPlanar. Теперь текстура станет отображаться одинаково как на основных поверхностях, так и на торцах, причем размер кирпичей у обоих параллелепипедов окажется одинаковым (рис. 52). Сохраните сцену с полученным «кирпичным» материалом — позже мы к ней вернемся.
Рис. 48. Вид сцены сразу после назначения материала в режиме AsProjection
Рис. 49. Настройка параметров узла place2dTexture
Рис. 50. Результат настройки узла place2dTexture
Рис. 51. Выделение узла projection
Рис. 52. Результат применения типа проецирования TriPlanar
Примеры наложения текстур с настройкой проецирования
Мандарин на листе
Для начала попробуем текстурировать мандарин (рис. 53), который можно создать из полигонального шара, слегка деформированного путем смещения вершин назначенной ему пространственной решетки. Создайте новый Lambert-материал и установите для него на канале Color в режиме AsProjection растровое изображение (рис. 54). Назначьте материал мандарину. Установленное по умолчанию планарное проецирование текстуры не обеспечивает подходящего для данного объекта ее наложения (рис. 55), поэтому активируйте узел projection и измените тип проецирования на Spherical. Выделите узел place3dTexture и отрегулируйте его положение и ориентацию так, чтобы самое крупное из темных пятен на текстуре оказалось в том месте, где была плодоножка (рис. 56). По окончании для создания зернистости кожуры мандарина добавьте на канале Bump черно-белую текстуру (рис. 57). Возможный вид полученного в итоге текстурированного мандарина представлен на рис. 58.
Рис. 53. Исходный мандарин
Рис. 54. Растровое изображение для канала Color
Рис. 55. Вид объекта при планарном проецировании
Рис. 56. Изменение ориентации узла place3dTexture
Рис. 57. Растровое изображение для канала Bump
Рис. 58. Текстурированный мандарин
Теперь дополним сцену мандариновым листом, на котором и должен лежать сам плод, что несложно реализовать путем stencil-проецирования. Временно скройте на сцене все объекты, чтобы они не мешали работе. Создайте NURBS-плоскость с двумя path-областями, установив параметр Patches U равным 2, а Patches V — равным 1 (рис. 59). Переключитесь в режим работы с вершинами и сместите вниз вершины, лежащие на центральной линии, а также верхние и нижние вершины так, чтобы поверхность изогнулась подходящим для листа, в который мы ее сейчас превратим, образом (рис. 60). Создайте новый Lambert-материал и установите для него на канале Color растровое изображение листа (рис. 61 и 62). Верните прочим объектам сцены видимость (рис. 63). Активируйте узел stencil и исключите при отображении фоновый цвет (флажок Key Masking и параметр Color Key), а затем в качестве цвета по умолчанию установите тот же самый цвет, что является фоновым в сцене (параметр DefaultColor), — рис. 64. По окончании отрегулируйте размеры плоскости с листом и ее положение и получите примерно такой результат, как представлен на рис. 65.
Рис. 59. Исходная NURBS-плоскость
Рис. 60. Деформирование NURBS-плоскости
Рис. 61. Растровое изображение
Рис. 62. Первоначальный вид плоскости с листом при stencil-проецировании
Рис. 63. Вид сцены после добавления плоскости с листом
Рис. 64. Настройка параметров узла stencil
Рис. 65. Мандарин на листе