В предыдущих трех статьях цикла (см. рубрику "ИнфоБлок" нашего компакта) мы изучили нестандартный, но достаточно простой для начинающих разработчиков игр способ создания игровых моделей в редакторе 3D Max.
|
 
 Наложение текстуры
 Для дальнейшей работы нам потребуется дополнительный модуль к 3D Max — Texporter от турецкого программиста Cuneyt Ozdas, который можно совершенно бесплатно скачать по адресу www.cuneytozdas.com/software/max/texporter/index.htm или взять с нашего компакта.
|
 Модуль позволяет получить картинку проекционных координат выделенных полигонов. Используя затем этот рисунок как шаблон, можно создавать изображение текстуры данной части модели. Установка модуля очень проста. Нужно скопировать содержимое папок модуля в одноименные папки 3D Max. Установив сам плагин, нужно подключить справку к нему. Гораздо удобнее иметь ее под рукой и запускать из самого 3D Max. После того, как вы скопировали справку в папку Help, в файл plugin.ini в разделе [Help] нужно внести строчку следующего формата: название_справки=путь_до_файла_справки (у меня было Texporter=C:\3dsmax4\Help\texporter.chm). Чтобы запустить справку, необходимо зайти в меню Help/Additional Help и выбрать ее из списка.  
 Модуль Texporter располагается в разделе Utilities палитры инструментов. Чтобы найти модуль, нужно нажать кнопку More и поискать в списке доступных утилит. Удобства ради можно назначить Texporter на отдельную кнопку . Для этого достаточно нажать кнопку Configure Button Sets, найти в списке Texporter и перетащить его название из окна списка на любую кнопку справа. Старое название кнопки будет заменено на Texporter, и вы сможете запускать утилиту, используя эту кнопку.
|
 Чтобы воспользоваться модулем, придется преобразовать объект в тип Editable Mesh (Редактируемая сетка). После этой операции вернуться к сплайнам будет затруднительно, поэтому сохраните сначала объект в новом файле или работайте с копией. Итак, приступим к текстурированию.
 Выделяем голову модели, щелкаем по ней правой кнопкой мыши и выбираем из всплывающего меню команду Convert To: / Convert to Editable Mesh.
 Прежде чем использовать материалы, включающие в себя битовые карты, нужно получить координаты UVW. Для этого используем модификатор UVW Mapping. Этот модификатор позволяет получить проекции отображения координат на поверхность объекта нескольких типов.
|
 В параметрах модификатора выбираем тип проецирования Cylindrical. В группе Alignment отмечаем ось таким образом, чтобы верхнее и нижнее основания цилиндра совпадали с верхней и нижней частью головы (в моем случае это ось Х), и щелкаем по кнопке Fit . Теперь цилиндр (гизмо модификатора) охватывает объект полностью.  
 Переходим ко вкладке Utilities палитры инструментов. Запускаем Texporter (нажав на кнопку, если вы ее создали, либо выбрав плагин из списка доступных утилит). Настройки модуля можно оставить заданными по умолчанию (лучше сбросить флажок Mark Overlaps, отмечающий красным цветом скрытые поверхности). Чтобы начать процесс создания битмапа, нажимаем на кнопку Pick Object и щелкаем по интересующему нас объекту. Если все сделано правильно, то на экране появится индикатор, отображающий процесс преобразования. Если вы что-то сделали не так, то появится предупреждение. Проверьте в первую очередь, что в окошке Map Channel стоит номер канала, принятый в параметрах гизмо UVW Mapping. Должно получиться что-то вроде изображенного на рисунке.  
|
|
|
|
 При планарном проецировании гизмо имеет прямоугольную форму и точно соответствует размерам битовой карты. Такая форма проекции дает наименьшее искажение полигонов, которые расположены параллельно гизмо. Все другие будут в большей или меньшей степени (в зависимости от угла наклона к плоскости гизмо) искажены. При использовании планарного проецирования необходимо разбивать объект на отдельные участки и для каждого из них использовать свою собственную проекцию.  
 Начинаем с лицевой части. Переходим на уровень подобъекта Polygon и выделяем один за другим (щелкая по ним левой кнопкой при нажатой клавише Ctrl) полигоны, которые составляют на лице модели ровную поверхность. В группе Material заменяем ID номер материала на другой. Например, на "2". Чтобы убедиться, что ничего не пропустили, вызываете Material Editor (клавиша M) и, выбрав любой однотонный материал, назначаете его выделенным полигонам (кнопка Assign Material to Selection в Material Editor). Пропущенные полигоны станут хорошо заметны.  
 Выделяем пропущенные полигоны и меняем их ID номер. После доработки выбранная область должна быть абсолютно однотонной.
 Может возникнуть вопрос — на рисунке явно видны области, на которых полигоны расположены почти под прямым углом (например, в области глазниц). Значит, в этом месте будет значительное искажение накладываемой текстуры. Это вполне допустимо. Можно поступить иначе и исключить эти области из создаваемой карты. Рассматривать их как отдельные и делать для них свои собственные карты проецирования. Тогда искажения будут минимальны. Но в данном случае, что называется, игра не стоит свеч. К глазницам игровых персонажей геймеры обычно не присматриваются.  
 Перед тем как применить модификатор UVW Mapping, необходимо выделить область, к которой мы собираемся его применять. Назначив лицевой области собственный ID номер материала, это легко сделать с помощью кнопки Select By ID (Modify/Editable Mesh/Polygon/Surface Properties, группа Material). В появившемся диалоговом окне Select By Material ID введите номер присвоенного области ID (в моем случае "2"). Все полигоны с таким материалом будут выделены. В списке доступных модификаторов выбираем UVW Mapping. Выбираем тип подобъекта — Gizmo. В плавающей панели Parameters отмечаем тип проецирования — Planar.
|
|
|
 В группе Alignment отмечаем плоскость гизмо таким образом, чтобы она "смотрела" на выделенную область. Нажимаем кнопку Fit, что приведет размеры прямоугольника гизмо в соответствие с размерами лицевой части модели.
 Настало время прибегнуть к модулю Texporter. Запускайте его. Настраивать его будем несколько по-иному. Первая проблема заключается в том, что неясно, какой размер вводить в поле Image Size. Размер вводится в пикселях, поэтому заданный по умолчанию 800х400 нас сейчас не устраивает. Модификатор UVW Mapping используется, когда известен точный размер битовой карты. Мы поступим наоборот, используем его для того, чтобы битовую карту получить. Определять размер битовой карты придется экспериментально, руководствуясь пропорциями (примерным отношением длины и ширины) гизмо UVW Mapping и необходимой детальностью текстуры в области проецирования.  
|
 Исходя из этих соображений, я установил размер карты в 512х420. В следующей группе, UVW Channel, должен быть установлен тот канал карты, который вы определили для модификатора UVW Mapping. В моем случае здесь прописано "1".
 Если вы перепутаете канал, то, попытавшись получить с помощью Texporter визуальное отображение карты, получите предупреждение о том, что ее не существует. Вернитесь во вкладку Modify и проверьте соответствие номера канала карты.  
 В группе Display отмечаем только Ploygon Fill (это опечатка разработчика модуля), Edges/Edges Only, Only Selected и Backface Cull. В группе Colorize by — Smooth Colors и Constant.
 Когда последние приготовления закончены, нажимаем кнопку Pick Object и щелкаем левой кнопкой мыши на области отображения. После обработки на экран будет выведена карта проекции.
 На карте могут быть дыры. Они образованы полигонами, имеющими другой номер ID материала. Однако если вы вернетесь во вкладку Modify и попытаетесь найти там этот номер, вас ждет разочарование. На модели полигон имеет правильный ID номер. Искать "нарушителя" нужно на противоположной стороне модели! Карта зеркально перевернута по горизонтали.  
 Полученное изображение сохраняем. Формат файла значения не имеет. Сцену в 3D Max тоже сохраняем в новый файл. Если вы вернетесь сейчас во вкладку Modify и что-нибудь там измените, то координаты проецирования могут быть утеряны. Полученный рисунок уже не будет отображать карту UVW Mapping, и все придется переделывать.
|
|
 Рассмотрим основные моменты рисования текстур. Получив плоскую карту и сохранив ее как Planar1.tga, загружаем ее в Adobe Photoshop (я пользовался версией 5.5). Нужно, чтобы полученная карта была представлена в Adobe Photoshop как один из слоев, а не фоном (Background), как в Planar1.tga. Выделяете на фоне с помощью инструмента Polygonal Lasso Tool карту, копируете ее в новый слой, на фоновом слое закрашиваете оригинал.
 Основной рисунок текстуры можно нарисовать вручную, сфотографировать или взять из библиотеки бесплатных текстур. Я нашел подходящую текстуру металлического листа форматом 756х512х16 и поместил его в файл карты в качестве нового слоя.  
 Меняем порядок следования слоев таким образом, чтобы новый слой находился ниже слоя с картой.
|
 Нарисовав текстуру для лицевой части, сохраняем ее, используя команду меню File/Save a Copy, как файл формата .tga с 16-битным цветом.
 
 Маски-шоу
 Наложим полученную текстуру на модель. Возвращаемся в 3D Max, загружаем сохраненную ранее сцену и вызываем редактор материалов, нажав на панели инструментов кнопку Material Editor (М). Щелчком мыши выбираем одну из ячеек Material Editor, называем как-нибудь новый материал (например, Lic_1), выбираем модель раскраски в списке Shading свитка Shader Basic Parameters (я выбрал Metal) и раскрываем пункт Maps.
 Ставим флажок напротив параметра Diffuse Color и щелкаем по кнопке None (справа). В появившемся диалоговом окне Material/Map Browser выбираем тип карты замещения этого параметра — Bitmap. Diffuse Color определяет основной цвет материала.  
 Вам будет предложено выбрать файл карты текстуры. Выбираем сохраненную карту. Вид материала в ячейке редактора изменится соответствующим образом. В свитке параметров растровой карты Coordinates устанавливаем номер канала MapChannel, который определили для UVW Mapping.
|
|
 Развернув модель так, чтобы видеть результат наложения текстуры, выполняем пробную визуализацию (Rendering/Render...).
 Если результат устраивает, сохраняем сцену.
|
 Переходим к следующему участку. Опять выделяем часть модели и применяем к ней модификатор UVW Mapping.  
 Назначаем новый номер ID материала и Map Channel (в группе Material из Modify/Editable Mesh/Polygon/Surface Properties), отличные от установленных для лица. Везде, где будет встречаться значение Map Channel, нужно устанавливать новое значение.
 Осталось только повторить все описанные операции для оставшихся частей модели.
 Нюансы
 Далеко не всегда нужно использовать для растровой карты проекционную картинку. Если выделенный участок малозначительный, можно обойтись текстурой прямоугольной формы. Материал с такой текстурой назначается выделенному участку, после чего ее можно двигать (Select and Move), разворачивать (Select and Rotate) и трансформировать (Select and Manipulate), используя гизмо UVW Mapping.  
 Помимо карты диффузного отражения, часто используется карта рельефа (Bump). В качестве нее можно брать тот же файл текстуры, что и для Diffuse. Это улучшает внешний вид объекта.  Также разрешено использовать многокомпонентный материал и включать в него другие материалы, используемые в различных частях сложного объекта.
 * * *
 Мы проделали огромную работу. Работу, которой может позавидовать и профессионал. Мы создали настоящий — не виртуальный — макет головы. Мы сделали станок для нарезания слоев (станок можно использовать для нарезания любых заготовок), с помощью которого распилили макет на пласты. Пласты мы оцифровали в 3D Max, получив продольные сплайны. Мы сшили сплайны в объемную заготовку и затекстурировали полученный каркас. Перед нами — законченная модель головы.
|
|
|