8. Uv развёртка
Перевод: newman
В
Рисунок
8-1: UV Развертка сродни тому, что вы
возьмёте 3D-объект и распределите его
объём по двумерной поверхности. В
результате ваш мэшь получит набор
2D-координат, который затем можно
использовать, чтобы наложить 2D-изображение
на ваш объект.
Другие виды текстурных координат
UV-координаты — это только один из способов наложения изображения на объект в Blender. Blender также имеет процедурные координаты, которые вы можете использовать для назначения текстур, используя какой-либо тип проецирования на ваш мэшь. Они имеют преимущество в простоте и полезны во многих случаях, но им не хватает точности UV-развертки, которая позволяет точно определить, какие точки сетки, каким частям изображения соответствуют.
Редактирование uv-координат
Для редактирования UV-координат мы используем UV Image редактор вместе с 3D-окном. В общем, когда мы работаем с UV координатами, полезно переключиться в макет UV editing, используя выпадающее меню в заголовке окна Информации (см. Рисунок 8-2). В результате слева у нас будет окно UV редактора, а справа 3D-окно.
Также полезно добавить окно Свойств (Properties) между UV редактором и 3D-окном. При установке окна Свойств мы получаем доступ к вкладке Object Data для переключения между различными UV координатами и к вкладке Render для доступа к элементам управления запеканием текстуры.
Рисунок
8-2: Немного модифицированная раскладка
редактора UV/изображений (UV Editing).
Вы можете сохранить её как раскладку
по-умолчанию настроив ваши окна подобным
образом в новом blend-файле, и выбрав
Сохранить файл запуска в меню Файл.
UV-сетка (UV Grid)
Мы будем использовать UV-сетку в редакторе изображений чтобы определить, какая часть текстуры или изображения относится к развёртке. Развёртка имеет координаты, которые пробегают диапазон от 0 до 1, с началом в левом нижнем углу. По умолчанию эти координаты умножаются на размер картинки, которую вы выберите, чтобы получить значение в пикселях. Если у вас нет изображения, которое вы выбрали сами, то Блендер предложит сетку размеров в 256 пикселей и даст координаты для неё. Можно отключить эту возможность, для чего нажмите N (откроется окно Свойств) и во вкладке Display, в разделе Coordinates, поставьте галочку Normalized, что даст координаты между 0 и 1. В окне UV-редактора действуют те же правила, что и в 3D-окне: вы можете перемещать, вращать, масштабировать любые выбранные вершины, используя те же клавиши, что и в 3D-окне, вы также можете использовать клавиши X и Y для ограничения операторов по горизонтальной и вертикальной осям UV развёртки. По умолчанию, мэшь не имеет никаких UV координат, так что выбирать нечего, до тех пор пока вы не сделаете развёртку.
При наложении изображения на мэшь с помощью UV координат, изображение масштабируется до заполнения UV-сетки и каждая вершина мэша будет соответствовать точке на изображении. За пределами края UV-сетки изображение повторяется или расширяется так, что UV координаты за пределами сетки также накладываются на часть изображения. Это позволяет повторять («тайлить») текстуру (которая повторяется, стыкуясь по горизонтали и по вертикали, без разрывов), что сделает поверхность вашего мэша гораздо больше, чем UV сетка. И наоборот, вы можете сделать развёртку мэша (или даже нескольких мэшей) так, что все UV координаты будут внутри UV развёртки, что позволит с помощью единственного («нетайленного») изображения, наложить текстуру на каждый полигон объекта. Оба варианта показаны на рисунке 8-3.
П
Рисунок
8-3: Две возможности для UV развертывания.
Сверху: Упаковка всех граней объекта
в UV-сетку для уникального текстурирования
каждой части. Снизу: Размножение (Tiling)
изображения по поверхности объекта.
Инструменты развёртки (Unwrapping Tools)
Для того, чтобы сделать развёртку модели, нужно включить режим редактирования (нажмите Tab, чтобы включить его, если вы это ещё не сделали). Возможно, вы захотите переключиться в режим работы с рёбрами в заголовке вьюпорта, что упростит выбор рёбер, отмеченных швами. Для начала разворачивания вашего объекта, нажмите U в 3D-окне, после чего откроется окно со списком команд для разворачивания вашего объекта, как показано на Рисунке 8-2. Эти команды следующие:
Развернуть (Unwrap)
Это, вероятно, наиболее часто используемый метод UV-развёртки. Blender попытается развернуть мэшь, разглаживая его, как будто он сделан из эластичной ткани, а также попытается свести к минимуму искажения, которые могут при этом возникнуть. (Для того, чтобы этот процесс работал с закрытым мешэм, нужно отметить некоторые UV-швы на вашем мэше.)
Умное UV-проекцирование (Smart)
Этот метод разворачивания автоматически проецирует мэшь по первым, наибольшим частям, видимым с этого угла зрения, за исключением невидимых полигонов или тех, которые повёрнуты от вьюпорта. Затем, происходит проецирование на меньшие, более сложные участки, с разбиванием их на различные UV-острова. Этот метод развёртки хорошо работает с простыми мэшами, но при использовании более сложных форм, он часто производит много маленьких островов, с которыми трудно работать.
Развернуть для карты освещения (Lightmap Pack)
Эта специальная опция UV развертки, для выпечки освещённых текстур каждого отдельного полигона в мэше, в отдельный прямоугольный остров. Lightmap Pack очень эффективно использует пространство UV координат, что делает её полезной для выпечки текстур освещения для игровых движков, но не очень полезно для практического текстурирования.
Следовать активным полигонам (Follow Active Quads)
Развёртка происходит относительно выбранных полигонов (режим работы с полигонами), обычно с последним выбранным и разворачивает полигоны всего мэша во все стороны от активного. Эта опция особенно хорошо работает для мэшей с «сеточной» топологией (то есть таких, где нет полюсов), например труб, цилиндров, плоских (решёток) сеток, и тому подобное. Это работает лучше всего, когда вы сначала развернули один полигон в качестве идеального прямоугольника с 90-градусными углами: 1) Развёрните с помощью U>Unwrap, 2) выберите рёбра разворачиваемого полигона в UV-редакторе и масштабируйте его так, чтобы он был идеально горизонтально-вертикальный, 3) разверните остальную часть сетки, выбрав её с помощью Ctrl-L, что выберет и все полигоны, связанные с уже выбранным; 4) используйте команду Follow Active Quads, чтобы получить хорошую развёртку. Для мэшей с более сложной топологией этот метод хороших результатов не даёт.
Проекция куба (Cube Projection)
Эта опция проецирует полигоны мэша, как будто на поверхности куба. Это полезно для объектов примерно кубической формы.
Проекция цилиндра (Cylinder Projection)
Эта опция работает как и кубическая, но действует так, как будто мэшь цилиндрический.
Проекция Сферы (Sphere Projection)
Эта опция работает так же, как и кубическая, но действует так, как будто мэшь сферический.
Проекция из вида (Project from View)
При выборе этой опции, мэшь будет развёрнут с той точки, с которой он виден во вьюпорте. Это особенно полезно для разворачивания маленьких, плоских частей вашей сетки до их закрепления, а затем разворачивания остальных с помощью Unwrap.
Проекцировать из вида (вписать в Границы) (Project from View (Bounds)
Эта опция похожа на предыдущую, но она разворачивает мэшь, растягивая UV координаты до полного заполнения пространства UV координат.
Сброс (Reset)
Эта опция разворачивает каждую грань по всему пространству UV-координат.
Швы
Представьте себе, что вы пытаетесь выровнять пляжный мяч (сделать его плоским). Даже если выкачать из него воздух, вы не сможете растянуть его так, чтобы каждая часть его поверхности легла плашмя на землю, если вы не сделаете по крайней мере один разрез, и чем больше будет этот разрез, тем меньше придётся его растягивать и искажать, чтобы он был полностью распластанным. Нечто подобное происходит и при использовании команды Unwrap при разворачивании мэша. Но вначале надо указать швы по тем рёбрам, по которым мэшь будет разрезан. В идеале вы должны отметить как можно меньше швов, так как при текстурировании их будет труднее раскрашивать, и в тоже время их должно быть достаточно, чтобы ваша развёртка не была сильно растянута при разворачивании. Искажения в этом случае возникают в Блендере из-за его попытки растянуть геометрию, чтобы сделать её плоской. При назначении объекту текстур, сделанных с использованием искажённой развёртки, текстура также будет выглядеть растянутой.
Чтобы отметить нужные швы, выберите рёбра в режиме редактирования и используйте Ctrl-E > Mark Seam, и эти рёбра будут помечены как швы. Если шов очень длинный и рёбер очень много, есть простой способ сделать выбор быстро. Выберите первое ребро шва, нажмите Ctrl, и затем правой кнопкой мыши выберите последнее ребро. Или, как обычно с использованием хоткея Alt и правой кнопки мыши, что выделит сразу всю петлю рёбер. Хоткеи позволяют работать быстрее.
В общем случае, швы надо делать в местах, где они малозаметны и не создадут проблем, и где они минимизируют растяжения вашей развёртки. Впадины и складки в мэше — это хорошие места сокрытия швов, а также и другие места, которые не на виду.
С
Рисунок
8-4: UV-Швы у "Бэтмэна" показаны здесь
в каркасном режиме. В то время, как
некоторые швы (неизбежно) оказались в
видимых областях, как например, вокруг
внешнего края крыльев, большинство
спрятаны в менее заметных областях,
подобно внутренней стороне ног и нижней
обратной стороне ушей и шеи. Сокрытие
ваших швов таким образом в дальнейшем
облегчает их очистку в текстурах.
Закрепление Вершин
Иногда, разворачивая ваш мэшь командой Unwrap, вы можете получить не совсем то, что хотели. Например, какая-то область может оказаться сильно сжатой и не пропорциональной другой области. Чтобы это исправить, необходимо закрепить (Pin) часть вершин, чтобы они не двигались и повторно сделать развёртку (в окне UV-редактора хоткей Е, а во вьюпорте хоткей U), после чего выделяем нужные вершины и нажимаем Р. (закреплённые вершины будут отмечены красным цветом). Теперь, при повторном разворачивании, Blender не будет затрагивать закреплённые вершины, а оставшиеся развернёт заново. Отключаем закрепление командой Alt-P (предварительно выделив вершины).
О
Рисунок
8-5: Чтобы получить симметричную развертку
торса "Бэтмэна", я сделал обычную
развертку и затем приколол вершины по
центру грудной клетки в виде вертикальной
линии и развернул снова. Результат
получился симметричным UV-островом,
который впоследствии будет проще для
текстурирования.
Теперь нажимаем E в окне UV-редактора, чтобы развернуть снова. Это даст нам более симметричную развёртку, как показано на рисунке 8-5.
Закрепление может также использоваться для того, чтобы исправить области на больших мэшах, которые при разворачивании могут перекрывать друг друга, что часто бывает с длинными трубообразными объектами где развёртка может сделать «виток». Чтобы решить эту проблему, закрепим вершины по разным концам нашего мэша, чтобы вершины были как можно дальше друг от друга в UV-пространстве, и снова сделаем развёртку
Наконец, когда делаем развёртку состоящую из различных частей, то закрепление острова позволяет переходить к разворачиванию других частей, не нарушая те, которыми вы довольны. Blender будет повторно разворачивать все, что вы видите в окне UV-редактора, так что это хороший способ сохранять уже готовые части вашей развёртки в безопасности.
Упаковка (запаковка)
К
огда
мы делаем развёртку персонажей или
других уникальных объектов, бывает
полезно упаковать все острова (части
мэша) в одну сетку. Это можно сделать с
помощью команды (Ctrl-P), но можно
сделать тоже самое (и возможно, эффективнее)
просто перемещая, масштабируя и вращая
все острова как кусочки пазла. Чтоб
ускорить работу с островами, перейдите
в режим работы с островами, щелкнув по
кнопке в заголовке редактора.
При упаковке островов старайтесь, чтобы их масштаб был одинаковым. Для усреднения масштаба выбранного острова используйте команду Ctrl+A или масштабируйте вручную. В этом случае, для контроля правильности используйте тестовую сетку («шахматку»). (см. «Тестирование UV Координат»)
Назначение UV текстуры
Существует много способов для отображения текстур на модели, во вьюпорте. Один из них — это включение отображения GLSL материалов с текстурами, которое реагирует на освещение и прозрачность. В простых случаях, чтобы посмотреть, как изображение будет отображаться на развернутом объекте, нужно открыть это изображение в окне UV-редактора. Для этого делаем следующее:
Выберите мэшь и перейдите в режим редактирования.
Выберите все полигоны и разверните их, если вы еще не сделали этого.
Выберите изображение, которое хотите присвоить мэшу, через выпадающее меню в заголовке UV редактора (слева от плюсика). Или, ещё левее, Image > Open Image, а при необходмиости можно вообще создать новое изображение: New > OK.
Чтобы увидеть изображение во вьюпорте, поставьте галочку в: N > Display > Textured Solid.
Тестирование UV Координат
Ч
Рисунок
8-6: Проверьте вашу UV-развертку с тестовым
клетчатым изображением. Эти клетки
помогут вам идентифицировать плохо
развёрнутые области, а также те, что не
согласуются по масштабу с остальной
частью развертки.
1. В окне редактора UV/изображений, (объект в режиме редактирования, все вершины выбраны) нажимаем: Image > New Image > (Generated Type) UV Grid. Это сгенерирует тестовую сетку и присвоит её UV-координатам вашего мэша. 2. В панели свойств (N), ставим галочку: Display > Textured Solid. Теперь во вьюпорте мы увидим тестовую сетку на нашей модели.
Это даст нам возможность увидеть проблемные области развёртки, участки сильно растянутые или слишком большие или слишком маленькие части мэша. Вы можете исправлять эти области в окне редактора UV/изображений и видеть изменения в реальном времени во вьюпорте. (окно 3D).
