Волшебный мир текстур. Чудо модификации
В предыдущей статье цикла “Волшебный мир текстур” мы отработали текстурирование лапы монстра (пример неровной поверхности), а также затекстурировали каркас дома (пример модели, состоящей из небольшого числа простых геометрических фигур). В обоих случаях мы использовали модификатор UVW Map ( Карта UVW ). UVW Map достаточно удобен, если вы разрабатываете простую игру и не собираетесь хранить текстуры в едином архиве. Если же вы работаете над масштабным проектом и текстуры планируете паковать в единый архив, то модификатор Карта UVW не подходит, потому что не умеет работать с большими архивами. По этой же причине UVW Map не годится для создания аддонов и модов к большинству популярных игр. Например, в Quake III Arena , Counter-Strike , UT2003 все текстуры хранятся в едином архиве. В этих случаях художнику по текстурам на помощь приходит модификатор Unwrap UVW ( Развертка UVW ). Сегодня мы разберемся, как работает этот модификатор, как создать объемные текстуры и сделать из прозрачными при помощи альфа-канала. Попутно изучим, как создавать изогнутые поверхности и делать плавные переходы между текстурами в месте их стыковки. Танк на тропе войны **
Стандартные примитивы
** Прежде чем углубляться в тонкости использования модификатора, поставим перед собой простую задачу: смоделировать и затекстурировать низкополигональный танк для игры в жанре стратегии. Колеса и гусеницы танка мы моделировать не будем, а заменим их текстурой — в стратегии этот графический недостаток почти не заметен, а вот прирост в скорости будет ощутимым.
Модель танка
Если вы уже моделировали в 3D Max, создать простую модель танка не составит для вас никакого труда. Если же нет, то вот пара советов: начните моделировать с простого Параллелепипеда ( Box ) из набора стандартных примитивов ( Standard Primitives ) с небольшим числом сегментов по длине/ширине/высоте. Преобразуйте в тип Editable Mesh ( Редактируемый каркас ) и далее, передвигая точки каркаса и вытягивая полигоны ( Extrude ), создайте модель, напоминающую танк: корпус, гусеницы, башню, дуло пушки и люк на башне.
Сетка — каркас модели
Когда модель танка полностью готова, можно накладывать на нее текстуры. Есть несколько плагинов (дополнительных модулей к 3D Max), таких как Texporter и Unwrap Object Texture , позволяющих развернуть проекции координат модели и сохранить их в отдельный графический файл. После этого текстуры накладывать несколько проще. Сегодня мы в такие тонкости вдаваться не будем. Плагины мы рассмотрим в одном из ближайших номеров “Мании”: какие из них стоит использовать при создании игры, а какие подходят только для высокополигональной анимации. Сегодня же обойдемся стандартными средствами 3D Max. Боевая раскраска Откройте любой графический редактор. Лучше всего — Adobe Photoshop. Создайте в нем jpg-файл размером 512х512 пикселей. В прошлый раз мы уже говорили, что чаще всего используется в играх формат TARGA ( tga ), но он занимает больше места на диске, и необходимости использовать его сейчас нет.
Текстура танка
Самое время вспомнить, какие плоскости есть на модели танка и какие текстуры каким плоскостям больше всего подходят. Корпус танка должен быть сделан из стальной ржавой брони, колеса должны быть черными от грязи, люк — отполирован. Все эти элементы надо нарисовать или воспользоваться уже готовыми текстурами из любого бесплатного набора. К реализму мы пока не стремимся, поэтому вполне подойдут текстуры металла и ржавчины из стандартного набора Photoshop. Обратите внимание: крупные элементы (корпус) на текстуре занимают больше места, чем мелкие (люк), чтобы детализация была везде одинаковой и не было эффекта растянутости и смазанности. Сохраните готовую текстуру и откройте в 3D Max сцену с танком. Наложение текстуры **
Выбор модификатора.
Включите редактор материалов, нажавMна клавиатуре, выберите вкладкуMaps**( Карты ) и напротив каналаDiffuse( Диффузный цвет ) щелкните по длинной кнопкеNone( Пусто ). Откроется диалоговое окноMaterial/Map Browser( Просмотрщик материалов/текстур ). Поставьте в группеBrowse from( Искать в ) переключательNew( Новый ), а в списке слева выберитеBitmap( Растр ). Программа предложит вам указать путь к созданной вами ранее текстуре танка. Когда текстура загрузится, просто выберите танк и нажмитеAssign Material to Selection, присвоив ему новую текстуру. Также в редакторе материалов нажмите кнопкуShow Map in Viewportдля того, чтобы отобразить текстуру в окнах проекций. Текстура не отобразится до тех пор, пока вы не настроите координаты текстуры. Воспользуйтесь модификаторомUnwrap UVW. Выберите его из списка модификаторов — в окне проекции появится текущая текстура… но наложена она неправильно. Нажмите на плюсик рядом с названием модификатора в стеке и выберите подуровеньSelect Face ( Выбор грани ).
Выбор грани.
Щелкните по одной из граней танка (например, по верхней части корпуса) — она станет красной. Для настройки координат проецирования текстуры нажмите кнопку Edit ( Редактировать ) в свитке Parameters ( Параметры ) модификатора Unwrap UVW. Откроется окно Edit UVWs , в котором видна текстура танка и координаты текстуры. Чтобы отображались координаты только выбранной грани, включите кнопку Filter Selected Faces внизу этого окна. Координаты выбранной грани отображаются красными точками и линиями, их связывающими.
Настройка координат текстуры
С помощью кнопки Move ( Двигать ) в окне переместите точки координат в ту область текстуры, где расположено изображение корпуса. В итоге текстура на верхней части корпуса будет расположена нужным образом. Выберите следующую грань танка и настройте координаты текстуры для нее. Повторите эту несложную операцию для всех граней. Можно выбрать сразу несколько граней, щелкая по ним и удерживая при этом клавишу Ctrl. Если вы случайно выбрали лишнюю грань, то щелкните по ней, удерживая клавишу Alt. После того как вы закончите процесс настройки координат текстур (мэппинг), танк готов к покорению виртуальных миров._
Тяжелый танк
_ Прозрачность Броня танка — пример текстуры, в которой нет необходимости использовать прозрачные области. Но как поступить, если, например, нужно нарисовать дырку во флаге или обгоревшие обломки техники? Если речь идет об игровой текстуре, то чаще всего применяется формат tga с альфа-каналом. Альфа-канал — это черно-белый слой, позволяющий программе распознать, какие участки текстуры будут прозрачными, а какие — нет. Возьмем простой пример — вам необходимо создать азвевающийся на ветру флаг с обгоревшими краями и выгоревшей дыркой в центре.
Танк в действии
Подготовьте две текстуры одного размера. Первая будет цветной тканью флага, а вторая — черно-белой. Те участки альфа-канала, которые вы закрасите белым, будут полностью непрозрачны, а черные, наоборот, будут просвечивать. Включите 3D Max и создайте модель полотна флага и палки (древка). Для полотна подойдет плоскость ( Plane ) с большим числом сегментов и примененной объемной деформацией ( Space Wrap ) Wave ( Волна ). Древко — это обыкновенный цилиндр.
Заготовки текстур флага.
Если вы раньше не сталкивались с объемными деформациями, сделайте следующее. Создайте объемную деформацию Wave с нужными вам параметрами. Выберите плоскость с большим числом сегментов и нажмите кнопку Bind to Space Wrap (сверху на панели инструментов).
Объемная деформация Wave
После этого наведите указатель мыши на плоскость (указатель изменит форму), нажмите левую кнопку мыши и, удерживая ее, проведите пунктирную линию к объемной деформации. Если вы все сделали правильно, плоскость изменит форму и станет похожей на развевающийся флаг. Откройте редактор материалов, нажав M на клавиатуре. В свитке Maps ( Карты ) оптическому каналу Diffuse ( Рассеянный свет ) задайте тип Bitmap ( Растр ) и укажите файл flag.jpg (изображение ткани флага). Аналогичным образом оптическому каналу Opacity ( Непрозрачность ) задайте тип Bitmap и укажите файл opacity.jpg ( Черно-белая карта ). Если при визуализации изображения появилась рамка, очерчивающая края текстуры, измените тип фильтрации ( Filtering ) канала Opacity на None (в свитке Bitmap Parameters ). Отражение и преломление Наиболее зрелищные эффекты можно получить с применением отражающих поверхностей. К ним относятся зеркало, водная гладь и хорошо отполированная поверхность, покрытая лаком.
Применение объемной деформации
В 3D Max предусмотрено три способа создания эффекта отражения: Flat Mirror ( Плоское зеркало ), Reflect/Refract ( Отражение/Преломление ) и Raytrace ( Трассировка лучей ). Последний способ используется наиболее часто, он же наименее ресурсоемкий и дает максимальную точность при текстурировании. Но если отражающая поверхность плоская, то вполне подойдет Flat Mirror. Рассмотрим простой пример. Создайте плоскость — пусть это будет гладь воды или зеркало. Создайте еще несколько объектов, которые будут отражаться в зеркале. Это могут быть ландшафты или простые примитивы: сфера, куб.
Откройте редактор материалов и в свитке Maps щелкните по кнопке None напротив канала Reflection ( Отражение ). В открывшемся окне укажите Flat Mirror и нажмите ОК. Станут доступны параметры отражающей поверхности, главной из которых является степень размазанности (Blur). По умолчанию стоит значение 1.0. Если вы создаете не зеркало, а воду, увеличьте значение параметра на 2–3 единицы. Присвойте готовый материал отражающей плоскости, выбрав ее и нажав кнопку Assign Material to selection в редакторе материалов. Если вы хотите сымитировать лупу, которая увеличивает изображение, или стакан воды с эффектом преломления лучей, необходимо использовать карту Reflect/Refract или Thin Wall Refraction ( Тонкостенное преломление ). Для того чтобы привести все это в действие, нужно в свитке Maps в редакторе материалов щелкнуть по кнопке None напротив канала Refraction и выбрать соответствующий тип карты. Степень преломления устанавливается в настройках параметров карты. Рельефность Во всех рассмотренных выше случаях текстуры будут выглядеть более реалистично, если сделать их рельефными. За это отвечает канал Bump. Например, при создании игры вам нужно создать реалистичную кирпичную стену. Можно моделировать каждый кирпичик отдельно, отдельно его текстурировать, встраивать в каркас стены. Но, во-первых, это долго, а во-вторых, для обработки потребуется очень мощный компьютер. Более простой способ добиться реалистичности — нарисовать текстуру с эффектом рельефности. Откройте редактор материалов. В свитке Maps каналу Diffuse установите красную или белую текстуру, а каналу Bump ( Рельефность ) — карту типа Bricks ( Кирпичи ). Значение счетчика рядом с каналом соответствует силе влияния канала, то есть чем она больше, тем сильнее кирпичи будут выступать из стены. Если поставить отрицательное значение, кирпичи получатся вдавленными в стену. Точно так же вы можете имитировать потертости, трещины, выбоины и другие неровности поверхности, не прибегая к усложнению геометрии. *** В следующей статье цикла мы продолжим изучать удивительный мир текстур для трехмерных моделей и создадим полностью готовый к использованию 3D-ландшафт для гоночной аркады и стратегии.