Как сделать острую карту

Добавил пользователь Алексей Ф.
Обновлено: 04.10.2024

Привет! Мы продолжаем цикл статей по пайплайну разработки стилизованных персонажей. Сегодня расскажем, что такое этап запечки, и как перенести детализацию с высокополигональной модели (high poly) на низкополигональную (low poly).

Запечка (Bake) — четвёртый этап ААА-пайплайна. На прошлом мы сделали развёртку, а сейчас будем её использовать для создания Normal Map, AO и Color ID.

Гугл на слово запечка показывает то, что нам нужно, а на слово запекание предлагает запечь курочку

Что такое запечка

Взглянем на low poly модель, которую сделал наш студент Leon.

Низкополигональная модель, созданная на этапе ретопологии

В ней минимум полигонов и чистая сетка. Эта модель будет загружаться в игровой движок.

Есть ещё high poly модель с высокой детализацией и скульпт.

Хайполи модели под сабдив и скульпт

Технология запечки позволяет нам перенести все детали с high poly и скульпта на low poly-модель.

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

Для внимательных: ID Map никак не влияет на вид модели, в отличие от нормала и АО, но она пригодится при текстурировании, поэтому эту карту тоже будем печь.

Как это работает?

Мы берём low poly модель и добавляем на неё запечённые карты Нормала и АО. А эти карты обманывают поведение игрового света. Модель начинает бликовать так, как будто на ней есть все эти фаски, вырезы и прочие детали.

Для тех, кто не понимает, о чём речь: мы очень подробно писали про вертекс нормали и принцип работы нормала в статье про сетку.На этом этапе пайплайна — запечке, наша задача: запечь 3 карты.

1) Normal map — карту неровностей
2) Ambient Occlusion (AO) — карту затенения
3) Color ID — цветные маски

В Marmoset можно запечь гораздо больше карт, про это будет дальше.

Мы добавим эти карты на нашу low poly модель, на ней появится вся детализация с high poly и скульпта, а благодаря карте Color ID модель будет легче разбить по материалам и текстурировать.

Все карты создаются на основе развёртки, которую мы сделали на прошлом этапе пайплайна. Без развёртки карты не запекутся. Если есть ошибки на развёртке или low poly модели, то мы столкнёмся с кучей проблем.

Ссылки на теорию

Какие карты будем печь

Нет смысла запекать карты, если не знаешь, что они делают и как работают.

1. Normal Map

Карта создаёт виртуальные вертекс нормали в каждой точке low poly модели и искажает поведение света. Если наложить запечённый нормал на модель, то она будет выглядеть почти как high poly.

Вот хороший пример: low poly модель с включенным Нормалом и без него.

Модель с включенным нормалом и без него

Новые полигоны не создаются, это лишь иллюзия формы:

Приглядись, видишь low poly сетку? Все детали и затенения, которые ты видишь — иллюзия.

Там много нюансов, но мы обо всём расскажем.

Из чего печётся Normal map

Что нужно знать о Нормале

Небольшие чёрные полосы на нормале — это нормально.
Никто не будет разглядывать нашу модель под микроскопом.

Чёрные полоски на нормале

Почему не стоит сильно волноваться о чёрных полосах?
Игрок почти всегда видит модель в игре на расстоянии. Поэтому не нужно тратить несколько часов, чтобы убрать чёрные полоски на нормале:

Та же модель, но на расстоянии. Чёрные полосы не режут глаза, — значит, всё окей.

Из чего состоит карта нормалей

Normal map создает иллюзию объёма благодаря трем картам в каналах текстуры: красный, зелёный, синий.

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

Красный канал нормала

Зелёный канал — работает так же, но искажает шейдинг по вертикали.
Светлый-блик поворачивается наверх, а тёмный — вниз.

Зелёный канал Нормала

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

У бочки на high poly есть фактура дерева.
Затемнение идёт только по одной из осей.

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

А зелёный канал — показывает искажения по вертикали. Так как виртуальные плоскости не отклоняются вверх/вниз, то затемнений почти нет, то информации на нормале в этом канале почти не будет:

Зелёный и красный канал нормала на примере бочки

Красный и зелёный каналы — основные для нас (как моделлеров).
Но у Нормала есть ещё синий канал.

Синий канал имитирует углубления в объекте.
В играх он практически не используется.

За счет изменения синего цвета на нормале создаются искажения на плоской поверхности.

Если на синем канале есть артефакты, можно просто выключить этот канал, т.е. отключить синий цвет у нормал мапа в фотошопе. Или просто их замазать артефакты кисточкой.

Синий канал нормал

Больше про три канала Нормала — в этой статье.

Нейтральный цвет Нормала

128х128х255 — нейтральный цвет нормала.

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

В каком формате лучше хранить нормал

После запечки, скорее всего, придётся вносить изменения в нормал, используя фотошоп.

Поэтому файл лучше сохранять в форматах Targa или TIF.
При сохранении есть выбор, сохранять в 24 или 32 bit.
Если есть Альфа-канал — сохраняем с 32 bit.
Если Альфа-канала нет — в 24 bit.


2. Карта АО

Так выглядит запечённая карта АО

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

Отличный пример того, что сложно сделать без АО — это грязь. Она забивается в самые глубокие места модели, — карта АО поможет легко сгенерировать маску углублений, чтобы забить их грязью.

Если добавить на low poly модель карту АО, на модели появятся самые глубокие тени

Также как и нормал, карта АО печётся на развёртку модели из high poly и скульпта.

Карта AO создаётся из highpoly и скульпта

При запекании по-умолчанию эта карта чёрно-белая, но на этапе текстурирования её можно покрасить.

С картой АО разобрались, последняя карта, которая нам нужна — Color ID


3. Карта Color ID

У наша модель состоит из разных материалов: металла, камня, дерева и ткани.

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

Чтобы это можно было сделать в один клик внутри Substance Painter, нам нужно запечь карту Color ID. Она позволяет быстро выделять большие куски. А в программе для текстурирования эту группу объектов можно легко затекстурить.

Вот так, с помощью этой карты мы в считанные секунды красим модель в разные цвета:

Быстро красим модель в Substance Painter, используя карту Color ID

Для того, чтобы создать карту Color ID, нам нужно покрасить high poly-модель в разные цвета. Один цвет — это одна группа объектов, как правило разбитая по материалам. Например, всё дерево на Color ID оранжевое, вся кожа —розовая, ржавый металл — синий, шерсть — голубая, а новый и чистый метал —зелёный.

Это не цвета будущей модели — здесь они могут быть любыми. Главное, чтобы они были контрастными.

Дополнительные карты

В мармосете куча карт, которые можно запечь.

Их в разных пайплайнах используют разные художники для текстурирования:

Position map с помощью градиентов помогает накладывать текстуры в разных плоскостях модели.

Сurvature выделяет все края на модели и упрощает создание затёртостей и повреждений. Очень полезная карта на ряду с АО.

Thickness запекает толщину, что необходимо для имитации подповерхностного рассеивания.

Часто для hand paint текстур пекут свет прямо на текстуру. Иногда необходимо запечь альфу — карту прозрачности.

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

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

Как распылить любые карты в Hearthstone

Чтобы распылить карту, зайдите в вашу коллекцию.

Как распылить любые карты в Hearthstone - шаг 1

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

Как распылить любые карты в Hearthstone - шаг 2

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

Карта приблизится. Снизу можно видеть стоимость ее распыления и стоимость ее создания. Стоит помнить, что распыление карты всегда намного дешевле создания карты. Нажмите “Распылить”, чтобы избавиться от карты в своей колоде Hearthstone и получить ману.

Как распылить любые карты в Hearthstone - шаг 3

Подтвердите свое действие.

Как распылить любые карты в Hearthstone - шаг 4

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

Как распылить лишние карты в Hearthstone

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

Под лишними картами в игре понимается больше 2 копий одних и тех же карт. А легендарных не больше 1 копии.

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

Как распылить лишние карты в Hearthstone - шаг 1

Далее внизу нажмите “Создать”.

Как распылить лишние карты в Hearthstone - шаг 2

В правом меню будет кнопка “Распылить лишние карты” — нажмите на нее.

Откроется страница массового распыления карт, там будет содержаться подробная информация о типах карт, которые вы планируете распылить. Нажмите “Распылить”, чтобы подтвердить действие.

Как распылить лишние карты в Hearthstone - шаг 4

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

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



Настройка карты для тренировки

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

  • sv_cheats 1 (позволяет использовать весь пул консольных команд)
  • bot_kick (выгоняет ботов с карты)
  • ammo_grenade_limit_total 5 (расширяет лимит гранат в инвентаре)
  • mp_warmup_end (заканчивает разминку)
  • mp_roundtime 60 (устанавливает время раунда на максимальное: 60 минут)
  • mp_freezetime 0 (время без движения после респауна: 0 секунд)
  • mp_roundtime_defuse 60 (время на дефьюз бомбы: 60 минут)
  • sv_showimpacts 1 (показывает места, куда ударяется граната / пули)
  • mp_buyanywhere 1 (позволяет закупаться в любом месте на карте)
  • mp_maxmoney 60000 (максимальное количество денег: $60000)
  • mp_startmoney 60000 (начальное количество денег: $60000)
  • mp_buytime 9000 (время на закупку: 9000 секунд)
  • sv_grenade_trajectory 1 (показывает траекторию полета гранаты)
  • sv_grenade_trajectory time 7 (время показа траектории полета гранаты: 7 секунд)
  • mp_restartgame 1 (перезапускает сервер с новыми настройками, которые вы вписали в консоль)

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

  • bind “название кнопки” noclip (бинд кнопки на включение / выключение режима полета)


Создание конфига для тренировки и удобства

Чтобы не вводить огромное количество команд при заходе на карту каждый раз, можно создать конфиг с ними (exec, если точнее). Тогда после запуска карты вам нужно будет лишь ввести в консоль: exec название конфига (без кавычек).

Итак, создаем файл в блокноте. Далее, вводим этот текст:


Когда файл готов и сохранен в верном расширении, нужно перенести его в папку cfg. Путь к папке: Programm Files (x86) / Steam / steamapps / common / Counter-Strike Global Offensive / csgo / cfg.

Готово! Ваш конфиг находится в игре, и вы можете его запустить на любом персональном сервере.

Советы по тренировке гранат для новичков. Смоки превыше всего!


image

Существует множество способов создания и применения карт нормалей. Давайте рассмотрим известные мне способы их изготовления.

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

Предыдущие части:

Совершенно гладкие lowpoly

При таком способе все нормали низкополигональной модели усредняются: все рёбра считаются плавными или имеют одну группу сглаживания (smoothing group).

Это означает, что всю работу должна выполнять карта нормалей. Lowpoly-модель обычно сильно отличается от highpoly-модели, пока не будут наложены карты нормалей.

image

Однако такой подход имеет некоторые недостатки:

  • Важно правильно настроить касательное пространство (tangent space). Так как мы сильно зависим от карты нормалей, малейшие изменения в её настройке будут при таком способе особенно заметны. В целом, нужно сделать так, чтобы в качестве касательного пространства программы 3d-моделирования, запекания и рендеринга использовали Mikkts, и чтобы все модели экспортировались и импортировались соответствующим образом.
  • Так как карта нормалей должна сильно сгибать нормали, карта нормалей, скорее всего, будет более разноцветной и иметь множество градиентов. То есть размер карты нормалей будет чуть больше, и с большей вероятностью будет содержать артефакты сжатия. Чтобы компенсировать это, при использовании данного метода обычно увеличивают разрешение карты нормалей или уменьшают степень её сжатия. Для игр на PC это не сильно снижает производительность, но для мобильных игр с большим количеством карт нормалей это может быть заметно.
  • Если убрать карту нормалей модели, то обычно из-за этого она выглядит плохо (особенно если имеет множество острых рёбер).
  • Добавление деталей карт нормалей текстурам (например, в Photoshop) может быть затруднено.
  • Нормали lowpoly с большей вероятностью будут сгибаться и не совпадать с поверхностью highpoly, и выше вероятность появления искажённых деталей.

Модели с острыми рёбрами (с настроенными smoothing groups/hard edges)

При такой методике мы разделяем нормали некоторых вершин, задавая группы сглаживания или выбирая резкие рёбра. Некоторые люди любят настраивать остроту рёбер при помощи угла (обычно 30, 45 и 60º), но я предпочитаю задавать их вручную (параллельно думая о том, где будут находиться швы UV-развёртки).

Помните, что когда в модели есть острое ребро, UV должна быть разделена, чтобы избежать видимых линий вдоль рёбер на карте нормалей.

image

  • Обычно этот метод требует чуть больше работы, чем первый.
  • Необходимо разделять UV в местах острых рёбер, чтобы избежать видимых линий вдоль этих рёбер, что может усложнить работу с некоторыми UV-островами (например, при ручном рисовании части модели, имеющей разделённые UV, могут появиться нежелательные швы). К счастью, в таких программах, как Substance Painter, Mari и 3D Coat, есть решения этой проблемы.
  • Задание острых рёбер и разделение UV немного увеличивает количество вершин, однако обычно незначительно.

На плоских поверхностях мы можем использовать острые рёбра для привязки нормалей lowpoly к твердотельной (hard surface) модели. Если поверхности lowpoly и highpoly полностью совпадают (т.е. они обе плоские), то карта нормалей в этой области будет плоской, благодаря чему можно без проблем добавлять и удалять детали карты нормалей на текстуре.

Лично я использую этот метод чаще всего (потому что мне кажется, что у меня больше контроля и вариантов выбора, если что-то будет выглядеть некрасиво); и особенно когда есть жёсткие ограничения. В последнее время я старался не использовать их на некоторых твердотельных моделях, потому что им требуется множество острых рёбер, что увеличивает количество UV-островов и усложняет работу с ними.

Работа с настраиваемыми нормалями (и использование midpoly)

Существуют способы непосредственного изменения нормалей lowpoly-модели, но не во всех 3D-редакторах есть эта возможность и они довольно сильно различаются. Наиболее распространённый способ — использование взвешенных нормалей, благодаря которым программа автоматически переориентирует нормали в сторону более крупных граней. Ещё один способ модификации нормалей заключается в выборе грани и выравнивании нормалей её вершин с нормалью к грани, чтобы все они смотрели в направлении грани.

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

image

Этот метод породил новый подход к моделированию под названием midpoly. Это скорее метод моделирования, а не текстурирования. В целом его смысл таков, что вместо генерирования деталей при помощи карт нормалей мы генерируем их, напрямую модифицируя нормали lowpoly.

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

Сначала мы добавляем на ребро фаску (bevel), расположенную в месте перехода. Затем мы модифицируем нормали получившихся вершин так, чтобы они смотрели в сторону основных граней. При этом нормали lowpoly будут направлены к более крупным граням, а переход направлений нормалей будет ограничен ребром с фаской.

image

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

Вот сравнение трёх описанных в статье методов:

image

Другие методики и эксперименты

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

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

Читайте также: