Лабораторная работа № 11

Тема: Основы проецирования материалов в 3 D Studio MAX

Цель: рассмотреть основы проецирования материалов в 3 D Studio MAX

Практическая работа

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

Под проецированием карт (Mapping) понимают определение положения и ориентации текстурной карты на объекте, ее масштаб, особенности повторения и т.п. Без проецирования данные параметры наложения текстурной карты задаются по умолчанию, и совсем необязательно, что они будут наилучшими. Исключением являются примитивы и объекты, полученные при использовании некоторых техник моделирования (лофтинг, выдавливание, вращение и т.д.), для которых правильное наложение любых текстурных карт определяется автоматически с учетом их геометрии. Кроме того, не требуется проводить проецирование для трехмерных процедурных карт 3D Maps (например, для карт Noise и Marble), автоматически налагаемых с учетом осевой симметрии и в случае установки текстурных карт для каналов Reflection (Отражение) и Refraction (Преломление) благодаря применению в данных каналах особой системы картографии.

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

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

Текстурные координаты могут быть присвоены объекту несколькими способами. Самое простое — сгенерировать их автоматически, что обеспечивается включением параметра объекта Generate Mapping Coordinates (Генерировать координаты наложения текстуры). Однако это возможно только для примитивов и объектов, полученных с применением модификаторов Extrude, Lathe и Bevel (для них координатная привязка включена по умолчанию), а также объектов, созданных путем лофтинга (для них координаты проецирования генерируются автоматически, на основании осевой геометрии), — это так называемое параметрическое проецирование. Оно очень удобно, поскольку при минимуме усилий обеспечивает корректное отображение текстуры, но возможности управления наложением текстуры при параметрическом проецировании весьма скромны. На практике параметрическим проецированием, как правило, не удается обойтись по многим причинам. Во-первых, параметрические текстурные координаты могут генерироваться далеко не для всех объектов — например модели, построенные методом полигонального моделирования (что на практике используется очень часто), так не оттекстурировать. Во-вторых, данный метод присвоения текстурных координат не позволяет применять разные параметры наложения одной и той же карты для различных объектов или частей одного и того же объекта. В итоге для текстурирования, по сути, одним и тем же материалом простейшей модели, состоящей из нескольких текстур подобъектов, требующих разного подхода к наложению, потребуется создавать соответствующее число материалов, что на порядок усложнит сцену, потребует существенно больших ресурсов оперативной памяти для визуализации и немалого дополнительного места на диске. В-третьих, при параметрическом проецировании все элементы модели, включая второстепенные, никак не задействованные в анимации, должны быть построены геометрически, что приводит к еще большему усложнению моделей и требует дополнительных компьютерных ресурсов. В то же время альтернативные варианты проецирования, помимо более точного управления процессом наложения текстурных карт, позволяют упрощать геометрическую структуру моделей, часть элементов которых (не важных с точки зрения анимации) можно просто нарисовать, а не создавать в виде подобъектов.

Одним из альтернативных (и более простым в использовании) способов присвоения текстурных координат является применение модификатора UVW Map (UWV-карта). С его помощью несложно создать координаты наложения текстур для объектов, которые не могут их генерировать самостоятельно, и осуществить более точную настройку наложения карт, а именно — применять разные типы проецирования для различных подобъектов модели с более детальной настройкой выбранного типа через особые параметры и/или с помощью гизмо (gizmo) модификатора UVW Map. Данный метод оптимален при использовании готовых текстурных карт, однако его применение может оказаться недостаточным при слишком сложных для текстурирования моделях (например, с множеством закругленных поверхностей, переходящих друг в друга через сглаженные ребра). Кроме того, данный метод, как правило, не позволяет создавать модели, раскрашенные вручную.

В таких случаях приходится прибегать к более трудному для понимания методу проецирования — созданию развертки модели с помощью модификатора Unwrap UVW (Развертка UVW). Он позволяет разместить текстуру на поверхности объекта в соответствии с полученной разверткой, то есть как бы разрезать ее на части и наложить на модель, где-то повернув, растянув или, наоборот, сжав. В итоге появляется возможность не только найти идеальный вариант размещения текстуры с минимальными ее искажениями, но и вручную нарисовать любую, даже самую замысловатую текстуру по готовой развертке.

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

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

Для примитивов параметрические текстурные координаты генерируются автоматически — благодаря тому, что флажок Generate Mapping Coordinates (Генерировать координаты наложения текстуры) включается по умолчанию, что и обеспечивает корректную визуализацию текстуры (рис. 2). Все остальные типы объектов, теоретически допускающих использование параметрических координат (редактируемых сплайнов, объектов вращения, выдавливания и пр.), создаются при отключении данного флажка (рис. 3). Поэтому у них для правильного отображения текстур на панели Modify включается возможность автоматического генерирования координат наложения карты при присвоении материала с наложенными текстурными картами (рис. 4), либо применяются другие методы наложения текстурных координат.

Рис. 2. Шар и соответствующая ему панель Modify (флажок Generate Mapping Coordinates включен)

Рис. 3. Спиралевидный сплайн и соответствующая ему панель Modify (флажок Generate Mapping Coordinates выключен)

Рис. 4. Спиралевидный сплайн и соответствующая ему панель Modify (флажок Generate Mapping Coordinates включен)

Управление наложением текстурной карты при параметрическом проецировании осуществляется через свиток Coordinates (Координаты) данной карты, где можно регулировать такие параметры, как смещение (Offset), повторяемость (Tiling) и угол наложения (Angle). Рассмотрим данный вариант проецирования на примере работы с тремя примитивами: шаром, цилиндром и кубом (рис. 5). Выделите все три объекта и откройте окно редактора материалов, щелкнув на клавише M.

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

Выделите первый слот, откройте свиток Maps (Текстурные карты) и установите на канале Diffuse Bitmap-карту, выбрав в качестве нее произвольный графический файл, назначьте созданный материал всем трем объектам и проведите рендеринг (рис. 6). Видно, что наложение материала прошло корректно благодаря встроенному параметрическому проецированию. В этом можно убедиться, выделив любой из примитивов и открыв панель Modify, — флажок Generate Mapping Coords (Генерировать координатную привязку) окажется включенным (рис. 7).

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

Рис. 7. Шар в режиме редактирования с включенной координатной привязкой

Чтобы сориентироваться в отношении возможностей управления наложением текстурной карты в окне редактора материалов, откройте свиток Coordinates и установите значения параметров U Offset и V Offset равными 0,25 (рис. 8) — это приведет к смещению положения текстуры на 25% вправо и на 25% вверх относительно предыдущей позиции (рис. 9). Установите спиннер параметра Angle для всех трех текстурных координат в 45° — на всех объектах изменится ориентация текстурной карты (рис. 10). Откажитесь от всех только что сделанных изменений и включите флажок Mirror для координаты V — на каждой поверхности объектов, помимо исходной текстуры, появится ее зеркальная копия (рис. 11). А если увеличить значение параметра Tiling, то вырастет и число повторений текстурной карты на каждой поверхности объекта, что иногда приводит к получению интересных текстурных поверхностей (рис. 12 и 13).

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

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

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

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

Рис. 12. Параметры настройки положения и вида карты в свитке Coordinates

Рис. 13. Вид объектов после изменения параметров свитка Coordinates