Нормали в cinema 4d это
Привет! Мы продолжаем цикл статей по пайплайну разработки стилизованных персонажей. Сегодня расскажем, что такое этап запечки, и как перенести детализацию с высокополигональной модели (high poly) на низкополигональную (low poly).
Запечка (Bake) — четвёртый этап ААА-пайплайна. На прошлом мы сделали развёртку, а сейчас будем её использовать для создания Normal Map, AO и Color ID.
Примечание: нам часто говорят, что правильнее писать «запекание», а не «запечка». Мы пишем «запечка», потому что это устоявшийся термин в индустрии.
Гугл на слово запечка показывает то, что нам нужно, а на слово запекание предлагает запечь курочку
3. Карта Color ID
У наша модель состоит из разных материалов: металла, камня, дерева и ткани.
Во время текстурирования нам нужно быстро выделять геометрию, которая будет, например, металлом или деревом.
Чтобы это можно было сделать в один клик внутри Substance Painter, нам нужно запечь карту Color ID. Она позволяет быстро выделять большие куски. А в программе для текстурирования эту группу объектов можно легко затекстурить.
Вот так, с помощью этой карты мы в считанные секунды красим модель в разные цвета:
Быстро красим модель в Substance Painter, используя карту Color ID
Для того, чтобы создать карту Color ID, нам нужно покрасить high poly-модель в разные цвета. Один цвет — это одна группа объектов, как правило разбитая по материалам. Например, всё дерево на Color ID оранжевое, вся кожа —розовая, ржавый металл — синий, шерсть — голубая, а новый и чистый метал —зелёный.
Это не цвета будущей модели — здесь они могут быть любыми. Главное, чтобы они были контрастными.
Что такое запечка
Взглянем на low poly модель, которую сделал наш студент Leon.
Низкополигональная модель, созданная на этапе ретопологии
В ней минимум полигонов и чистая сетка. Эта модель будет загружаться в игровой движок.
Есть ещё high poly модель с высокой детализацией и скульпт.
Хайполи модели под сабдив и скульпт
Технология запечки позволяет нам перенести все детали с high poly и скульпта на low poly-модель.
В итоге, в игровом движке будет low poly модель с минимальным количеством полигонов, но выглядеть она будет так, как будто на ней есть все эти детали:
Для внимательных: ID Map никак не влияет на вид модели, в отличие от нормала и АО, но она пригодится при текстурировании, поэтому эту карту тоже будем печь.
Что нужно знать о Нормале
Небольшие чёрные полосы на нормале — это нормально.
Никто не будет разглядывать нашу модель под микроскопом.
Чёрные полоски на нормале
Почему не стоит сильно волноваться о чёрных полосах?
Игрок почти всегда видит модель в игре на расстоянии. Поэтому не нужно тратить несколько часов, чтобы убрать чёрные полоски на нормале:
Та же модель, но на расстоянии. Чёрные полосы не режут глаза, — значит, всё окей.
Из чего состоит карта нормалей
Normal map создает иллюзию объёма благодаря трем картам в каналах текстуры: красный, зелёный, синий.
Чтобы переключаться между каналами, откроем файл с нормалом в Photoshop и зайдём во вкладку Channels.
Красный канал показывает искажение вертекс нормалей по горизонтали. Чем светлее пятно на красном канале — тем сильнее виртуальная поверхность наклонена вправо, а чем темнее — тем больше «поверхность» бликует влево.
Красный канал нормала
Зелёный канал — работает так же, но искажает шейдинг по вертикали.
Светлый-блик поворачивается наверх, а тёмный — вниз.
Зелёный канал Нормала
Чтобы лучше понять разницу между этими двумя каналами, посмотрим на эту часть модели:
У бочки на high poly есть фактура дерева.
Затемнение идёт только по одной из осей.
Так как красный канал нормала показывает искажение вертекс-нормалей только по горизонтали, а скосы между досками как раз и отклоняются влево или вправо, то на нём будет много информации.
А зелёный канал — показывает искажения по вертикали. Так как виртуальные плоскости не отклоняются вверх/вниз, то затемнений почти нет, то информации на нормале в этом канале почти не будет:
Зелёный и красный канал нормала на примере бочки
Красный и зелёный каналы — основные для нас (как моделлеров).
Но у Нормала есть ещё синий канал.
Синий канал имитирует углубления в объекте.
В играх он практически не используется.
За счет изменения синего цвета на нормале создаются искажения на плоской поверхности.
Если на синем канале есть артефакты, можно просто выключить этот канал, т.е. отключить синий цвет у нормал мапа в фотошопе. Или просто их замазать артефакты кисточкой.
Синий канал нормал
Больше про три канала Нормала — в этой статье.
Как это работает?
Мы берём low poly модель и добавляем на неё запечённые карты Нормала и АО. А эти карты обманывают поведение игрового света. Модель начинает бликовать так, как будто на ней есть все эти фаски, вырезы и прочие детали.
Для тех, кто не понимает, о чём речь: мы очень подробно писали про вертекс нормали и принцип работы нормала в статье про сетку.На этом этапе пайплайна — запечке, наша задача: запечь 3 карты.
1) Normal map — карту неровностей
2) Ambient Occlusion (AO) — карту затенения
3) Color ID — цветные маски
В Marmoset можно запечь гораздо больше карт, про это будет дальше.
Мы добавим эти карты на нашу low poly модель, на ней появится вся детализация с high poly и скульпта, а благодаря карте Color ID модель будет легче разбить по материалам и текстурировать.
Все карты создаются на основе развёртки, которую мы сделали на прошлом этапе пайплайна. Без развёртки карты не запекутся. Если есть ошибки на развёртке или low poly модели, то мы столкнёмся с кучей проблем.
Ссылки на теорию
Вот несколько наших статей, прочитав которые ты точно поймёшь, как работает «магический» трюк с обманом вертекс нормалей.
В каком формате лучше хранить нормал
После запечки, скорее всего, придётся вносить изменения в нормал, используя фотошоп.
Поэтому файл лучше сохранять в форматах Targa или TIF.
При сохранении есть выбор, сохранять в 24 или 32 bit.
Если есть Альфа-канал — сохраняем с 32 bit.
Если Альфа-канала нет — в 24 bit.
Дополнительные карты
В мармосете куча карт, которые можно запечь.
Их в разных пайплайнах используют разные художники для текстурирования:
Position map с помощью градиентов помогает накладывать текстуры в разных плоскостях модели.
Сurvature выделяет все края на модели и упрощает создание затёртостей и повреждений. Очень полезная карта на ряду с АО.
Thickness запекает толщину, что необходимо для имитации подповерхностного рассеивания.
Часто для hand paint текстур пекут свет прямо на текстуру. Иногда необходимо запечь альфу — карту прозрачности.
Еще мармосет умеет печь цвета и материалы с других моделей и текстур, это иногда помогает не переделывать много текстур с нуля.
При создании полигонов не исключается возможность, что вы ошибочно создадите полигоны, нормали которых будут направлены в неверном направлении. Но по этому поводу особо волноваться не стоит. Программа Cinema 4D предоставляет вам функцию Выровнять нормали , которая приводит при её использовании к развороту нормалей.
Выравнивание отличающихся нормалей в основном направлении.
Cinema 4D производит выравнивание нормалей согласно преобладающего направления полигонов для конкретного объекта (или выделенных полигонов).
Если поверхности не выделены или не установлен режим правки по полигонам, при этом все нормали будут развёрнуты.
На заметку
Cinema 4D не можете самостоятельно определить внешнюю и внутреннюю стороны объекта. Например, примитив сфера имеет внешнюю и внутреннюю стороны. Но как определить внешнюю и внутреннюю стороны для простой плоскости? Это вопрос определения. Внешняя сторона определяет, как правило, направление, в котором показывают нормали. Внутренняя сторона в соответствии с этим является противоположным направлением. Это имеет определённое значение при проекции текстуры, когда вы имеете возможность проецирования только с лицевой или обратной стороны (смотрите Сторона).
С выходом Cinema 4D R19, эта команда была освобождена от некоторых ограничений:
Команда обладает следующей опцией.
Нормали : если объекту назначен тег Нормали с сохранёнными в нём нормалями вершин, то эта опция определит, нужно ли повернуть нормали выравниваемого полигона или оставить их в том положении, в котором они сохранены в теге.
А для чего нужны нормали?
Как изложено выше, вы определяете внешнюю и внутреннюю стороны объекта на основании направления нормалей. Кроме этого, это является важным при показе в окне редактора программы.
После создания полигонов не исключается ситуация, когда они остаются невидимыми. Это зависит от Игнор. тыл поверхности . Для экономии производительности процессора, при активной установке , в окне редактора для нас будут показаны полигоны, которые мы можем видеть только на переднем фоне объектов. Полигоны, которые вы видите сбоку, при этом не будут показаны. Для сферы и объёмных объектов в режиме Затенение Гуро , вы не видите существенного изменения, так как обратная сторона для вас всё равно является невидимой. Но попробуйте выделить все полигоны этой сферы и произведите поворот нормалей. Сейчас вы видите только обратную сторону сферы, а лицевая сторона является отключённой, так как вы произвели разворот нормалей. Внешняя сторона сейчас является наружной и благодаря игнорированию тыла поверхности, является невидимой.
В таком случае вам надо отключить установку Игнор. тыл поверхности и развернуть нормали этих полигонов.
Для таких инструментов, как Сглаживание шифт , Выдавливание и так далее, направление нормалей имеет решающее значение. Эти инструменты моделирования производят перемещение постоянно в направлении нормалей. Если вы хотите переместить несколько поверхностей с различными направлениями нормалей, используя для этого инструмент Сглаживание шифт , вы получите неприемлемый результат, так как поверхности при этом будут перемещены также в противоположных направлениях.
Дополнительный и при этом не менее важный случай, это сглаживание с отключённой установкой ограничения угла Фонг. Cinema 4D определяет на основе угла между поверхностями, что на соответствующей грани должно быть создано сглаживание или нет. Если вы при этом имеет две поверхности с их различными направлениями нормалей, в этом случае программе Cinema 4D будет предоставлена не корректная информация об углах, что при процессе сглаживания приведёт к нежелательным результатам.
При Смещении, равномерное распределение нормалей играет одну из важных ролей.
Тег нормалей
Файл значка / ID
Иногда при работе с многочисленными значками, которые выглядят одинаково, вы хотите получить лучший обзор всего этого. Это то, что делает эта функция. Объектам и тегам могут быть назначены их собственные значки, или существующие значки могут быть переназначены или окрашены:
Примеры для тегов, которые были окрашены, заменены на существующие и пользовательские теги.
Обратите внимание на команду Показать пользовательские значки в меню Вид диспетчера объектов, которая позволяет переключаться на значки Cinema 4D.
Есть несколько объектов (например, генератор Houdini) и теги (например, теги материалов), которые нельзя окрашивать, поскольку они контролируются непосредственно Cinema 4D.
Здесь вы можете:
Эта функция может быть использована для окраски существующего или пользовательского значка. Вы можете выбрать один из следующих вариантов:
Теги не имеют цвета отображения и поэтому могут быть окрашены только с использованием собственного цвета. Для этого активируйте опцию цвет значка .
Эти команды могут использоваться для сохранения значков в качестве предустановки или для загрузки значков. Пользовательские значки сохраняются и управляются с помощью браузера библиотек в разделе предустановки/пользовательские (в соответствующей папке).
Для всех объектов и элементов (например, шейдер) вы можете назначать любые названия. С присвоенным вами названием, этот объект или элемент, будет показан в окне редактора XPresso или шкалы таймлайна.
Если элемент (Объект, Тег, Трек и так далее) были назначены для определённого слоя, вы можете найти здесь название слоя и цвета. Слои могут быть перетащены из проводника слоёв или из аналогичных полей с помощью курсора мыши в это поле. Вы можете при этом посредством маленького меню, которое скрывается за маленьким треугольником, производить назначение слоёв или удалять необходимые элементы из актуального слоя. Установка Показать в менеджере приведёт к открытию проводника слоёв.
Кликните на маленький 3-х угольник, расположенный слева от названия Слой , для показа его основных свойств. На основе этого вы имеет доступ ко всем свойствам слоя, которые в обычных условиях вы можете изменить только при отдельном использовании Менеджера слоёв .
Вы можете для каждого выражения назначать приоритет. При самостоятельно созданных выражениях Python это имеет достаточный смысл. Это может играть определённую роль, когда и как будет произведена оценка такого выражения: как следствие – одно и тоже выражение может приводить к абсолютно различным результатам, в зависимости от времени его оценки и выполнения. Поэтому для параметра Приоритет вы можете теперь определить точную последовательность выполнения этой функции.
Учтите, что эта оценка чередования позиций, для каждого кадра анимации должна совершить полный цикл опроса!
Значение цифрового поля может иметь границы в пределах от –499 и до 499, и относится при этом на расположенные слева выбранные категории. При этом у вас есть выбор между следующими критериями - Начальный, Анимация, Выражение, Dynamics, Генераторы.
Для выражений с одинаковым приоритетом, решающей является их позиция в менеджере объектов: выражения будут обработаны согласно имеющейся для них последовательности тегов (а также согласно последовательности объектов, и числа выражений у объектов слева направо).
Вы определили следующие четыре выражения с актуальным приоритетом:
При выполнении мы получим следующую последовательность:
- Выражение C ( -1 это минимальное значение)
- Анимация (собственный аниматор Cinema 4D имеет категорию анимации с приоритетом = 0 )
- Выражение B (имеет аналогичный приоритет как аниматор, но он имеет предпочтение для внутреннего алгоритма)
- Выражение A
- Выражение D
На заметку
В программе Cinema 4D имеются некоторые специальные выражения, которые не всегда следуют этому простому примеру. К таким выражениям принадлежит например IK, которые для их просчёта используют различные значения временных позиций из имеющейся последовательности оценки. Также у динамики есть свой собственный приоритет, но пожалуйста игнорируйте приоритет Dynamics R11.5 - это функция для старой версии динамики, которая уже не доступна в версиях Cinema 4D новее R11.5.
Порядок просчёта разных функций. Для некоторых функций дополнительно указаны их внутрненние приоритеты.
При работе с динамикой, (например приоритет Генераторы +400 ) эти приоритеты определены полностью внутренним алгоритмом и не могут быть изменены. Например, выражение (которое производит считывание позиции точки), которое указывает на объекты деформации динамики, должно иметь, как минимум приоритет Генераторы + 401 .
Здесь вы можете включать \ отключать соответствующее выражение \ Expression.
На заметку:
Все параметры тегов / выражений могут быть анимированы при использовании правой кнопки мыши.
На заметку:
В Cinema 4D R18 опция Запечь объект была внутренне усовершенствованна относительно каналов Смещения и Нормалей. Запекание протекает теперь быстрее и лучше (в прошлом запекание часто приводило к артефактам, которые возникают теперь существенно реже) чем в предыдущих версиях. Способ применения практически не изменился, за исключением следующего: раньше при запекании карты смещения можно было сразу же рассчитать карты нормалей, чтобы выравнять возникающие артефакты. Это больше не требуется.
> Начальный оригинал куба и многократно разбитый при процессе скульпта, снова появляется при запекании текстуры. С соответствующей текстурой он преобразуется при процессе рендера снова в объект скульпта.
Главный недостаток скульпта – это объекты имеющие высокий уровень разбивки, которые при использовании актуального уровня компьютеров не всегда могут быть интегрированы в нормальный 3D процесс (раскраска поверхности, анимация и так далее). Как можно выполнить эту задачу при учёте уровня детализации поверхности и геометрии (очень часто состоящей из миллионов полигонов) по реализации такого уровня объектов и их обработке в нормальном 3D процессе?
Всё очень просто: детализация происходит на текстуре с её последующей проекцией на объекты с низким разрешением (из которых функция скульпта при использовании специального алгоритма создаст впоследствии объекты с высоким разрешением). При окончательном процессе рендера объекты будут иметь максимальный уровень детализации.
Выполните следующие шаги для запекания объекта скульпта:
- Выделите объект скульпта.
- В настройках скульпта выберите команду Запечь объект .
- В показанном при этом окне диалога для параметра Имя файла укажите путь, директорию или папку, с учётом которого будет произведено сохранение текстуры.
- На закладке Настройки для создаваемой текстуры, выберите соответствующие каналы материалов Смещение (для больших смещений) и Нормали (для деталей) .
- Если вы ещё не произвели обработку каркаса UV, в этом случае для параметра Проецирование установите один из режимов Кубическое или Угловое . Если вы предварительно произвели обработку каркаса UV, в этом случае для параметра Проецирование установите активным режим Нет .
- В поле Объект источник задайте уровень разбивки, при учёте которого должно происходить запекание текстуры (для большинства случаев это максимальный уровень).
- В поле Объект цели задайте уровень разбивки, при учёте которого должен быть создан новый полигональный объект (по возможности это должен быть минимальный уровень; вполне допустимым вариантом является уровень разбивки 0 ).
- Кликните затем на кнопке Запечь . После определённого момента времени будет создан новый объект с назначенными для него материалами и соответствующими тегами текстуры.
Обращайте внимание на размеры создаваемой текстуры или в противном случае не исключается возникновение ошибок при процессе рендера.
Общие указания для оптимальной работы с инструментом скульпта:
Поле диалога «Запечь объект скульпта»
В верхней левой части вы найдёте небольшое окно просмотра для запекаемой или уже готовой текстуры. При клике правой кнопкой мыши на этом окне для вас будут показаны следующие команды:
Эта кнопка приводит к показу запекаемой текстуры с низким разрешением.
При клике на этой кнопке вы производите запекание выбранной текстуры. На закладке Запекание для параметра Имя файла вам необходимо определить название файла и указать директорию его сохранения. В ней будет сохранена готовая текстура.
Здесь вы можете произвести прекращение процесса запекания (что в зависимости от размера и сложности текстуры может занимать определенное время).
Кликните курсором мыши на расположенной справа от поля параметра кнопке и в показанном при этом окне задайте необходимый путь сохранения и название файла для текстуры. В нём происходит сохранение текстуры и этот (абсолютный) путь будет использован также в материале для вновь созданного объекта.
Произведите здесь выбор формата сохранения с учётом глубины цвета, на основе которых должно происходить сохранение готовой текстуры. Если для выбранного формата вам необходимо определить дополнительные свойства, вы можете это произвести при использовании кнопки Настройки (смотрите материал Сохранить).
При Смещении вы должны всегда использовать 16 или 32 бита для избежания образования ступеней в результате.
В выпадающем меню этого параметра вы можете выбрать один из стандартных размеров текстуры или назначить его самостоятельно установив активным режим Назначить .
При активной установке происходит автоматические изменение параметров Ширина или Высота , если вы производите изменение одного из этих параметров вручную, что приводит к возможности сохранения пропорции сторон.
Здесь вы можете произвести назначение значений в индивидуальном порядке для просчитываемой текстуры.
Этот параметр позволяет вам определить границу пикселя, выходящую за край UV полигона (смотрите тему Граница пикселя ). Иногда это бывает необходимым и позволяет предотвращать создание видимых швов при процессе рендера.
Слишком маленькие значения для смещений могут привести к появлению нежелательных шипов.
При активном положении установки, отдельные каналы (смещение, нормали, окклюзия окружения) сохраняются в одном файле как отдельный слой изображения (вместо создания для каждого канала отдельного файла).
Создать копию результата
При активной установке происходит создание нового объекта с учётом необходимых материалов и тегов текстуры. При отключенном положении просчёт происходит только для текстуры.
Здесь вы производите назначение типа для запекаемой текстуры. Небольшое отступление, относящееся к каналам материалов:
В большинстве случаев необходимо производить процесс запекания смещения и/или нормалей. Просто попробуйте, какая из этих типов является необходимой для вашего процесса.
Компоновка UV показываемого по центру объекта в режимах Кубическое и Угловое .
При запекании текстуры не должно происходить пересечение полигонов UV.
Если вы в предварительном шаге обеспечили всё необходимое и это не относится к вашему объекту, то для параметра Проецирование установите активным режим Нет . Координаты UV при этом остаются без изменения (и будут подразделены в зависимости от объекта цели).
Аналогичные установки являются действительными для поставляемых с программой объектов скульпта, UV каркасы которых уже являются выполненными и оптимизированными.
Если вы намерены произвести формовку используя для этого собственную модель и не производили ещё до этого момента правку координат UV, в этом случае выберите один из режимов Кубическое или Угловое .
Краткая информация для актуальных режимов скульпта:
Нет : новое расположение координат UV не производится; для процесса запекания в этом случае имеет значение наличие соответствующего каркаса UV.
Угловое : при этом режиме по возможности будут созданы совместно связанные группы UV каркасов.
Кубическое : каркас UV при этом режиме будет подразделён на высокое число отдельных составляющих.
Учитывать верхние слои
Эта установка имеет минимальное воздействие на последующий и конечный результат. Она проверяет соответствие создаваемого при запекании каркаса с начальным состоянием оригинала (отключенное положение установки) или наличие у него максимального уровня разбивки, созданного функцией скульпта (активное положение установки).
Левый формованный объект (созданный из разбитого куба) будет запечён.
Активация этой опции может временами привести к подавлению артефактов (особенно в режиме RGB (XYZ Касательная) ), так как изначальный каркас будет немного подстраиватся к его заключительной форме.
Показываемая покрышка (формовка на девятом уровне разбивки с использованием для этого простого куба) будет подвергнута процессу запекания. В случае активной установки (внизу) куб не является точной формой, а имеет незначительный уровень деформации (объект скульпта выглядел бы аналогичным образом при наличии уровня разбивки равного 0 ). При отключенном положении установки вы получите идеальный куб. Различить отличие после просчёта является практически невозможным.
Чтобы привести всё к общему знаменателю: при отключенной установке, созданный при запекании каркас является схожим с просчитанным (= формованным) конечным результатом. Активная установка относится по создаваемому воздействию к начальному состоянию объекта.
Объект источник/Объект цели
Что именно происходит при запекании объекта скульпта?
Детализация объектов с высоким разрешением (объект источник) посредством текстуры переносится на объект с низким разрешением (объект цели).
Программа Cinema 4D при этом должна иметь информацию о числе уровней разбивки, которые будут использоваться при запекании объекта скульпта. Для объекта цели вы выбираете уровень разбивки, при учёте которого он должен быть создан и для объекта источника аналогично, детализация которого должна быть передана как текстура. Представьте себе эти объекты расположенными друг над другом. Для объекта цели при этом происходит просчёт для его поверхности, на предмет удаления аналогичной поверхности объекта источника от неё. На основе этого впоследствии производится просчёт необходимого смещения. По аналогии с этим происходит просчёт нормалей.
Уровень разбивки объекта цели должен быть всегда меньше по сравнению с объектом источника, чтобы это было возможным.
Смотрите Тип . Стандартно установленный активным режим RGB (XYZ Объект) приводит в большинстве случаев к получению оптимальных результатов. Если вы планируете впоследствии произвести изменение объекта по форме (например, при использовании деформаторов), в этом случае используйте режим RGB (XYZ Касательная) . Только в этом случае «функционирует» текстура при изменении геометрии. В режиме RGB (XYZ Касательная) процесс запекания карт нормалей вам необходимо производить за два рабочих шага. Предположим, вы произвели формовку объекта имеющего семь уровней разбивки. Если вы хотите получить при этом оптимальный результат, вам необходимо использовать двухступенчатый процесс запекания.
Первым шагом вы запекаете текстуру смещения с объектом цели и уровнем 0 от объекта источника (с уровнем, который предоставляет начальные детали). Вторым шагом вы производите запекание текстуру нормалей с пятым уровнем объекта цели от седьмого уровня объекта источника. После этого необходимо объединить обе текстуры в одном материале. Для чего это необходимо? Диалог Запечь объект скульпта производит опережение цели. Если вы производите запекание двух текстур одновременно при использовании режима RGB (XYZ Касательная) с одинаковыми уровнями разбивки для объекта источника и цели, в этом случае текстура нормалей производит симуляцию имеющейся геометрии дополнительно к каналу смещения, что приводит в конечном итоге к некорректному образованию затенения.
Слева отключенная и справа активная установка Скруглить геометрию для двух объектов (которые предварительно были запечены на основе функции смещения) изменяемых посредством деформатора Формула .
При обработке вами запечённого объекта и использовании для этого одного из деформаторов не исключается возникновение эффектов, показанных на верхнем изображении слева. В таком случае установите активной данную установку. Текстура при этом использует другой алгоритм при запекании и в последствии для канала смещения будет установлена активной установка Скругление геометрии с показываемым эффектом.
Активация этой опции может привести к лучшим результатам, даже если вышеназванный эффект не появится. Просто попробуйте!
Смотрите Метод . Здесь также является действительным правило изложенное для предшествующего параметра. При последующей деформации объекта на основе деформаторов, используйте режим Касательная и для других случаев режим Объект .
При назначении вами значения для параметра Граница пикселя (закладка Запекание ) эта установка определяет их расположение в назначенных пределах. При её активном положении происходит простое повторение расположения для позиции пикселя. При отключенном положении происходит актуальный просчёт позиций для пикселей (смотрите тему Продлить UV ).
Посредством этого параметра вы можете определить уровень сглаживания при запекании текстуры (установки сглаживания в настройках рендера при запекании текстуры не учитываются и не имеют абсолютно никакого воздействия).
При назначении вами значения для параметра Граница пикселя (закладка Запекание ) эта установка определяет их расположение в назначенных пределах. При её активном положении происходит простое повторение расположения для позиции пикселя. При отключенном положении происходит актуальный просчёт позиций для пикселей (смотрите тему Продлить UV ).
Если вы хотите запечь смещение (лишь три типа: Интенсивность, Интенсивность (по центру) и Красный / Зелёный ), то будет использована технология так называемого «Отслеживания лучей». Если упростить, то для смещения она работает следующим образом: представьте себе изначальный каркас, помещённый поверх каркаса скульпта. Для каждой Позиции на исходном каркасе будет установлены позиция и направление нормалей. Теперь луч будет направлен по направлению нормалей и в противоположную сторону, а также будет установлено расстояние, на котором он пересекает каркас скульпта и какие нормали там находятся. Расстояние до первой найденной поверхности каркаса скульпта будет включено в проецирование смещения.
В большинстве случаев технология работает очень хорошо, но она может привести к ошибкам в определённых областях. К примеру, это может произойти на краях геометрии, где луч может с лёгкостью уйти в пустоту. Луч также может попасть на ошибочную поверхность. Текстура в этом случае будет просчитана неверно и при рендере смещения, на этих местах возникнут высокие шипы. Следующие настройки служат для того, чтобы по возможности минимизировать такие ошибки. Поэтому если подобные шипы появляются, выключение опции Авто-порог фильтра шипов и меньшие значения опции Пользовательский порог фильтра шипов могут помочь.
Макс. дистанция отслеживания лучей
Пользовательская дистанция отслеживания лучей
Если опция Макс. дистанция отслеживания лучей активна, то луч будет практически не ограничен. Если она не активна, то луч прервётся в зависимости от значения, заданного в Пользовательская дистанция отслеживания лучей , и на этом месте не будет рассчитано смещение (Высота = 0).
Авто-порог фильтра шипов
Пользовательский порог фильтра шипов
Фильтр шипов проверяет запечённую текстуру и использует статистический метод чтобы определить, какая область смещения превалирует и найти экстремальные шипы. Шипы затем будут убраны. Если вы хотите сами регулировать этот процесс, выключите эту опцию. Чем меньше значение Пользовательский порог фильтра шипов , тем больше областей смещения будет признано ошибочными и удаленно.
При очень маленьких значениях от смещения практически ничего не останется.
Как и многие другие вещи в нашей отрасли, за многие годы карты нормалей эволюционировали, и сегодня существует несколько их типов, которые могут выглядеть по-разному. В статье я перечислю те, которые помню, но, возможно, существуют и другие.
Карта нормалей касательного пространства (Tangent space normal map): самый распространённый сегодня тип карт нормалей; именно о нём мы говорили в предыдущих статьях. Он модифицирует направление нормалей модели на основании направления нормалей её вершин (то есть нам нужно контролировать нормали вершин lowpoly-модели).
Карта нормалей касательного пространства Mikk (Mikk tangent space normal map). Не все 3D-редакторы вычисляют среднее нормалей вершин одинаково. Это приводит к тому, что в разных движках внешний вид карт нормалей отличается, поэтому нам нужно запекать карту нормалей при помощи того же способа, который использует программа рендеринга (это называется «использовать синхронизированный рабочий процесс (synched workflow)»)
Mikk предложил способ вычисления нормалей вершин, который должен был стать универсальным, чтобы все программы вычисляли их одинаково. С точки зрения рабочего процесса это означает, что можно использовать низкополигональную модель (lowpoly) со всеми её усреднёнными нормалями (с одной группой сглаживания (smoothing group) или со сглаживанием всех граней), запечь карту нормалей в касательном пространстве Mikk, и это будет выглядеть точно так же, как высокополигональная модель (highpoly), без необходимости устранения ошибок сглаживания или отделения жёстких граней в UV. В будущем я напишу туториал о том, как это делается.
Помните, что это всё равно карта нормалей касательного пространства, но нормали модели вычисляются универсальным способом и модели можно использовать в разных программах.
Двухканальная карта нормалей касательного пространства (2-channel tangent space normal map): оказывается, что при помощи информации, хранящейся в двух из трёх каналов карты нормалей, компьютер может вычислить третий, снизив занимаемый объём памяти ценой увеличения количества вычислений. Так как обычно в большем дефиците находится память, такая оптимизация используется часто и некоторые движки выполняют её автоматически (например, Unreal Engine, когда мы устанавливаем для сжатия нормалей текстуры параметр «normal map»). Освободив один канал карты нормалей, мы можем уменьшить размер текстуры или использовать этот канал для metalness/roughness/opacity…
Обычно устраняют синий канал карты нормалей, поэтому такие текстуры выглядят жёлтыми. Так как эта оптимизация иногда выполняется некоторыми движками автоматически, вы можете замечать такие текстуры в своём проекте.
Карта нормалей мирового пространства (World space normal map): эта карта нормалей вместо того, чтобы модифицировать направление нормалей вершин, полностью их игнорирует и меняет способ отражения света lowpoly-моделью в мировом пространстве (world space) (при запекании она считает, что нормали вершин параллельны осям мира).
Можно сказать, что карта нормалей касательного пространства сообщает модели «ты должна отразить свет вправо», а карта нормалей мирового пространства — «ты должна отразить свет на восток».
Такие карты нормалей более разноцветные и в них больше заметных градиентов; их использовали, потому что в таком случае не нужно думать о нормалях вершин lowpoly, но у них есть недостаток — нельзя двигать модель, потому что она будет выглядеть странно (мы устанавливаем грань так, чтобы она всегда отражала свет на восток. Если повернуть её, то грань продолжит отражать свет на восток.).
Сегодня карты нормалей мирового пространства используются в играх очень редко, но их всё равно можно применять для создания красивых текстур, например, синий канал показывает, как модель должна отражать свет, падающий сверху модели, поэтому можно использовать его, чтобы добавить к текстуре цветное освещение.
Стоит также помнить, что мировые координаты в разных приложениях реализованы по-разному: в Unreal, 3D Studio Max, Blender вверх направлена ось Z, а в Maya, Modo и Cinema4D — ось Y. Это значит, что при переносе между приложениями карты нормалей мирового пространства могут портиться.
Карта нормалей пространства объекта (Object space normal map): это улучшенная версия предыдущего типа карт, и она очень на него похожа. Идея заключается в том, что при перемещении модели в мире её карта нормалей мирового пространства должна переориентироваться относительно объекта.
Это можно описать как «эта грань должна отражать свет вправо от модели». Если поворачивать модель в мире, то карта нормалей должна изменяться в соответствии с этими изменениями. Однако это не работает с деформируемыми мешами, потому что в таких картах учитывается только перемещение объекта. Именно по этой причине сегодня наиболее распространены карты нормалей касательного пространства.
Наклонные карты нормалей (Bent normal maps): по сути, в них сочетается информация AO и карты нормалей, наклоняющая направления нормалей так, чтобы свет стремился отражаться к тем частям модели, на которые попадает свет.
Такие карты используются для улучшения Ambient Oclussion и чтобы избежать эффекта под названием «утечка света» (light leaking), при котором модель может отражать свет теми частями, которых он не может достичь. Лично я никогда ими не пользовался, но исследовал бы их возможности, если бы столкнулся с заметной «утечкой света». Более подробную информацию можно найти здесь, здесь и здесь.
16-битные карты нормалей (16 bit normal maps): иногда, когда на карте нормалей присутствует очень плавный градиент, мы можем замечать появление полос. Эти полосы возникают из-за нехватки цветов для представления плавного градиента, обычно вызванной сжатием текстур.
Узнать больше о 16-битных картах нормалей можно у самого бога туториалов — Earthquake.
Следует также учитывать, что для уменьшения последствий этой проблемы существуют и другие техники, например, полное устранение карт нормалей (для представления этой плавной поверхности используется только геометрия), преобразование lowpoly так, чтобы она была более похожа на highpoly, чтобы градиенты оказались менее заметны, или использование дизеринга.
Так какой же из типов мы должны использовать?
В 90% случаев наилучшим решением являются карты нормалей касательного пространства Mikk. В отличие от вариантов с использованием карт нормалей пространства мира или объекта, модель сможет деформироваться, а направление нормалей останется правильным.
Следует запекать карту нормалей в том же касательном пространстве, что и в программе рендеринга. Наиболее распространённое касательное пространство — это Mikk, так что по возможности используйте его.
Если же на вашей карте нормалей появляется пикселизация, подумайте над использованием 16-карт нормалей или одного из упомянутых выше решений.
По сути, это все типы карт нормалей, которые я смог вспомнить. Если вам известны какие-то другие типы, то сообщите мне о них, и я добавлю их в этот туториал!
Благодарю за прочтение, надеюсь, статья была вам полезна. Спасибо Shnya за комментарии и помощь.
Какие карты будем печь
Нет смысла запекать карты, если не знаешь, что они делают и как работают.
2. Карта АО
Так выглядит запечённая карта АО
Карта Ambient occlusion (AO) — это карта затенения.
Она показывает самые глубокие тени, которые есть в объекте.
В основном это тени в углублениях и на пересечениях. Эту карта используют игровые движки для корректного освещения. Она также очень полезна в текстурировании.
Отличный пример того, что сложно сделать без АО — это грязь. Она забивается в самые глубокие места модели, — карта АО поможет легко сгенерировать маску углублений, чтобы забить их грязью.
Если добавить на low poly модель карту АО, на модели появятся самые глубокие тени
Также как и нормал, карта АО печётся на развёртку модели из high poly и скульпта.
Карта AO создаётся из highpoly и скульпта
При запекании по-умолчанию эта карта чёрно-белая, но на этапе текстурирования её можно покрасить.
С картой АО разобрались, последняя карта, которая нам нужна — Color ID
1. Normal Map
Normal Map переводится как «карта нормалей»
Она изменяет направление блика на геометрии.
Карта создаёт виртуальные вертекс нормали в каждой точке low poly модели и искажает поведение света. Если наложить запечённый нормал на модель, то она будет выглядеть почти как high poly.
Вот хороший пример: low poly модель с включенным Нормалом и без него.
Модель с включенным нормалом и без него
Новые полигоны не создаются, это лишь иллюзия формы:
Приглядись, видишь low poly сетку? Все детали и затенения, которые ты видишь — иллюзия.
Чтобы создать нормал, нужно взять развёртку, которую мы делали ранее, взять high poly и скульпт, загрузить в программу для запечки и нажать кнопку «bake».
Там много нюансов, но мы обо всём расскажем.
Из чего печётся Normal map
Нейтральный цвет Нормала
128х128х255 — нейтральный цвет нормала.
Если добавить полностью нейтральный нормал, то особой разницы видно не будет. Модель будет шейдить так же, как обычная лоуполи.
Читайте также: