Текстурирование отдельного объекта. Упрощенная текстура

СОДЕРЖАНИЕ: При созданиии фотореалистичных изображений при помощи редактора 3ds max обязательно используется такой метод как текстурирование

Текстурирование отдельного объекта. Упрощенная текстура.

Содержание:

1. Введение

1.1. Простое текстурирование.
1.2. Сложное текстурирование
2. Заключение

1. Введение

При созданиии фотореалистичных изображений при помощи редактора 3DS MAX обязательно используется такой метод как текстурирование.

Что же такое текстурирование?


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

рис. 1

Координата W изменяет проекцию отображения текстуры на 90 градусов (используется крайне редко).

Если речь идет о параметрических примитивах (те, которые присутствуют в Максе как самостоятельные объекты), то нужно отметить, что все они уже идут с наложенными текстурными координатами, о чем говорит отмеченный чек бокс Generate Mapping Coords. Это так называемое параметрическое проецирование. Кроме стандартных и расширенных (Extended) примитивов, такое проецирование координат возможно и в некоторых модификаторах (например, Loft, Extrude, Lathe). Недостатком такого рода проецирования является то, что повторяемость (tiling) и ориентацию в пространстве текстур можно настроить только при помощи параметров материала (в редакторе материалов), назначенного поверхности. Иначе говоря, такие проекционные координаты не управляются и имеют коэффициент повторения равный 1. Есть еще один довод не в пользу такого способа - при проецировании каждая грань требует минимум 12 байтов памяти, поэтому при больших сценах или в случае со слабым компьютером нужно включать их либо в конце работы, либо тогда, планируется разрушать стек модификаторов.

Обратимся к практическим примерам. Построим плоскость и присвоим ей какую-нибудь текстуру (используется представленная на рис.1). В итоге получиться что-то похожее на рис. 2.

рис. 2

В данном случае использовалось планарное проецирование. Это проецирование применяется по нормали к поверхности, что производит неискаженное проецирование. Планарное проецирование является наиболее распространенным методом проецирования. Часто на его основе строится более сложное проецирование. Примером такого проецирования может служить примитив Box, с его проекционными координатами по умолчанию. Это ни что иное как планарное проецирование, примененное с шести сторон (рис.3).

рис. 3

Каждая сторона куба самостоятельно отображает присвоенную текстуру. Такой тип отображения проецированных координат на поверхность называется прямоугольным или Box.

Следующий тип проецирования - это цилиндрическое проецирование. Как явствует из названия, такое проецирование отображает свои координаты из центра - наружу в бесконечность. Наложение текстуры происходит как оборачивание листа бумаги вокруг цилиндра. При таком подходе всегда есть шов на стыке противоположных сторон текстуры (рис.4, обозначен пунктирной линией).

рис. 4

Еще один тип проецирования - это сферическое проецирование. Оно отображает свои координаты из центральной точки во все направления (рис. 5).

рис. 5

Текстура оборачивается вокруг сферы и имеет шов от одного полюса к другому. Для того, чтобы при сферическом проецировании текстурная карта казалась неискаженной на экваторе (т.е. в середине) нужно использовать соотношение сторон 2:1.

Итак это три основных типа проецирования текстурных координат на поверхность объектов, если открыть модификатор UVW Mapping, то можно обнаружить там еще три типа проецирования - Srink Wrap, Face и XYZ to UVW, но они применяются очень редко.

Текстурирование также бывает двух типов: сложное и простое.

Рассмотрим сначала простое.

1.1. Простое текстурирование.

Самым важным в наложении текстурных координат является правильный выбор типа проецирования. Подход к выбору типа проецирования прост - он должен максимально подходить по форме к тому объекту (или его части) на который накладывается. Логично предположить, что для текстурирования бутылки больше всего подходит цилиндрическое проецирование. Допустим нужно прикрепить к бутылке этикетку. Для этого строится плайн профиля бутылки и при помощи модификатора Lathe создается сама поверхность (рис. 6).

рис. 6 рис. 7

Если присвоить бутылке текстуру этикетки, то она распределиться по всей поверхности объекта т.к. в данном случае используются текстурные координаты, сгенерированные модификатором Lathe (рис. 7).

Для того, чтобы получить контроль над текстурными координатами объекту присваивается модификатор UVW Mapping с цилиндрическим типом маппинга. Ось выравнивания здесь - Х. Кроме того, нужно нажать кнопку Fit, для того чтобы гизмо проекции максимально точно повторило поверхность бутылки (рис. 8).

рис. 8

Далее для более точного контроля над гизмо проецирования, нужно нажать на плюсик рядом с названием модификатора, в результате чего появится возможность выбора гизмо и более точной настройки его положения в пространстве. Теперь надо смасштабировать гизмо по вертикали (уменьшить параметр Height) так, чтобы придать этикетке ее реальный размер и передвинуть гизмо на место положения этикетки на бутылке. По умолчанию текстура тайлится, т.е. повторяется, поэтому нужно зайти в редактор материалов и отключить у текстуры параметр Tile (рис. 9).

рис. 9

Теперь этикетка стоит на месте, но все еще обернута вокруг всей бутылки. Чтобы этого не происходило следует увеличить параметр Tiling (например 2.5 см. рис. 9). Речь у нас идет об основах наложения текстурных координат, поэтому не стоит в подробностях описывать создание текстуры, можно лишь предложить дерево материала (рис. 10).

рис. 10

В качестве основного материала использовался Blend, где подматериалами выступают стандартный материал с картой Raytrase для материала стекла, а второй материал - это сама этикетка. Взаимное отображение материалов на объекте управляется при помощи маски Gradient Ramp (на самом деле это просто прямоугольник белого цвета по форме этикетки). На рис. 11 представлен рендер с предполагаемыми материалами.

рис. 11

Можно разобрать еще один простой пример, который позволит понять как можно не прибегая к сложным настройкам наложения текстурных координат присвоить части объекта текстуру. Для этого следует воспользоваться стандартным примитивом Box. Предположим, что нужно каждой стороне этого бокса присвоить свою текстуру (по умолчанию всем плоскостям бокса присваивается одна текстура).
Первое, что нужно сделать - это добавить в стек модификатор Edit Mash. Это нужно для того, чтобы получить контроль над полигонами. Далее, если на уровне подобъектов Poligon (рис. 12) выбирать какую-нибудь плоскость, в разделе Material можно увидеть присвоенный ей ID.

рис. 12

По умолчанию 6 плоскостям бокса будут присвоены идентификаторы от 1 до 6. Можно выделить один или группу полигонов и присвоить им новый ID, например 7.
Создав мультиматериал (Multi/Sub-Object) с количеством подматериалов по количеству присвоенных объекту (рис.13), нужно наложить его на бокс.

рис. 13

В итоге получается местное текстурирование на основе ID материала (рис.14).

рис. 14

На самом деле этот простой принцип наложения текстур используется довольно часто. Например таким образом можно было бы в предыдущем примере наложить этикетку на бутылку, достаточно только выделить область, которую будет занимать будущая этикетка и присвоить ей новый идентификатор материала.

1.2. Сложное текстурирование

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

В качестве примера модель ослика. Здесь рассматривается возможность текстурирования объектов не прибегая к помощи сторонних программ, а только средствами самого Макса.


Итак, на рис.1 представлена модель с которой будем работать.

рис. 1

Прежде чем переходить непосредственно к текстурированию модели, нужно провести предварительный анализ модели. Это необходимо как минимум по двум причинам: первая - это для того, чтобы понять на какое минимальное количество элементов (групп выделения) нужно разбить объект для применения к этим группам стандартных типов проецирования и вторая причина кроется в том, что нужно определиться с количеством материалов, которые будут использоваться в данном объекте.

Поясним эти две причины подробнее.

Логично предположить, что любой сложный предмет можно разложить на более простые. К примеру, если есть модель деревянной стремянки, и не один их известных типов проецирования текстурных координат не даст желаемого результата, то стоит ее разделить на две вертикальные жерди и некоторое количество поперечных ступенек, как сразу становится очевидным возможность применения прямоугольного (Box) текстурирования, которое как нельзя лучше будет отвечать требованию формы составляющих лестницу деталей.

В качестве примера для второй причины, можно взять модель персонажа одетого в шорты и майку. Опять же очевидным будет тот факт, что как минимум 3 текстурных карты: голова, майка и шорты (учитывая обувь, текстуру рук, ног и деталей головы может быть и больше). Есть два подхода к созданию материала для модели: модель может иметь один материал с одной текстурой, на которой расположены сразу все текстурные элементы (голова, майка, шорты и т.д, второй - это мультиматериал, в котором объект разделяется на несколько ID материала и позволяет работать с отдельным материалом (например, при замене текстуры майки, не придется менять всю текстуру модели). Второй подход позволяет более гибко работать с отдельными материалами и применять процедурные карты, что очень проблематично в первом варианте, а в некоторых случаях просто невозможно.

Теперь перейдем к нашей модели. Предположительно можно разбить модель на 6 частей по форме, близкой к стандартному типу проецирования: основание (планарное), тело (цилиндрическое), ноги (цилиндрическое), голова (сферическое), уши (планарное), грива (сферическое). Далее есть два пути: для выделенных частей модели, последовательно добавлять в стек модификатор Mesh Select и UVW Mapping, по типу наложения соответствующий выделенной геометрии, а так же более прямой путь - сразу применить модификатор Unwrap UVW и все действия по наложению текстурных координат проводить только в нем. В данном примере показывается смешанный способ: когда работа ведется попеременно то в одном, то в другом модификаторе.

Модель преводится в Editable Mesh или Editable Poly (можно просто добавить модификатор Edit Mash) - это необходимо в том случае, если до сих пор была Patch или Surface модель. После этого получится полигональная модель и будет возможно работать на уровне полигонов (именно они понадобятся для создания выделений).


Первым делом выделяется основание модели (рис. 2).

рис. 2

После этого надо посмотреть какой ID материала для выделенных полигонов. Если отличный от 1 (должен быть по умолчанию), то присвоить таковой (простое текстурирование - рис. 12). Также можно присвоить выделению значимое имя, что упростит дальнейшее выделение полигонов. Только после этого можно применить планарный маппинг. Для этого нужно добавить в стек модификаторов UVW Mapping ( рис.3).

рис. 3

Прежде чем накладывать текстурные координаты на следующие элементы модели нужно прибить стек модификаторов (можно этого и не делать, но есть риск раздуть стек модификаторов). Для этого нужно кликнуть правой кнопкой мыши по модели и выберать из списка строку Convert to Convert To Editable Mash. В результате в стеке останется только строка Editable Mash, но можете не волноваться, те текстурные координаты, которые присвоили основанию сохранятся вместе с геометрией.
Далее переходим к туловищу. Последовательность работы та же: нужно выделить туловище, затем присвоить выделению ID материала 2 и добавить в стек модификаторов UVW Mapping с цилиндрическим типом проецирования (рис.4).

рис. 4

Обязательно надо обратить внимание на зеленую вертикальную полосу, которая появляется на уровне выделения Gizmo (на нее указывает светло-зеленая стрелка). Это место стыка текстуры. Желательно поворачивать гизмо модификатора так, чтобы этот стык оказывался в самых неприметных местах (например на заднюю часть модели).
Теперь неплохо бы посмотреть на то, как выглядят развертки текстурных координат. Для этого в очередной раз нужно прибить стек и добавить в него Unwrap UVW. В нем нажать кнопку Edit, после чего откроется окно редактирования текстурных координат. Оно нужно только для контроля правильности наложения маппинга. Вот, что примерно должно получиться (рис. 5). Также нужно не забыть в окне выбрать показ только 2 ID, иначе в окне будет каша из полигонов (ведь большей их часть еще не присвоены нужные координаты).

рис. 5

На данном этапе не стоит выполнять масштабирование и расположение развертки в пределах карты - это лучше сделать после того, как все элементы будут оттекстурированы.
Далее следует удалить модификатор Unwrap UVW (он не применялся только для того, чтобы убедиться, что все в порядке) и снова перейти к выделению, на сей раз гривы (рис. 6).

рис. 6

Следует прятать отработанные полигоны для того, чтобы они не мешали при следующем выделении.
Далее нужно не просто применить сферическое проецирование, но и правильно его расположить на выделении. Выделив гизмо модификатора, нужно расположить его так, чтобы зеленая линия, указывающая на стык текстуры, оказалась с противоположной стороны выделения, а наклон центральной оси сферы соответствовал наклону выделения.
Потом по той же схеме, что и раньше проверяется развертка гривы ослика (рис. 7).

рис. 7

Нужно стремиться к тому, чтобы форма развертки не была рваной и соответствовала форме выделения.

На сей выделяются поочередно правые и левые ноги. Для них можно применить цилиндрическую систему координат с крышками на торцах (рис. 8).

рис. 8

Результат на рис. 9.

рис. 9

Правая и левая пара ног ослика разворачивается абсолютно одинаково, этим выделениям назначено 4 и 5 ID материала.

Перейдем к наложению текстурных координат для головы. Положение гизмо модификатора UVW Mapping в пространстве показано на рис. 10.

рис. 10

Опять же надо обратить внимание на то, что зеленая линия обращена в сторону противоположную от лицевой части и развернута так, чтобы максимально доступно развернуть текстуру.


А вот и сама развертка (рис. 11).

рис. 11

Следующий этап уши. Попробовав несколько разных видов проецирования можно прийти к заключению, что цилиндрическое проецирование для одного уха (рис. 12) предпочтительнее планарного, а вот второе лучше получается при планарном проецировании.

рис. 12

Вот как будет выглядеть развертка правого уха ослика (рис. 13).

рис. 13

А для левого уха развертка будет выглядеть так, как на рис.14.

рис. 14

Сейчас, когда модели назначены все текстурные координаты, нужно разложить созданные развертки в пределах одной текстурной карты. Сделать это можно двумя способами: автоматически и вручную. Для этого необходимо сделать в Unhide All в модификаторе Editable Mash для того, чтобы открыть все ранее спрятанные полигоны. Далее нужно, чтобы в стеке присутствовал модификатор Unwrap UVW. Внутри этого модификатора нажать на кнопку Edit и в меню окна редактирования выбирать Tools Pack UVs, в результате чего сделанные развертки заполнят свободное пространство в пределах текстурной карты (рис.15). Вручную, само собой разумеется, передвигать и масштабироватьбудет сложнее.

рис. 15

Далее создание текстуры. Это можно сделать в Фотошопе, а для того, чтобы знать где будет находиться на текстуре тот или иной элемент нужно максимально увеличить окно с развертками (рис. 15) и сделать Print Screen (жмем одноименную клавишу на клавиатуре). После этого в Фотошопе создается новый документ с размерами не менее чем 512х512 (можно использовать 1000х1000 или 1024х1024) и через Ctrl+V вставляем изображение из буфера в слой. Затем следует перейти в пункт меню Select Color Range и выделить черный цвет фона, после чего удалить его. Это позволит лучше видеть то, что делать и нижний слой, которому назначен цвет заливки модели.

Дальнейшая работа по созданию текстуры зависит только от знаний программы и умения рисовать. Можно добавлять слои, рисовать текстуру цвета, текстуру выдавливания и т.д. и получить великолепную модель. Здесь же немного попачкано кисточкой на фоне (рис. 16)

рис. 16

и получено вот такое изображение ослика после рендера (рис. 17)

рис. 17

2. Заключение

Данный способ текстурирования с помощью программы 3D Max является очень удобным для создания фотореалистичных изображений. Его цель сэкономить время жизненно необходимое для работы непосредственно над изображением.

Конечно же красивая, законченная модель требует достаточно много времени на рисование текстур, порой на это уходит не меньше времени чем на само моделирование, но это того стоит.

http://www.easy-render.nm.ru/

http://www.render.ru/

http://www.museum.ru/museum/cga/apps/review/index.html

Скачать архив с текстом документа