среда, 31 августа 2011 г.

Текстурирование сложной модели с помощью Unwrap UVW

Источник: http://3d-uroki.org/tutorial/3d-max/162

3ds max 5 включает в себя большое количество новых средств для наложения текстуры на объект. В зависимости от сложности проекта и наличия внешних модулей текстурирование объекта сильно упростилось по сравнению с предыдущими версиями программы.
В данном уроке Вы познакомитесь с базовыми средствами модификатора Unwrap UVW, разными методами автоматического текстурирования и некоторыми приемами работы вручную.
Так же я вкратце объясню, как Вы можете использовать программу Deep Paint 3D, от Right Hemisphere, чтобы придать больше гибкости процессу текстурирования.
Надеюсь, что ознакомившись с предложенным материалом, Вы найдете быстрый и эффективный путь для текстурирования Ваших моделей.

Спасибо Phil Bedard и Francis Bernier за модели и текстуры.


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


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


Во-первых, надо разделить карту на как можно меньшее число кусков. Это существенно облегчит Вам как рисование текстуры, так и последующую ее доработку. При небольшом числе участков легко запомнить, какой из них накладывается на какую часть сетки.

  

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

Основы

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




Перед началом текстурирования вспомним назначение наиболее часто используемых клавиш. Их три – F2, F3, и F4. F2 включает и выключает режим Shade Selected Faces (затенения выбранных граней) – когда этот режим включен, выбранные грани затеняются красным цветом. F3 позволяет переключаться между каркасным и затененным режимом отображения объектов, F4 включает одновременное отображение ребер и затенения граней объекта – режим Edged Faces. Все эти клавиши часто используются при моделировании объектов, но особенно – при их текстурировании.
Если объект, который Вы собрались текстурировать, не выделен, выделите его и примените к нему модификатор Unwrap UVW.


Щелкните на значке “+” слева от модификатора Unwrap UVW левой кнопкой мыши, а затем перейдите на появившуюся строку Select Face. Это позволит Вам, щелкнув левой кнопкой мыши на грани объекта в видовом окне, выбрать ее для текстурирования. Надеюсь, Вы знаете, что добавить к уже выделенным новую грань, можно щелкнув на ней с нажатой клавишей Ctrl, а чтобы снять выделение с грани – с клавишей Alt.


Интерфейс модификатора Unwrap UVW

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



Если Вы не сделали этого ранее, прейдите в стек модификаторов и выберите в нем строку Select Face, которая является пунктом модификатора Unwrap UVW. Обведите рамкой выделения весь объект, чтобы выделить все его грани. Теперь нажмите кнопку Planar Map в свитке Unwrap UVW. Теперь координаты текстуры выглядят несколько проще, но отнюдь не идеально.




Теперь, вернувшись в окно редактирования UVW, бросим беглый взгляд на основные возможности его интерфейса. В левом верхнем углу диалога Вы найдете обычные средства редактирования (перемещение, поворот, масштабирование, свободная деформация и зеркальное отражение). Если, используя средства перемещения или масштабирования, Вы нажмете клавишу Shift, это позволит Вам осуществлять преобразование только по одной из осей.


В правом нижнем углу вы найдете все привычные средства прокрутки и масштабирования изображения, а чуть ниже две кнопки – Rotate +90 и Rotate -90. Очень простые и очень полезные.





Слева от них группа Selection Modes. Она содержит существенные улучшения по сравнению с предыдущей версией средств Unwrap UVW. По умолчанию выбран режим вершин, но можно поменять его на режим ребер или граней. В режиме вершин (Vertex) Вы, как и в предыдущих версиях Max, можете корректировать текстурные координаты вершины или группы вершин. В режиме ребер Вы можете делать то же самое с ребрами, а в режиме граней, соответственно с гранями.

  
Кнопки “+” и “-” позволяют Вам расширять или, наоборот сокращать набор выбранных вершин, ребер или граней. Назначение флажка Select Element рассмотрим позже.




Другой новой возможностью модификатора Unwrap UVW является синхронизация выбора подобъектов в окне редактирования текстурных координат и в видовых окнах, что позволяет облегчить выбор нужного Вам объекта (на рисунке изображена ситуация при включенном режиме Shade Selected Faces – клавиша F2).

Средства автоматического текстурирования

Теперь, когда Вы ознакомились с основными элементами интерфейса модификатора Unwrap UVW приступим непосредственно к текстурированию. Перед тем, как начать, я всегда заготавливаю клетчатую текстуру. При наложении ее на сетку сразу видно, какие участки отекстурены правильно, а где имеются искажения. Откройте редактор материалов, выберите неиспользуемый материал, разверните свиток Maps и нажмите на кнопку справа от надписи Diffuse Color, помеченную None. В появившемся окне дважды щелкните надпись Bitmap, и откройте файл с клетчатой текстурой. Не забудьте нажать кнопку Show Map in Viewport и примените материал к объекту. Ваш объект должен быть похож на то, что нарисовано ниже.





Закройте редактор материалов и вернитесь в окно редактирования текстурных координат (возможно, для этого придется нажать кнопку Edit снова). Теперь материал объекта станет фоновым в этом окне – разве это не удобно? Если Вам это не нравится, Вы всегда можете нажать кнопку Show Map вверху окна редактора. Также обратите внимание на квадрат темно синего цвета. Он означает ограничения Вашей текстурной карты. Если Вы выведите вершину за его пределы, то она получит значения координат, взятые с противоположной стороны – будьте осторожны (однако пока об этом беспокоится не стоит).


Давайте посмотрим на первый метод автоматического текстурирования. Войдите в меню Mapping и выберите там пункт Flatten Mapping. Убедитесь, что все три флажка установлены и нажмите кнопку OK. Вы увидите, как объект разбился на кусочки, подобно игрушке пазл. Если Вы напечатаете полученное изображение, а потом разрежете на кусочки, то получите грубую развертку Вашего объекта – не точную, но довольно близкую.





 Здесь самое время остановиться и продемонстрировать Вам возможность флажка Select Element. Установите его, как показано на картинке и щелкните левой кнопкой мыши на любом из кусков развертки, изображенных в окне. Обратите внимание, что выделился весь кусок, а не только одна его грань (или вершина, или ребро). Это очень удобно, если Вам надо установить текстурные координаты сразу для целого куска.



Пока Вы использовали установки Flatten Mapping, принятые по умолчанию, давайте немного поэкспериментируем. Снова войдите в меню Mapping, выберите пункт Flatten Mapping, и немного поиграйте с параметрами, особенно с задатчиком Face Angle Threshold. Как нетрудно заметить, большее значение этого параметра приводит к образованию больших кусков развертки, а малое – к их уменьшению, но к увеличению их количества. Для примера я использовал значения 75 и 25. В зависимости от того, как Вы хотите текстурировать объект, оба варианта имеют свои преимущества. А теперь попробуем другой метод.




Вернитесь в меню Mapping и выберите пункт Normal Mapping. В выпадающем списке вверху выберите Box Mapping. В реальной работе используются все методы, но чаще других – именно этот. Нажмите OK, чтобы посмотреть результат. Объект разбился на шесть частей, по одному на каждую грань параллелепипеда. Это главное преимущество данного метода – шесть плоскостей проекции, по две на каждую ось. Поиграйте с настройкой, попробуйте другие методы (Left/Right Mapping, например) и посмотрите, может быть какой-то из них Вам понравится. Если нет, придется сделать что-нибудь более сложное.




Из двух рассмотренных методов Flatten Mapping выглядит более перспективным. Но если Вы получили слишком сложную развертку или нуждаетесь в более тщательном текстурировании, придется сделать другой выбор.

Текстурирование вручную

Для начала я повторил операции Flatten Mapping с другими установками (см. картинку). Получилось неплохо, но только для начала.


 Одной из первых проблемных областей была кабина – ее кривизна слишком велика для того, чтобы с помощью Flatten Mapping объединить все ее полигоны в одну группу. Поэтому, выделив все грани кабины в видовом окне Perspective, я нажал кнопку Planar Map в свитке модификатора Unwrap UVW.






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


Я применил модификатор Mesh Select, и выбрал грани, для которых собирался использовать цилиндрическую проекцию (Выбор граней в Unwrap UVW, к сожалению невозможен).



Когда выделение было закончено, я добавил модификатор UVW Mapping, изменил метод проекции на Cylindrical и нажал кнопку Fit. Это дало нужный мне результат. Далее я добавил другой модификатор Mesh Select, но не выбрал ни одной грани. MAX сохраняет информацию о выбранных гранях, а нам необходимо иметь возможность работы со всей сеткой а не только с выбранными гранями. После этого я снова добавил модификатор Unwrap UVW.





И снова получившиеся координаты далеки от идеала, их надо отмасштабировать и перенести на другое место, чтобы они не смешивались с другими. Будет также неплохо разбить получившийся кусок на части. Чтобы сделать это, выберите в меню Tools пункт Break (горячая клавиша Ctrl-B). Теперь можно разнести выбранные грани в стороны без растяжения прилегающих граней.




Пару раз я встречал ситуации, когда некоторые грани объединялись легко и без перекрытий, однако в большинстве случаев плоское наложение карты работает не вполне корректно. Когда Вы применяете Flatten Mapping, обычно дело заканчивается тем, что два или три полигона перекрывают друг друга.



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



Выберите в меню Tools пункт Stitch Selected, чтобы объединить элементы вместе (нажмите OK в появившемся диалоге – значения по умолчанию вполне подходят).




Объединив несколько элементов, я получил перекрывающиеся части. Простое решение заключается в том, чтобы объединить вершины вместе и получить один непрерывный кусок. Это приведет к некоторому растяжению, но, если оно появится на небольшом полигоне, это не будет бросаться в глаза. Чтобы сделать такое слияние в меню Tools выберите пункт Target Weld, а затем перетащите исходную вершину к новому месту. Получилось лучше!




Как видите можно объединять вместе части полигонов, используя средства Stitch и Target Weld.


Используя описанный выше метод, я объединил большинство полигонов в компактные группы, избавившись от элементов развертки в один или два полигона. Теперь надо вернуть все получившиеся куски в нормальное текстурное пространство (ограниченное синим квадратом). К счастью, Max предоставляет возможности сделать это.

В меню Tools выберите пункт Pack UVs и установите параметры, как показано на картинке. Нажмите OK! Вы получили равномерное распределение полигонов на поверхности текстуры. Конечно, Вы можете вручную поворачивать и масштабировать части развертки. Это обычно дает лучший результат, но требует затрат времени и усилий. Так же можно разместить парные элементы один поверх другого, чтобы сэкономить текстурное пространство.




Вот и все! Вы познакомились с большинством новых средств модификатора Unwrap UVW, увидели, как быстро и без особых хлопот выполнить текстурирование объекта и уточнить результат вручную, если это необходимо. Рекомендую так же использовать утилиты, например Texporter, чтобы экспортировать текстурные координаты вершин в изображение, которое можно использовать как начальное приближение при рисовании текстуры.



Комментариев нет:

Отправить комментарий