Наша новая игра 8 сентября в раннем доступе на steam



Основы UV маппинга в 3ds Max

Поскольку основы - они и в Африке основы, то принципы работы с UV-развёрткой, почерпнутые из этой статьи, вы сможете применить работая и в других 3D редакторах. Единственное отличие будет в названии кнопок и инструментов.

Автор этой статьи - уважаемый мной 3D моделер техники в 3ds Max - Александр Барсуков, известный еще под ником DesertBull. Так что публикую я статью как есть.

Поехали!

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

Маппинг представляет собой простой раскрой модели. Все наши модели состоят из сетки полигонов. По сути делая маппинг, мы условно разделяем нашу модель на отдельные части, которые помогут нам максимально точно и без потянутостей "натянуть" текстуру.

Работа с модификатором маппинга очень проста. Если вы ещё не умеете с ним работать, то ставьте это приоритетом номер один в очереди на изучение, иначе вы - не полноценный специалист.

Многие работают с модификатором UVW Map. Я же работаю с модификатором UVW Unwrap. Почему? Потому что что это абсолютно такой же модификатор, только при этом с кучей дополнительных возможностей. Настоятельно рекомендую работать именно через Unwrap.

Что ж приступим.

У нас есть простая модель.

Простая модель для тренировки маппинга

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

Назначаем карту Checker для проверки правильности маппинга

При назначении материала текстура может не отображаться. Эта кнопочка все решает))

Включаем отображение текстуры в 3ds max в окне проекции

Результат после нажатия кнопки Show Shaded Material in Viewport:

3D модель с отображаемой на ней текстурой

Мне лично не удобно работать с чекером, если если он отображает 1-2 квадрата на сторону. Поэтому я всегда ставлю больший тайлинг.

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

Неквадратные квадратики это признак неправильной UV

Далее приступаем непосредственно к работе с маппингом. Находим модификатор UVW Unwrap. Я его себе вынес вот так, а вообще его можно найти там, куда указывает стрелка:

Как найти модификатор UVW Unwrap

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

Красным обведена зона отображения текстуры. Как правило в 3д принято работать с текстурами с равными сторонами или по правилу: если одна сторона - А и вторая – Б, то размер текстуры может быть А=Б или 2А=Б или 4А=Б и так далее или наоборот. Основные размеры сторон кратны 2-ум: 512,1024, 2048, 4096 и тд. Почему так? На сколько мне известно, по крайней мере в игровой индустрии - это наиболее эффективно и удобоваримые размеры. [если более точно, то размер стороны текстуры должен быть кратным степени двойки (2, 4, 8, 16, 32, 64, 128, 256, 512 и т.д.) - это связано с тем, что игровые движки и алгоритмы сжатия/работы с изображениями работают наиболее эффективно именно с такими размерами. Т.е. тогда используется минимум памяти: дисковой, оперативной и видео. А значит и вычисления, проводимые с такими изображениями будут проводится быстрее. Да, вы можете использовать текстуру размером 513на512, но её размер из-за этого одного пикселя будет в два раза больше, чем у 512на512 - примечание автора блога]

Никто вас не побьет палкой, если у вас будет текстура 314 на 745, но для меня, как человека варившегося в теме - это будет показателем отсутствия знаний. Случаи с использованием не квадратных текстур не столь часты. Я сейчас рассказываю на примере квадратной текстуры. 

Основное окно работы с развёрткой UV

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

Выделяем всю модель (в свойствах модификатора снять галочку "Игнорировать заднююю часть") и нажимаем в окне маппинга Флаттен маппинг.

Автоматический плоский маппинг

Мы видим, что программа разложила автоматом нашу модель на отдельные логичные (для программы) куски.

Результат автоматической развёртки в 3ds Max

Не нужно радоваться и сразу приступать к текстуре - у нас ещё много работы.

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

В окне маппинга я выбрал один едж:

Выделяем одно ребро на UV для сшивания

Клацаем на нем правой кнопкой мышки (ПКМ) и выбираем стич (прилепить). [для меня это удобнее делать через горячую клавишу, которую я назначаю самостоятельно на каждую команду, которую использую достаточно часто. О своих настройках 3ds Max я писал здесь - примечание автора блога]

Часть, которая на модели соприкасается с этим еджем автоматически приклеится к выбранному еджу:

 Склеиваем разные UV куски 3D модели

Результат команды склеивания рёбер UV развёртки

В итоге, посредством этой операции мы получаем вот такой раскрой. Как видим на модели зеленых линий стало значительно меньше)

Вот так выглядит UV после склеивания всех частей

Если присмотреться к местам стыка, то мы увидим, что зеленые линии исчезли в том месте где мы "стичили", но не исчезли на соседних еджах, которые соприкасались с изначально выбранным ребром.

Такие вещи желательно сразу исправлять. Есть два способа:

  1. Пройтись стичем и по ним.
  2. Перейти в режим точек, выбрать необходимые вертексы и завелдить (через меню ПКМ)

 Не до конца соединённые рёбра UV

Выделяем вершины там, где нужно их соединить на UV

Велдим (свариваем или склеиваем) выбранные UV вертексы

Итак, у нас более менее комфортная раскладка модели.

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

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

При этом зачастую требуется функция отзеркаливания и\или поворота детали.

Выделяем верхнюю часть UV:

Выделяем верхнюю часть

Отделяем выделенную часть UV:

Отделяем выделенную часть

Отзеркаливаем и поворачиваем отрезанный UV кусок:

Отзеркаливаем и поворачиваем UV кусок

Накладываем отрезанный кусочек поверх такого же:

Накладываем отрезанный кусочек поверх такого же

Наш маппинг все ещё не эффективен. Текстура очень узкая и длинная. Мы конечно можем сделать прямоугольную текстуру, но в нашем случае - это идет вразрез с первоначальной задачей – делать квадратную текстуру.

Я выделил в основном вьюпорте полигоны цилиндра и отделил их на маппинге от детали. Мы получили две половинки боковинки цилиндра.

Выбираем боковые части цилиндра

Отделяем выбранные части UV через квад меню ПКМ

Я выделяю один крайний едж на одной из половинок и мы видим, что на второй подсвечивается синим другой едж. Программа показывает какой едж в какой детали сейчас мы соединим.

Выделяем ребро на UV и смотрим с каким оно соединиться

Вуаля

Соединили боковые рёбра UV цилиндра

Вот теперь уже кое-что похожее на качественный маппинг. Перетаскиваем наш маппинг с серого фона в квадратик чекера в окошке маппинга. [этот квадратик обозначает границы текстуры. На самом деле текстура есть и за пределами этого квадратика, но она там повторяет текстуру внутри квадрата. Это достаточно интересная фича и о ней я записал отдельный видеоурок по UV квадратам - примечание автора блога]

Наш маппинг не должен выходить за его границы. При необходимости скейлим (через CTRL) ВЕСЬ(!!!) маппинг одновременно. Крайне не желательно скейлить отдельно детали, так как сейчас у нас маппинг всех деталей в едином одинаковом масштабе. Что значит, что по всей нашей модели текстура будет отображаться с одинаковым качеством.

Перемещаем все части UV в квадрат 1,1

При необходимости вы можете спокойно менять детали местами, крутить их и т.п. для более плотной "упаковки".

Вот что получилось у меня

Максимально занимаем квадрат UV частями развёртки

Последним штрихом будет действие, которое я называю "текспортер" (по мотивам одноименной проги))) Это действие необходимо для снятия карты маппинга, для дальнейшей работы с ней в Photoshop (Фотошопе ФШ) непосредственно над текстурой.

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

Рендерим нашу UV развёртку, чтобы рисовать по ней в Photoshop

Окно настроек рендера UV развёртки

После нажатия кнопки "Render UV Template" (отрендерить развёртку UV) мы видим карту маппинга, сохраняем её в удобном графическом формате и далее уже открываем её в ФШ со свойством слоя "Screen" (не будет видно, если основной фон фш-файла – белый).

Сохраняем получившуюся развёртку UV как картинку

Всё. Успешного маппинга))



Подпишитесь на обновление блога (вот 3 причины для этого).
Введите ваш e-mail:


P.S. Заглавную картинку сделал 3D-художник Giovanni Dossena с помощью MARI, Maya и VRay. Полную версию смотрите там.




Вам понравилась статья? Хотите отблагодарить автора? Расскажите о ней друзьям.
Или подпишитесь на обновление блога по E-Mail.

Введите ваш e-mail (используется только для отправления обновлений блога):

комментарий 21 к статье “Основы маппинга в 3ds Max (UVW Unwrap) и в других 3D редакторах”

  1. Очень полезно. Спасибо.
    Если бы пару лет назад, цены бы не было. Один добрый преподаватель из Польши дал мне основу по Скайпу по Unwrap UVW мэпипингу. Спасибо и ему.

    ================================================
    Немного не в тему если можно.
    Но сейчас возникла потребность по текстурированию shader’s в Arnold Mto. Может есть какие ссылки по теме. Спасибо.

  2. вот уж не знаю что здесь такого информативного…
    разложить цилиндр и кубик сможет и макака. а как насчет сложной органической модели или разрушенного здания? там уже не кубики. кстати, если затронули тему геймдева, то новичкам было бы некисло рассказать о такой характеристике как TexelPerMeter (оно же — Texel Density — плотность текстуры на квадратный метр). Например, к нам в студию часто приходят Артисты, которые даже об этом не слышали, а ведь это очень важный параметр качества мапинга.
    Я занимаюсь тем, что проверяю качество игровых моделей и в нашем чеклисте четко написано: TexelPerMeter должен быть 256. Если от этого правила отходят, модель отправляется обратно на переделку.

    • А ведь вам никто не запрещает дополнить эту статью информацией в комментариях 😉 Более того, я и другие читатели скажут вам спасибо и пошлют кучу позитивных флюидов! 🙂

    • Практика показывает, что подавляющее большинство людей, считающих, что знают 3д, оказывается, банально не знают самых простых основ маппинга. Ключевое слово здесь — ОСНОВА. Вот для таких людей и создана данная статья. Продвинутые знания здесь излаживать я не планировал.

    • По-моему вполне закономерно что человек проводящий анализ 3D-Контента знает больше нюансов чем люди которые собственно создают этот контент 🙂

      Ну а так-то — действительно печально *если оно так и есть* что люди приходящие работать в сферу Game-Art-а не знают что такое «Texel-Density»…

      Ведь контролировать Texel-Density должен каждый Game Art-ист (по умолчанию). Иначе будет видно что плотность текстур в сцене отличается. А еще сильнее это будет заметно при интерполированном Mip-Mapping-е… А если уж говорить про Light-Mapping то и вовсе плотность текстур влияет на общее качество освещения сцены…

      Если кому интересно, можете погуглить на эту тему — Texel / Texel Density / Texture Density / Pixel Density, и тд…

      P.S.
      В 3Ds Max-е я использую для этого бесплатный скрипт (TexTools) :
      http://www.renderhjs.net/textools/ (там почти в самом низу, в правой колонке поясняется как работать с этой самой плотностью).

      • «..По-моему вполне закономерно что человек проводящий анализ 3D-Контента знает больше нюансов чем люди которые собственно создают этот контент :)…» увы, ошибочный вывод.

  3. Просто оставлю это здесь
    http://youtu.be/laJCQdJtR84

  4. Понимаю негодование бывалых 3дшников, но не надо забывать про тех кто допустим не разу не делал развертку) У меня друг только осваивает 3Д Макс, вот и подкину ему статейку. Меньше сам буду обьяснять)

  5. Только вникаю в тему. Подскажите как эти полученные развертки, уже раскрашенные или покрытые текстурой, вернуть в макс и натянуть на модель, что бы все встало на места? спасибо.

    • Вы сохраняете текстуру (к примеру, в Photoshop) как картинку (jpg, png, psd), а потом загружаете в 3ds Max в качестве текстуры Bitmap. Для этого нужно открыть редактор материалов (нажать клавишу M) и кликнуть на пустой квадратик возле надписи Diffuse. Потом перетяните этот материал на объект, где вы сделали UV развёртку.

  6. подскажите, пожалуйста, в чем может быть проблема:
    при натягивании чекера выходит следующее:
    не видно uv в редакторе 3ds max

    при этом в едиторе uvw unwrap полностью пустое поле

    • Попробуйте сначала накинуть модификатор UVW Map (он создаст правильный UV, если он перед этим исказился), а потом уже сверху модификатор Unwrap UVW (чтобы редактировать ту UV, что вы только что создали).

    • Накинули Unwrap UVW, зашли в окно редактора(Open UV Editor), переходим в режим полигонов. Затем:
      Ctrl+A -> Mapping -> Flatten Mapping.

  7. Здравствуйте! Спасибо за урок,но можете пожалуйста объяснить как надо наложить материал на карту в Фотошопе?Заранее спасибо

    • Тут два варианта. Первый — вы затягиваете 3D модель в Фотошоп и сразу там рисуете по ней. Второй — вы открываете только текстуру в фотошопе, а поверх сетку UV координат (об этом написано в конце статьи).
      Первый вариант.
      Редактирование текстуры в фотошопе
      1. Выделяете текстуру среди 3D слоёв.
      2. В свойствах материала нажимаете кнопку с изображением листика бумаги и в открывшемся меню выбираете либо Edit Texture… (редактировать), либо New Texture… (создать новую текстуру).

  8. Хелп! я сделал, раскрасил. КАК НАЛОЖИТЬ НА МОДЕЛЬ?

    • Быстрый способ наложить текстуру в 3d max — перетяните текстуру из Windows прямо на объект в 3ds Max.
      Теперь, если открыть редактор материалов (нажатием клавише «m») и кликнуть пипеткой объект, на который вы только что перетянули текстуру, то откроется новосозданный материал, с вашей текстурой в канале Diffuse.

  9. Скажите как UV тайлы лежащие друг на друге объединить в группу, чтобы они были цельными как один объект????????

    • Так можно делать, только если это реально один 3d объект. UV грани могут быть склеены, только если они склеены на самом 3D объекте. Но вот вершин UV островов можно выравнять одна относительно другой и они будут выглядеть как будто бы это один объект. Для этого просто воспользуйтесь инструментами выравнивания (align) в UVW Unwrap модификаторе.
      Если же нужно склеить UV грани, которые уже склеены на 3D объекте – тогда используйте операцию Stitch

  10. Спасибо!

Извините, в данный момент комметарии закрыты.

© 2008 - 2018 3dyuriki.com
Для связи со мной 3dyuriki@gmail.com