Сайт о телевидении

Сайт о телевидении

» » Текстурирование с помощью unwrap uvw. Выбор узлов в UV редакторе

Текстурирование с помощью unwrap uvw. Выбор узлов в UV редакторе

Карта теней вероятно, самая трудная часть в создания визуального представления объекта. Мы используем их, чтобы получить запеченные свет и тень.
Они должны быть однозначно развернуты, так что каждая часть модели имеет свое собственное место в UV пространстве, чтобы в итоге получать корректную информацию о свете и тени.
Важно помнить, что разрешение карты теней крошечное по сравнению с размером UV пространства.
Важно также понимать, что чем больше уровень должен быть оптимизирован тем ниже дизайнер уровней должен использовать разрешение на лайтмапах, иногда доходя до 8 на 8 или 16 на 16 в случае с более мелкими объектами.
Эта тенденция требует, чтобы мы оставили много дополнительного пространства вокруг каждой секции из развертки объекта так, чтобы области, которые являются темными,
не воздействовали на светлые и не уничтожали иллюзию визуальной корректности теней в игре.

Есть 3 основных способа создания такой развертки:

BOX UNWRAP

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

PLANAR UNWRAP

Этот способ особенно полезен для плоских конструкций, таких как стены с несколькими фасками или выдавливаниями. Это также очень полезно для больших частей фасадов зданий, таких как, например, многоквартирные дома.
Planar будет разворачивать значительно лучше если использовать неразрывную геометрию, потому что здесь вопрос будет стоять лишь в “расслаблении” сетки развертки.
Иногда так же хорошее правило заключается в том, чтобы убедиться, что на подобной развертке больше места по горизонтали, чем по вертикали, так как отбрасывание теней, как правило, происходит со стороны при слегка повышенном угле,
а не прямо вниз. Так, большее горизонтальное пространство даёт более широкие возможности для построения более резкой тени, из-за тенденции выбора дизайнерами освещения под углом,
чтобы создать более интересные тени, чем при освещении сверху вниз.

CYLINDRICAL UNWRAP

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

Примеры

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


Этот метод развертки позволяет нам иметь почти идеальную карту теней в игре с разрешением 32 на 32. У геометрии нет никаких швов. Там где должна быть тень мы видим тонкие черные линии, а где не должна, там её и нет.


Здесь мы видим что необходимо использовать максимально возможное пространство, так как карта теней в любом случае покроет всю развертку.
По этому между соотношением сторон объекта 1 к 1 и 1 к 7 вы увидите сещественную разницу. Так же вы видите что здесь отделены некоторые части развертки и отодвинуты от основной сетки.
Это сделано потому как эти части всегда останутся в тени. Они не должны воздействовать на остальную карту теней.


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


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


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


У некоторых проектов не выходит следовать этим простым правилам, как на скриншоте ниже.


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


Иногда развернуть объект легко, достаточно разбить его на несколько обоснованных частей. А затем просто “расслабить” развертку. Отличный пример объект ниже.


Такая конструкция является по существу цилиндром с плоским основанием поэтому здесь используются эти два основных метода развертки объекта.
Planar разворачивает части геометрии вниз по оси Z, а затем применяется модификатор “расслабления” и немного регулируется положение вершин чтобы убедиться, что ничего не получает слишком мало покрытия.
В середине схожий с основанием случай, здесь центральная часть разделена и использован Planar вместо Cylindrical для того что бы обеспечить большую зону покрытия.
Как всегда, мы больше озабочены охватом, чем чем соотношением сторон 1 на 1. Большим преимуществом будет располагать швы в их реальных местах, это позволит выглядеть теням более естественно.
Если на вашем объекте есть глубокие вырезы, крайне резкие стыки геометрии то это отличное место что бы здесь проложить шов, если конечно он требуется.

Lightmap Coordinates Index

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

UV чарты и отступы

Группы обособленных треугольников с сопредельными UVs называются UV чарты (charts).

Разделять развертку на чарты и располагать их отдельно следует если вы хотите исключить воздействие теней одного чарта на другой. Так же делая отступ следует помнить о простом правиле:
Размер отступа должен быть больше чем 4х4 текселя, так как DXT сжатие работает с блоками именно такого размера.

  1. Потраченный впустую отступ
  2. Необходимый отступ

Это означает, что для карты теней разрешением 32, отступы между частями UV развертки должны быть 12,5% от всего UV-пространства.
Однако, имейте в виду, что использование слишком больших отступов между частями UV развертки приведет к трате памяти, отведенной на карту теней, впустую на более высоких разрешениях.
Чем ближе ближе вы сможете расположить UV чарты, тем лучше. Это позволит уменьшить количество растраченной впустую памяти.


Это далеко не идеальная развертка.

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


Лучший способ создания развертки для карты теней является моделирование всего меша как одного непрерывного элемента или создание развертки вручную.


Это даст единую развертку, на которой почти нет швов и которая гораздо более эффективна.

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


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


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

Размер, количество и качество текстур, а также размер uv развертки и количество островов на ней для 3D моделей, используемых в игровых движках, остаются актуальными всегда из-за оказываемой нагрузки на видеокарту и процессор. Однако чем выше разрешение текстуры и чем больше размер островов uv развертки, занимающих площадь текстуры при одном и том же её размере, тем качественнее будет выглядеть в игре текстура, “натянутая“ на 3D модель. Следовательно, необходимо оптимизировать uv развертку за счет повторного использования имеющейся текстуры, например, путем наложения одинаковых или схожих элементов uv развертки (uv островов) 3D модели друг на друга и/или на одни и те же области текстуры. Таким способом можно либо уменьшить общую площадь, занимаемую uv разверткой, а размеры каждого uv острова увеличить с целью повышения качества рендера игровых объектов, либо уменьшить размер текстуры, например, с 2048×2028 пикселей до 1024×1024, сделав ставку на производительность. Освободившиеся ресурсы можно использовать, например, для добавления ресурсоемких эффектов, фильтров и т.д., например, для пост-процессинга.

На рисунке показаны созданные традиционным способом 3D модель ангара и uv развертка для него (слева), справа — 3D модель ангара и его uv развертка, созданные описанным в данной статье способом.

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

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

В данном варианте 3D модели ангара дверей не предусмотрено, как и ранее — с целью облегчения понимания описываемого в статье материала, однако заготовка под дверной проем оставлена, так что проделать проем под дверь в ангаре вы с легкостью сможете, если удалите всего лишь одну вершину ангара, как только ангар будет готов. Либо вы можете сделать это на данном этапе, удалив указанную на рисунке вершину. Я продолжу использовать ангар без проема, и к концу статьи вы поймете, почему.


На рисунке показаны 3D модели ангаров: слева показана отзеркалированная, но без применения модификатора, четвертая часть ангара с удаленной вершиной (на развертке вершина также удалилась), что привело к образованию дверное проема (даже двух – по обоим торцам ангара из-за зеркалирования по оси y); по центру рисунка показана 3D модель целикового ангара с выделенной вершиной меша, удаление которой приводит к образованию дверного проема; справа — показан ангар снаружи и изнутри с дверным проемом и массивной распашной дверью.

Не забывайте сохранять файл со своей 3D моделью, желательно в файл под другим именем (например, добавляя цифру в конце имени файла и увеличивая её на единицу при каждом последующем сохранении через Ctrl+Shift+S, тем более что, находясь в меню сохранения, можно нажать клавишу плюс/»+» на дополнительной цифровой клавиатуре, чтобы Blender проделал этот фокус за вас). Так вы получите более гибкую систему резервных копий файлов своей модели и/или сцены, чтобы иметь про запас 3D модель не нескольких стадиях ее создания, если захотите «вернуться в прошлое» и изменить свою 3D модель. Всегда лучше вернуться на десяток шагов назад, чем начинать создавать 3D-модель заново. Вопросы бекапов, откатов до одной из сохранённых версий (включая автоматически сохранённые Blender’ом), копирование моделей с переносом их на отдельные слои и восстановление частей модели из предыдущих версий будет рассмотрено в отдельной статье///, как только она будет дописана.

Не секрет, что во многих случаях лучше сразу создавать оптимизированную 3D модель, чем оптимизировать её после окончания процесса моделирования, особенно это касается низкополигональных (low poly) 3D моделей. Рассмотрим пример такого оптимизированного создания 3D модели на примере sci-fi ангара. Создадим четвертую часть ангара. Почему только четвертую часть, а не ангар целиком? А потому что позднее мы отразим (отзеркалируем) ее по двум осям, так чтобы получился целиковый ангар (но об этом чуть неиже). Вы можете сами создать данный кусок 3D модели ангара или «четвертинку» модели любого другого строения, либо использовать созданный мной в Blender’е кусок модели.

Приступим к созданию 3D модели ангара. Давайте отметим швами ребра созданной модели, как показано на рисунке ниже, и создадим для имеющейся части ангара развертку.


Чтобы отметить ребра 3D модели в качестве швов, выберите Правой Кнопкой Мыши модель ангара и нажмите клавишу ‘Tab’, чтобы перейти в режим редактирования меша. Находясь в режиме редактирования меша измените режим выбора элементов меша на режим редактирования ребер, для чего нажмите сочетание клавиш Ctrl+Tab и в открывшемся меню режима выбора меша (Mesh Select Mode) выберите “Edge”.
Не выходя из режима редактирования меша, выберите ребра, как на картинке выше, по которым будут созданы швы на uv развертки. Выбор ребра осуществляется при помощи Правой Кнопки Мыши, а добавить к выбранному ребру еще одно поможет клавиша ‘Shift’. Здесь стоит отметить, что горячие клавиши в Blender работают только для того окна, в котором в настоящий момент находится курсор мыши. После того как выберете все ребра, необходимые для создания по ним швов, нажмите сочетание клавиш Ctrl+E, чтобы открыть меню “Edges”. В данном меню выберите пункт «Mark Seam», чтобы пометить выбранные ребра как швы. В одном из окон 3D вида откройте окно Редактора изображений/uv развертки.



В окне редактора развертки отображается только развертка выбранных в 3D окне полигонов, если не выбран режим синхронного редактирования uv развертки (Keep UV and edit mode mesh selection in sync), иконка которого отмечена синим прямоугольником на рисунке выше.

Если у вас получилась не такая ровная развертка, как на рисунке, не переживайте, я выровнял ее. Если вы считаете, что руками выравнивать разваертку слишком долго, то вы всегда можете воспользоваться add-on’ом для Blendera UV Tool или UV Squares , или вы найдете что-то свое на этом замечательном сайте.

Чтобы воспользоваться функционалом ручного выравнивания uv развертки, для начала, необходимо установить 2D курсор в качестве пивота/центра для вращения и масштабирования (Rotation/Scaling Pivot). Иконка меню Pivot, в котором расположена вкладка 2D Cursor за упомянутую функцию, отмечена на рисунке выше синим прямоугольником. Теперь вы можете выбрать одну из вершин uv развертки Правой Кнопкой Мыши и нажать сочетание клавиш Shift+S (поместив курсор мыши поверх окна редактирования развертки, поскольку горячие клавиши действуют для того окна, в котором находится курсор мыши, т.е. активном окне), после чего в меню шага (Snap) выбрать вкладку “Cursor to Selected”, чтобы установить 2D курсор в выбранную вершину uv развертки. Теперь выберите вершины на uv развертке, которые хотите переместить на один уровень с 2D курсором и нажмите клавишу ‘S’, после чего нажмите клавишу ‘Y’ (для выравнивания по оси y) или клавишу X (для выравнивания по оси x) и затем клавишу 0 (ноль), после чего подтвердите перемещение вершин, нажав клавишу ‘Enter’. Используя данную технику, вы можете придать развертке приемлемый вид без наслоения частей развертки (uv островов) друг на друга. Более простой способ выравнивания выбранных вершин uv развертки доступен через меню Сваривания/Выравнивания вершин развертки (Weld/Align), которое открывается по нажатию клавиши ‘W’. В данном меню выберите пункт выравнивания по оси Y (Align Y) или по оси X (Align X), чтобы выровнять выбранные вершины по оси y или x (y – вертикальная ось в uv пространстве, а x — горизонтальная). Кстати, u и u в названии uv развертки, не больше, чем обозначения осей x и y для исключения путаницы с осями, u соответствует координате x, а u – координате y. Более подробно о uv пространстве вы можете почитать в статье .

Посмотреть процесс выравнивания uv развертки вы можете все в том же видео по созданию и анимированию водопада в Blender и Unity3D .


Чтобы форма и позиция uv развертки не изменилась при повторном ее создании (преднамеренном или непреднамеренном), закрепите вершины uv развертки, для чего выберите в окне редактирования изображения/uv все вершины развёртки, поместив курсор мыши поверх развёртки и нажмите клавишу ‘A’, после чего нажмите клавишу ‘P’. Не забывайте о том, что, как было сказано выше, горячие клавиши действуют для того окна, в котором в настоящее время находится курсор мыши. Вместо использования горячей клавиши вы можете выбрать пункт горизонтального меню “UVs” под окном редактирования развертки, в котором выбрать подпункт Pin.



На рисунке заметно, как “поплыла” текстура на персонаже, причем так, что текстура языка оказалась на пятке 3D модели персонажа. Чтобы такого не произошло, используется “фиксация” вершин развертки в uv пространстве/на uv плоскости.

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


На рисунке показаны выделенные желтым ребра модели ангара, которые не были отмечены в качестве швов. Оси симметрии, о которых упоминалось чуть выше, в данном случае совпадают с осями x (красная линия на рисунке) и y (зеленая линия). Центр симметрии объекта по двум осям (x и y) располагается в координатах Origin 3D модели (жирная желтая точка на углу модели, обведена синим кружком). Окно Свойств/Properties обведено фиолетовым. Вкладка Добавить модификатор/Add Modifier обведена ярко желтой линией. Модификатор «Mirror» выделен аквамариновым цветом в списке модификаторов в Blender.

Давайте теперь отразим часть нашей модели по оси икс и игрек, чтобы превратить ее в полноценный ангар. Модификатор Отражение/Mirror, который вы можете найти в панели Свойств/Properties во вкладке «Modifiers» (обведена зеленой рамкой на рисунке выше), если нажмете на кнопку Добавить модификатор позволяет создавать зеркальные копии выбранного объекта относительно центра (Origin) этого объекта (не путать с опорной точкой для вращения и масштабирования/Pivot point for rotating/scaling).
Поскольку я создавал модель, точно зная, что буду с ней делать дальше, то я заранее «плясал» от Origin, выставленного в крайнюю точку модели (кстати, не случайно совпадающей с началом координат, но об этом чуть ниже), относительно которой (точки) я буду зеркалировать имеющуюся в моем распоряжении часть 3D модели, не опасаясь наложения частей модели друг на друга. Установите флажки напротив опций отражения по оси X и оси Y (на рисунке ниже отмечены зеленым цветом ).


Одной из полезных опций в меню зеркалирования является возможность фиксировать вершины модели на осях симметрии, не давая зеркалируемым вершинам пересекать оси симметрии. Отметьте флажком опцию Clipping (отмечена красным ), отвечающую за данный функционал, и попробуйте переместить вершины 3D модели по направлению к оси симметрии или от нее и вы поймёте в чем заключается особенность данной опции.
Помимо Clipping’а в меню зеркалирования можно увидеть опцию Merge (синяя рамка на рисунке ), сливающую расположенные на краях модели вершины зеркального отображения меша и оригинала, создавая единый меш после применения модификатора (что-то вроде инструмента Remove doubles, описанного в статье . Поставьте галочку напротив данного пункта, в противном случае ваша модель будет представлена разрозненными мешами (в данном случае модель ангара будет представлена четырьмя кусками, которые можно будет выделить по отдельности в режиме редактирования меша), что может привести к артефактам на поверхности модели, например, в виде ошибок в расчете затенения в месте стыков ребер 3D модели в игровых движках, и вам придется совершать дополнительную работу по удалению продублированных вершин, прибегнув, например, все к тому же инструменту Remove doubles. Расстояние, на котором вершины считаются совпадающими, определяется значением, выставляемом во вкладке Merge Limit.

Более подробно про эти и другие артефакты, связанные с геометрией 3D моделей, нормалями, материалами, текстурами и шейдерами в игровых движках и 3D редакторах на примере Unity3D и Blender, вы можете прочитать в статьях:

Еще одна опция в меню зеркалирования объектов относится к текстуре и развертке — Textures с параметрами U и V – отвечающая за зеркалирование развертки относительно центра uv плоскости/uv пространства. На представленном выше рисунке слева внизу показана uv развертка ангара после применения модификатора зеркалирования со снятыми флажками напротив параметров U и V, а справа внизу – с проставленными флажками. В рамках данной статьи нам не нужно подобное зеркалирование uv развертки, так что данные флажки проставлять не нужно.

Вернемся к модели ангара. Если у вас получилось не то, на что вы рассчитывали (и ваша модель отличается от показанного на рисунке выше), а что-то наподобие того, что показано на рисунке ниже, то есть зеркалирование части 3D-модели произошло не по тем осям, что вы указали, то попробуйте выставить другие оси для отражения, поскольку отражение работает относительно локальных осей 3D-модели.


Подобное может произойти в том случае, если вы начали моделировать объект, а потом решили развернуть его в режиме объекта, предварительно выбрав его. Такое может произойти если вы повернете объект в режиме меша (т.е. перейдете в режим редактирования меша, выберете все вершины/ребра/плоскости меша через клавишу ‘A’ и повернете его), после чего повернете свою модель, но уже в режиме объекта.

Хотя направление локальных осей и может быть исправлено перед экспортом модели или в его процессе, лучше не прибегать к подобному решению, поскольку, если забыть про необходимость дополнительной подготовки 3D модели перед экспортом (о чем описано в статье ), такой подход вызовет неправильную ориентацию модели после ее импорта в игровые движки, например, Unity3D или Unreal Engine, как описано в статье . Также для того чтобы исключить путаницу с осями в процессе моделирования и экспорта, лучше совершить дополнительные манипуляции сейчас, чем потом. Чтобы выставить локальные оси модели согласно глобальным, выберите модель Правой Кнопкой Мыши и нажмите сочетание клавиш Ctr+A. Эта комбинация клавиш открывает меню «Apply», в котором необходимо выбрать пункт «Rotation & Scale», чтобы использовать существующий масштаб и ориентацию модели в пространстве в качестве параметров для масштаба и ориентации 3D модели по умолчанию, т.е. угол поворота вокруг всех трёх осей установить равным нулю (тем самым совместив направление локальных осей с направлением глобальных, а масштаб 3D модели — равным единице по трём осям.


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


Зачастую, крайняя точка модели не совпадает ни с одной ее вершиной. В нашем случае такая крайняя вершина есть — угловая вершина крыши (на самом деле эта вершина является центром будущей крыши, а не крайней ее точкой, как мы увидим далее). Однако в качестве опорной точки мы выберем не ее, а точку пересечения проекции вершины A на линию, на которой расположена вершина B (или точку пересечения проекции вершины B на линию, которой принадлежит вершина A, поскольку в данном случае это будет точка с одними и теми же координатами). Зачем нам нужна именно эта точка, станет понятно чуть позже.

Для того чтобы точно выставить Origin объекта в позицию описанную выше, выберите Правой Кнопкой Мыши вершину «B» и переместите в неё 3D курсор (Shift+S и затем выберите «Cursor to selected» в выпадающем меню «Snap») . Теперь выберите вершину A, нажмите клавишу ‘E’, чтобы выдавить ее (получившуюся эструдированную/выдавленную вершину назовем вершиной A1), и затем нажмите клавишу ‘ESC’, чтобы оставить вершину A1 неперемещенной (т.е. оставить ей координаты вершины A из которой она была выдавлена). Теперь, чтобы переместить вершину A1 на линию, проходящую через вершину B (т.е. в позицию 3D курсора, выставленного чуть ранее в позицию вершины B, но только по осям зед и икс), не снимая выделения с вершины A1, нажмите клавишу ‘S’, затем клавишу ‘Z’ и клавишу ‘X’ в нашем случае, после чего нажмите ‘0’ (ноль). Теперь вершина A1 имеет координаты крайней точки вашей 3D модели, т.е. координаты пересечении линий, которым принадлежат точки A и B. Таким образом точка A1 теперь имеет координаты будущей точки симметрии модели ангара, причем сразу по трем осям: X, Y и Z.


Чтобы зеркалирование выполнялось относительно этой точки (вершины A1), необходимо в ее координаты переместить Origin 3D модели. Чтобы это сделать, переместите 3D курсор в координаты вершины A1, как было описано выше (выделите вершину A1, нажмите комбинацию клавиш Shift+S и выберите “Cursot to Selected”). Теперь выйдите из режима редактирования вершин в режим объекта (клавиша ‘Tab’). Выберите ангар Правой Кнопкой Мыши и под одним из окон 3D вида выберите вкладку Object, которая открывает меню объекта. В этом меню выберите вкладку Transform, а в ней Origin to 3D Cursor, чтобы установить Origin в координаты 3D курсора.


Если у вас все еще включен модификатор Mirror/Зеркалирование, то в режиме объекта вы увидите верно отзеркалированную 3D модель относительно новых координат Origin’а. Если модификатор Mirror не включен, то включите его и выставьте его параметры, как было показано выше.
Когда мы выставляли Origin, мы создали вспомогательную точку A1 и, соответственно, ребро AA1, которые нам больше не нужны. Выберите в режиме редактирования объекта вершину A1и удалите ее, нажав клавишу ‘X’ или ‘Delete’ (не на цифровой клавиатуре) в открывшемся меню удаления “Delete” выберите «Vertices»).

Посмотрите на uv развертку в окне редактора развертки и изображения (UV/Image Editor). Развёртка не изменилась, поскольку новые отзеркалированные вершины ангара появятся только после применения модификатора отражения. Забежав вперед, скажу, что uv развертки всех четырех частей наложатся друг на друга после применения модификатора, т.е. результирующая uv развертка сложится по осевым линиям u и v (по сути x и y для uv пространства/плоскости заменены на u и v для того, чтобы избежать путаницы), как если бы вы свернули лист бумаги в четыре раза, превратив, например, лист формата А4 в лист формата A6. Вот такая особенность зеркалирования существует в Blender’е.

Выберите все вершины на uv развертке (клавиша ‘A’) и закрепите их, нажав клавишу ‘P’, чтобы они не расползлись после повторного создания uv развертки модели или её части, если такое потребуется. В результате данной операции «запиненные» (закрепленные) вершины развёртки будут выделены красным.
Не забывайте, что горячие клавиши в Blender’е работают только для области, в которой находится курсор мыши, т.е. если вы хотите сделать какие-либо действия с uv разверткой, то курсор мыши должен находится в пределах окна Редактора UV/Изображения. Если же вы хотите использовать горячие клавиши для каких-либо операций с 3D моделью (переместить ее, перейти в режим редактирования вершин, сделать или обновить uv развертку и т.д.), то курсор мыши должен находиться в окне 3D вида).

Давайте перед применением модификатора зеркалирования создадим копию ангара. Выберите в режиме объекта Правой Кнопкой Мыши модель ангара и нажмите сочетание клавиш Shift+D. Теперь нажмите и удерживайте клавишу ‘Ctrl’ и переместите мышь влево или вправо, чтобы переместить созданную копию ангара в соответствующее направление, после чего подтвердите новую позицию копии ангара щелчком Левой Кнопки Мыши или нажатием клавиши ‘Enter’.
Стоит отметить, что зажатая клавиша Ctrl во время перемещения объекта (клавиша ‘G’) позволяет перемещать его с заданным шагом сетки, а однократное нажатие клавиши ‘X’, ‘Y’или ‘Z’, ограничит перемещение объекта по одной из соответствующих осей. Нажатие ещё одной клавиши, символизирующей другую ось, добавит соответствующую ось к уже выбранной (или выбранным). Добавление третьей оси для перемещения вернет вас к режиму перемещения объекта по умолчанию, т.е. по трем осям (икс, игрек и зэд).

Помимо добавления осей, по которым может производиться перемещение объекта или его составных частей, в Blender’е существует возможность исключать оси из списка активных. Удерживая клавишу Shift и нажав одну из клавиш, символизирующих ось (X,Y или Z) позволит вам исключить соответствующую нажатой клавиши ось из списка осей, доступных для перемещения по ним вашего 3D модели или ее части.


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

Давайте на время забудем про созданную копию ангара и вернемся к его оригиналу, с которого она была снята.
После создания копии ангара примените модификатор зеркалирования на оригинальной модели, для чего, находясь в режиме объекта, нажмите кнопку «Apply» во вкладке модификатора зеркалирования. Если в верхней части Blender’а и/или в позиции мыши появилась надпись “Modifiers cannot be applied in edit mode”, выйдите из режима редактирования вершин/ребер/поверхностей (клавиша ‘Tab’) и примените модификатор зеркалирования еще раз. Все дело в том, что применение модификаторов к 3D модели возможно лишь в режиме объекта, но не в режиме редактирования меша.

На самом деле, перед экспортом модели необязательно применять модификатор зеркалирования, а можно поставить флажок напротив опции “Apply Modifiers” в меню экспорта (в Бета версии Blender 2.76 данная опция недоступна, поскольку применение модификаторов выполняется автоматически).


Как можно заметить на рисунке, после применения модификатора зеркалирования у 3D модели остались ребра, расположенные вдоль и поперек осей симметрии, если их удалить (на самом деле, растворив, использовав Dissolve Edges в меню удаления), то количество треугольников можно было бы снизить с 252 до 200 штук, но тогда бы потерялся бы весь смысл того, что мы здесь делали за исключением использования модификатора зеркалирования, поскольку uv развертку пришлось бы обновлять, что превратило бы ее в ту, что была показана для 3D модели, созданной обычным способом. Видите, в каком плачевном состоянии uv развертка (справа внизу) после растворения ребер? Есть возможность снизить количество треугольников, о которых пекутся многие производители игр, особенно для мобильных платформ, и о нем мы расскажем дальше в этой статье.

На этом этапе вы уже можете удалить вершину, которая отвечает за возможность создания дверного проема, что, кстати, снизит на 12 количество треугольников, из которых состоит 3D модель ангара.
Теперь пришло время назначить нашей модели материал, для чего выберите ее Правой Кнопкой Мыши и во вкладке Material/Материал (круг, разделенный на четыре части) в окне Свойств/Properties щелкните на кнопке “New”. Если материал не будет создан, то после импорта модели в Unity для нее будет материал по умолчанию.

Ну вот, ваша модель ангара готова и теперь вы можете экспортировать ее для последующего импорта в игровые движки, например, Unreal Engine 4 , Amazon lumberyard , CryEngine , Unigine , Delta Engine , Unity3D , NeoAxis 3D Engine и других.



На рисунке показан процесс импорта 3D модели в формате FBX в Unity3D, а также уже импортированный ангар и помещенный на сцену. Также на рисунке в меню Ассетов показана 3D модель ангара с перепутанными осями.

Импортируйте в Unity3D какую-нибудь текстуру, желательно бесшовную (более подробно про бесшовные текстуры описано в статье про замощение текстурой, атласы и переодевание персонажей ), например, текстуру бетона . Назначьте материалу модели текстуру в редакторе Unity3D.


На рисунке показана затекстурированная 3D модель ангара. Зелеными стрелками показаны два варианта назначения текстуры: верхняя стрелка с созданием нового материала, нижняя стрелка – назначение текстуры уже созданному материалу. На этом рисунке оси 3D модели уже исправить.

Посмотрите на крышу ангара, его боковые и торцевые стороны, а точнее на текстуру по одну и другую стороны осей симметрии нашей модели. Как вы можете заметить, текстура зеркально отобразилась относительно этих осей. Это является одновременно и плюсом, и минусом. Минус заключается как раз в нечитабельности надписей, нанесенных на 3D модели с подобной разверткой. А вот к плюсам можно отнести отсутствие повторяемости текстуры, как если бы текстура была бы затайлена на поверхности 3D модели.Более подробно о замощении текстуры/тайлинге текстуры можно прочитать в статье .
Отсутствие резких переходов на осях симметрии 3D модели (в отличие от описанных выше искажений текстуры на швах модели) обусловлено тем, что острова развертки симметрично отраженных частей нашей 3D модели в точности повторяют друг друга: координаты вершины uv островов совпадают. Если бы они были разнесены по uv плоскости, то проявились бы несоответствия на краях uv развёртки. Подобного результата добиться другим способом без создания швов по осевым линиям можно, разве что, совмещением uv островов вручную или если позаботиться написанием скрипта на python’е, создав соответствующий add-on. Ну и, конечно, если доводить текстуры на швах модели вручную, как было описано ранее.

Описанный выше способ создания симметричных моделей через предварительное создание uv развертки с последующим зеркалированием отлично подходит для небольших моделей, моделей, использующихся в мобильных играх, а также для LOD’ов (англ. Levels Of Detail - уровни детализации), имеющих много меньше треугольников, по сравнению с основной моделью здания или персонажа. 3D модели с низким уровнем детализации модели служат заменой основной хорошо проработанной 3D модели для отображения на больших расстояниях от камеры в игровых сценах с целью снижения нагрузки на GPU и/или CPU. В онлайн генераторе персонажей Character Generator от Autodesk LOD’ом можно назвать уровень детализации Crowd, генерируемый по желанию вместе с lowpoly моделью. С другой стороны, для AAA проекта, LOD’ами могут являться и Crowd, и Low, и, в некоторых случаях, даже Medium poly персонажи.


Посмотрите на рисунке ниже, сколько места освободилось на uv развертке, а значит, размеры островов развертки можно увеличить, что поднимет разрешение текстуры на каждой отдельной частью 3D модели персонажа или здания, следовательно, увеличит разрешение текстуры 3D модели вцелом.


Зеркалирования позволяет не только снизить занимаемое разверткой место на uv плоскости или увеличить качество текстуры модели, но и позволяет создавать, например, братьев, ведь не обязательно при скульптинге включать зеркальное отражение. Также такой подход может использоваться для создания двух различных карт нормалей, на одной из которых может быть продемонстрирован персонаж до попадания в “мясорубку” боя или лапы монстров, а на другой — после.

Альтернативная uv развертка 3D модели ангара в Blender. Избавляемся от бросающейся в глаза повторяемости текстуры.

Однако всем и всегда хочется сократить затраченное на моделирование и текстурирование 3D модели время не только для LOD’ов и примитивных моделей, но и для основной модели. Что же делать в этом случае? На помощь приходит смекалка, наблюдательность и жизненный/игровой опыт. Как мы все знаем из жизни, нельзя одновременно увидеть противоположные стороны объекта (конечно, без использования подручных средств, таких как зеркало или система зеркал, или, например, шейдеров, если говорить о компьютерных технологиях). Следовательно, если разделить uv развертку на две части, например, вдоль продольной или поперечной оси симметрии, то можно вторую часть uv развертки зеркально отразить относительно выбранной оси симметрии, так что не особо придирчивый игрок не заметит того, что текстура модели повторяется.

Выделите Правой Кнопкой Мыши ангар перейдите в режим редактирования меша (клавиша ‘Tab’). Если у вас выбран режим редактирования вершин меша, то для удобства смените его на режим редактирования ребер. Чтобы выбрать режим редактирования ребер меша, нажмите сочетание клавиш Alt+Tab и в открывшемся меню режима выделения выберите ‘Edge’.
Выделите осевые поперечные ребра при помощи Правой Кнопки Мыши в сочетании с клавишей Shift, разделяющее ангар на две части и пометьте их в качестве шва uv развертки (Shift+E > «Mark Seam»).
Ребра меша также можно выбирать и в режиме вершин: нажмите и удерживайте клавишу Alt и кликните Правой Кнопкой Мыши на одном из ребер, проходящих по поперечной оси симметрии, чтобы активировать инструмент loop select, позволяющий выделить сразу ребра, являющиеся продолжением друг друга (образующие или потенциально образующие петлю).


Поместите курсор поверх одной из вершин/ребер 3D модели в одном из окон 3D вида и нажмите клавишу ‘L’, чтобы выбрать часть модели, лежащей в пределах одного из uv островов. Такой режим выбора элементов 3D модели установлен по умолчанию для режима выбора связанных элементов (Select Linked, отмечено фиолетовым на рисунке ниже), но вы можете сменить его, если захотите выбрать подобным способом элементы одной модели; вершины/полигоны, имеющие одинаковый материал; принадлежащие одной развертке; ограниченные крутыми/острыми ребрами; или как в нашем случае, ограниченные швом, и, соответственно, принадлежащие одному острову uv развертки.


Теперь откройте меню развертки, выбрав соответствующую иконку под окном редактирования развертки (на рисунке выше обведен голубым прямоугольником), и выберите пункт Отражения/Mirror, в котором выберите ось, по которой хотите зеркально отразить выбранные вершины uv развертки (можете по желанию выбрать X или Y). Осталось лишь уменьшить масштаб uv развертки. Выберите все вершины, например, нажав клавишу ‘A’ или использовав для этого инструмент прямоугольного выделения (клавиша ‘B’) или инструмент выделения окружностью (клавиша ‘C’). Теперь нажмите клавишу ‘S’, чтобы активировать масштабирование и переместите мышь так, чтобы uv развертка уместилась в выделенном под нее uv пространстве, отмеченном сеткой (или черным фоном, если вы уже успели создать изображение в меню Image). Вы также можете задать коэффициент масштабирования с клавиатуры, если после клавиши ‘S’ введете с клавиатуры “2”, “3”, “4” и т.д. для увеличения масштаба uv развертки или если введете последовательно “0”, “.”, “5”, “0”, “.”, “1” и т.д. для уменьшения масштаба uv развертки. Задание параметров работает не только для масштабирования (причем не только uv развертки, но иобъектов на сцене), но и для других модификаторов!


Операцию зеркалирования uv развертки можно проводить не только вдоль шва. Если перед созданием шва вы выполните зеркалирование выбранных вершин развертки (только теперь их придется выбирать вручную, например, при помощи прямоугольного выделения в окне 3D вида, активируемого клавишей ‘B’), то получите тот же результат.

Также, если вас не устроили параметры масштабирования, вы можете сразу после завершения операции над объектом нажать клавишу ‘F6’, чтобы открыть меню установки параметров последнего действия и изменить их. Клавиша F6 работает не только для модификатора масштабирования, но и для перемещения, выдавливания, вращения и многих других операций, выполняемых в Blender’е.


Вы также можете создать поперечный шов на 3D модели и разнести uv острова в пространстве и совместить противолежащие части ангара (лежащие по диагонали друг относительно друга, и которые не могут быть видны наблюдателю одновременно, за исключением случаев, когда камера – изометрическая, так что в текстуре крыши при пристальном внимании можно и рассмотреть повторение текстуры)


Вы можете попробовать “удалить” (снять маркировку швов с ребер) созданные поперечный и продольный шов и посмотреть, что получится. Однако не стоит проводить такие эксперименты после того, как вы разнесли острова развертки по uv плоскости.


Создаём контейнер из ангара.

Если вы строго выполняли все то, что было написано в данной статье до этого, и сдерживали своё любопытство в том, что будет, если к уже выбранным двум осям, выбранным для зеркалирования модели, добавить третью ось z, то ваш час настал. Те, кто уже попробовал самостоятельно поставить флажок напротив оси z в настройках модификатора отражения/зеркалирования, я надеюсь, также смогут узнать что-нибудь полезное из этой завершающей части статьи.
Полагаю, что вы уже поняли, что для того, чтобы превратить ангар в контейнер, необходимо добавить в модификаторы зеркалирования ось z. Чтобы это сделать, выберите копию ангара, которую мы создали чуть выше, тот самый ангар, на котором был использован модификатор зеркалирования, но не был применен. Откройте панель модификаторов и добавьте ось z к уже отмеченным флажками осям x и y. Теперь отражение четвертушки ангара осуществляется относительно трёх осей, что превращает бывший ангар в контейнер.

Статье про экспорт 3D моделей из Blender’а в Unity3D . Расположение модели на сцене роли не играет, важно только расположение Origin’а относительно центра 3D модели. Origin определяет «точку отсчёта» для модели, т.е., например, в Unity 3D он определяет «нулевые координаты» 3D модели/ориентацию и является точкой, относительно которой производится вращение объекта (через скрипт), т.е. является аналогом pivot point в Blender’е. Сейчас Origin контейнера находится в его центре, так что если перенести контейнер в Unity (применив модификатор зеркалирования до или во время экспорта модели) и перенести его на сцену, выставив ему нулевые координаты в пространстве Unity, то половина контейнера окажется под полом, а половина — над ним, так что мы получим все тот же ангар.


Конечно, можно вручную в Unity3D выставить необходимое смещение по оси y и затем создать префаб объекта с уже установленными координатами (можно еще создать пустышку и сделать ее родителем для 3D модели контейнера, так чтобы потом вращать эту самую пустышку с целью повернуть контейнер вокруг нее, а не вокруг центра контейнера, можно создавать множество лишних костылей), чтобы ящик стоял на полу, а можно уже в Blender’е выставить Origin контейнера в центр его дна. Стоит отметить, что расположение Origin зависит от типа 3D модели и цели, с которой она была создана, а также от дизайнерской задумки. Также Origin играет немаловажную роль при использовании RigidBody в Unity3D, например, при установке центра масс относительно Origin Rigidbody.centerOfMass .
Прежде чем установить Origin в точку с новыми координатами в Blender’е, необходимо применить модификатор зеркалирования, поскольку, как мы заметили раньше в статье, зеркалирование частей модели происходит относительно этого самого Origin. Кстати, перемещение вершин в режиме редактирования меша с включенным Clipping’ом является отличным способом изменить размер своей модели без использования модификатора масштабирования (конечно). Без включенного clipping’а – отличным способом создать сразу четыре одинаковых 3D модели без создания копий модели.

Чтобы изменить взаимное расположение меша и Origin’а перейдите в режим редактирования объекта (‘Tab’), выберите все вершины/ребра/полигоны меша (‘A’) и переместите их (‘G’), используя клавишу ‘Ctrl’ для перемещения с шагом.

Еще одним способом установки Origin’а является использование 3D курсора. Посе применения модификатора зеркалирования выберите в режиме редактирования меша все нижние вершины контейнера (‘B’) и нажмите сочетание клавиш Shift+S, чтобы открыть меню шага “Snap”, и выберите в нём пункт «Cursor to Selected», чтобы установить 3D курсор в геометрический центр выбранных вершин (более подробно про выставление 3D курсора вы можете прочитать в упомянутой статье про экспорт объектов в Blender 3D). Теперь выйдите из режима редактирования меша (вернитесь в режим объекта) и в панели, расположенной под окном 3D вида, выберите вкладку объекта “Object”, после чего в выпадающем меню выберите «Transform», в котором, в свою очередь, выберите «Origin to 3D Cursor”, чтобы установить Origin контейнера в координаты 3D курсора.
Вместо заключения.

Используя подобную технику создания 3D моделей при одном и том же размере текстуры можно добиться более качественного отображения текстуры на 3D модели. Данный подход отличается отсутствием необходимости создания дополнительных швов развертки, увеличивающих количество вершин 3D модели при экспорте ее в игровые движки. В статье более подробно описана зависимость количества вершин 3D модели от количества швов uv развертки и режима сглаживания 3D модели. Однако такой подход приводит к повторяемости текстуры на сложенных друг на друга участках развертки, что, как описано в статье, решаемо.
Описанный в статье способ оптимизации 3D модели можно использовать не только для более качественной визуализации 3D модели в игровых движках, таких как NeoAxis 3D Engine 15 948

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

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

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

Для управления разверткой программа предлагает использовать специальный редактор UV/Image Editor . Кроме того, уже имеется заготовка расположения окон, оптимально подходящая для работы с текстурами (рис. 4.83). Выбрать ее можно из менюScreen Layout на заголовке программы (пунктUV Editing ).

Как видите, в этом режиме имеется всего два окна: UV Editor и3D View . Такая конфигурация окон действительно самая удобная, но вы можете создать личную под свою задачу.

Рис. 4.83. Раскладка окон UV Editing

Работа с UV-координатами возможна только в режиме редактирования объекта. Причем можно изменять развертку как для всего объекта целиком, так и для выделенной части структуры.

Имеется основное меню UV Mapping для управления разверткой, вызываемое клавишей в окне3D View . Оно содержит 10 пунктов.

 Unwrap (Развертка). Наиболее быстрый способ создания развертки. При этом полученная сетка будет оптимально покрывать всю текстуру.

 Cube Projection (Кубическая проекция). Оптимально подходит для моделей кубической формы. Это могут быть модели: шкафа, телевизора, стола.

 Cylinder Projection (Цилиндровая проекция). Подходит для моделей цилиндрической формы: карандаши, стаканы.

 Sphere Projection (Сферическая проекция). Подходит для моделей сферической формы (рис. 4.84).

 Project from View (Экранная проекция). Полезный режим, когда развертка создается по принципу: "как есть при просмотре". Вы можете развернуть модель или сцену в нужном ракурсе, а программа выполнит своего рода снимок экрана.

Рис. 4.84. Пример раскладки сферы с помощьюSphere Projection

 Project form View (Bounds) (Экранная проекция с заполнением). То же самое, что и выше рассмотренная опция, но в этом случае развертка будет занимать всю текстуру.

 Reset (Сбос). Сброс координат.

 Smart UV Project (Умная развертка). Инструмент для разбиения развертки на несколько независимых зон.

 Lightmap Pack (Развертка для карт освещенности). Создание специальной развертки для использования с картамиLightmap (освещение).

 Follow Active Quads (Следовать за активными квадратами). Работает с выделенными гранями и старается выполнить развертку, пока цепочка полигонов не заканчивается. Работает не всегда оптимально.

Результат работы развертки объекта будет отображаться в окне UV Editor . Не беда, если она не подходит форме рабочей модели. Всегда можно выбрать в менюUV Mapping пунктReset и начать все сначала.

Теперь самое время загрузить текстуру и совместить развертку с картинкой. Для управления текстурами на заголовке окна UV Editor имеется стандартная область для выбора или создания новой текстуры (рис. 4.85).

Рис. 4.85. Управление текстурами

Попробуем поиграть с UV Editor на практике. Включите раскладку оконUV Editing . Выделите имеющийся куб и перейдите в режим редактирования. Нажмите клавишу и выберите пункт менюCube Projection .

Теперь создадим для работы новую текстуру. Нажмите кнопку New в заголовке окнаUV Editor . Появится окно с настройками текстуры (рис. 4.86):

 Name (Имя);

 Width (Ширина) - указывается в пикселах;

 Height (Высота);

 Color (Цвет) - область выбора цвета для заливки;

 опция Alpha (Альфа-канал) - если включено, то текстура будет содержать дополнительный канал прозрачности;

 UV Test Grid (Тестовая решетка) - генерируемая текстура;

 32 bit Float (Глубина 32 бит) - глубина цвета.

Рис. 4.86. Настройки новой текстуры

Выберите пункт UV Test Grid и нажмите кнопкуOK . Под имеющейся разверткой куба должна появиться текстура. Для удобства просмотра включите в окне3D View

режим Texture в менюViewport Shading (рис. 4.87).

Рис. 4.87. Развертка с текстурой и сам куб

UV Editor позволяет управлять размещением как всей сетки целиком, так и отдельных ее элементов. Здесь действуют стандартные возможности окна3D View по выделению, перемещению и масштабированию элементов.

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

Иногда бывает нужно определить расположение конкретного элемента структуры Mesh -объекта на текстуре. В этом случае достаточно выделить нужный элемент в окне3D View .UV Editor после этого покажет только те вершины сетки, которые относятся к данному элементу.

По такому же принципу происходит создание развертки для выделенных полигонов объекта. Попробуйте выделить две смежные грани и выбрать пункт Unwrap в менюUV Mapping . С этого мгновения эта сетка становится отдельным элементом развертки куба. Вы можете свободно манипулировать ее, как заблагорассудится. Такой элемент еще называется "островком". Чтобы увидеть полностью всю сетку, достаточно выделить весь объект.

UV Editor имеет свой собственный набор кнопок, переключающий режим выделения, наподобие такого же, как в окне3D View (рис. 4.89).

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

Рис. 4.88. Результат изменения масштаба развертки

Рис. 4.89. Кнопки управления выделением

ка. Ее назначение - в выделении островков. С этим набором переключателей можно не бояться заблудиться в дебрях развертки.

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

Seam (Шов) - инструмент, позволяющий с легкостью "разрезать" модель на куски, пригодные для создания развертки. Естественно, никакого реального разделения объекта не происходит, просто таким образом указываются границы, по которым Blender сможет выполнить развертку.

Работа эта выполняется в окне 3D View . Принцип действия заключается в следующем:

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

2. Создание шва. Для этого используйте меню:Mesh | Edges | Mark Seem . Отмеченные ребра окрасятся в красный цвет (рис. 4.90).

BLENDER. Делаем UV карты (развертки) для модели March 13th, 2012

Что такое UV карта? Если Вы когда нибудь клеили модели бумажных самолетиков или корабликов – то вы знаете что такое UV карта!

Это контур детали на плоскости, который можно вырезать, согнуть в нужных местах и сложить/склеить из него модель.

UV нужны для того чтобы их можно было раскрасить и склеить не просто модель – а раскрашенную модель.

Загружаю модель в Blender. Выделяю верхнюю часть модели и переходу в режим редактирования (TAB).

Слева открываю окно с UV/Image Editor

Выбираю Image –> New image –> Create

В окне с моделью нажимаю U –> Unwrap All – получаю:

Blender попытался развернуть модель на плоскость… Как будто катком проехал. Не просто сделать из объемной модели плоскую раскладку. Чтобы этого добиться нужно в некоторых местах модель разрезать а потом уже разворачивать

Выделяю вершины по которым хочу наметить первый разрез:

CTRL + E = Mark Seam - помечаем для разреза (делаем шов).

Разрез выделился красным.

Попробуем снова развернуть модель. Выделяем все точки (А) U -> Unwrap

Обратите внимание на маленькую желтую точку в правом нижнем углу UV Image Editor. Это наша отрезанная голова!

Как понять где что находится на UV карте? Достаточно нажать кнопку “Keep UV and edit mode mesh selection in sync”

Теперь, выделив точку на модели, – эта точка подсветится и на UV карте. И наоборот.

Еще одна полезная фича – усреднение размеров частей полученной UV карты (Average Island Scale):

Island (острова) это независимые части UV модели, полученные после разрезания. В результате голова заметно укрупнилась.

Сделаю еще 2 шва на голове:

Снова делаю развертку. Можно вручную изменить масштаб и перенести части UV на развертке как нам удобно. Для этого отключаю “Keep UV and edit mode mesh selection in sync” и использую те же методы работы как и с мешем.

Отрежу руки.

Думаю, понятно почему у меня получились такие спилы вместо ювишек. Исправляю ситуацию.

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

Развертка без примененного модификатора Mirrow. Вижу только половину модели:

Намечаю еще 2 шва:

Применяю модификатор Mirrow.

В результате получаю вот такую развертку

Полезные функции при окончательном формировании развертки:

Ctrl +A = Average Islands Scale (Усреднение размеров островов)

Ctrl + P = Pack Islands (Уместить все острова в пределах развертки)

Еще можно выделить одну точку на острове и нажать L – выделится остров целиком.

В результате я перераспределил острова следующим образом:

Делаем Export UV Layout.

Давайте немного углубимся в отображение текстур и посмотрим, как точно накладывать текстуры на объекты. Мы рассмотрели основные проекции, но 3D программа будет включать в себя и так называемые UV развёртки. UV развёртки отображают плоское, 2D изображение на 3D объект. И большая часть программного обеспечения будет иметь то, что называется UV-редактором. Вот здесь у нас есть простой куб с шестью гранями. Если я выбираю одну из этих граней, то в UV редакторе мы увидим, какое изображение соответствует это области. Теперь мы можем взять его и перемещать в редакторе, чтобы скорректировать отображение, или мы можем спуститься на UV уровень и фактически управлять им на детальной основе. Таким образом, это дает нам полный контроль над тем, как это изображение совмещается с объектом.

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

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

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

Таким образом, когда Вы работаете с UV, мысленно разворачивайте свои объекты, даже если они сложны, и думайте о том, как бы Вы их сшивали из плоских частей.