XYZ Media

Статья 3/7 про сетку. Lowpoly, Highpoly и вертекс нормали

Это третья статья из цикла про ААА-пайплайн. Вот ссылки на все пять, выбирай ту, которая тебе нужна:

1. ААА-пайплайн
2. Драфт
3. Сетка
4. Развертка
5. Запечка

Эта статья поможет новичкам, которые хотят научиться делать high poly и low poly так, чтобы потом не переделывать. Ты узнаешь, что такое сетка, зачем она нужна и из чего состоит. Поймешь, зачем нужны ограничения по полигонам и как оптимизировать свою модель. Внимательное изучение статьи займет около 20 минут. Если возникнут вопросы — пиши в чат-бот (кнопка справа внизу). Там на связи живой менеджер :) Он поможет разобраться. Ну что, давай начнем!


Из чего состоит любая 3D-модель

Сетка — технический этап и он требует понимания технологий. Прежде чем говорить о работе с low poly и high poly давай разберем из чего состоят все модели и какие особенности игровых движков нужно знать.
Любая 3D модель состоит из:

⚫️ Точек (vertex, вертекс)
➖ Рёбер (edge, эдж)
⬛️ Плоскостей (tris, polygon, nGon, трис, полигон, эн-гон)

#1 Точки (вертексы)

Это простейший элемент модели. У каждой точки есть 2 параметра: координаты в пространстве и направленность.
Координаты точки в 3D-пространстве
  1. Положение в пространстве — это ее положение по осям x, y, z;
  2. Направленность еще называется «вертекс нормаль».

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

#2 Рёбра (edge)
Ребро — это 2 точки, которые соединены линией. У каждой из этих точек есть вертекс нормалей.

#3 Полигоны (polygons)
Из точек и ребер мы создаём многоугольники. В геймдеве их называют полигоны. Самый простой полигон состоит из 3 точек — это треугольник.
Помимо треугольников, есть четырехугольники (quad/квад) и многоугольники (n-gons/нгоны). Так что, ты можешь создать полигон из любого количества точек. Но учти — во всех игровых движках и 3D-программах все состоит из треугольников. Поэтому, когда ты делаешь квад или нгон — программа автоматически превращает их в треугольники (это называется триангуляция). У разных программ свои алгоритмы триангуляции. Потому, одна и та же модель в разных программах выглядит по-разному.
3 программы в которых одна и та же модель воспроизводится по разному. Marmoset не правильно посчитал полигоны и потому на модели даже нет отверстия внутри.
Из-за разных алгоритмов триангуляции модель меняется, когда мы добавляем ее в игровой движок. Если не хочешь, чтобы программа искажала модели — перед экспортом триангулируй полигоны вручную.
Слева искаженный блик, а справа хорошая триангуляция
Триангуляция — одна из ключевых задач создания игровой сетки. Мы переводим всё в треугольники руками, чтобы блики были одинаковыми.

Если на модели есть квадрат и все точки лежат в одной плоскости — проблем с бликом скорее всего не будет. Но если одна или несколько точек выходят за пределы плоскости, могут начаться проблемы. Поэтому, внимательно следи за такими полигонами.
Такие полигоны называются непланарами (non-planar)
Что такое запечка нормала

Нормали — это векторы, которые определяют, как свет отражается от поверхности. Они есть у каждой точки модели. Если их изменить, поменяется поведение света. Но векторы отражения нельзя поставить на случайное место, они находятся у точки.
Добавить нормаль внутри полигона не получится, их нужно фиксить руками в том месте, где есть вертекс (точка). Но есть крутая технология — карта нормалей (Normal Map), которая помогает обойти этот этап. Карта нормалей — это текстура, которая создает виртуальные вертекс нормали внутри каждого пикселя.

Вот простой куб:
Normal Map у него будет выглядеть как на фото внизу. По сути, это отсутствие карты нормалей, он никак не влияет на твою модель. Синий цвет означает, что нормали перпендикулярны поверхности.
Просто синий цвет. 128,128,255 RGB
А теперь откроем фотошоп и добавим на него вот такую детальку:
В красном канале горизонтальный градиент, в зеленом канале вертикальный. А теперь смотри что будет, если Normal Map привязать к модели:
Normal Map умеет рисовать детализацию с бликами поверх полигонов
Normal Map не рисуют руками, для этого используют технологии запечки и рисования нормала. Скопируй этот куб в отдельный файл и замодель на нем любую детализацию.
Теперь у нас 2 файла — обычный куб и куб с кучей деталей. Обычный куб — это low poly модель, в которой нет лишней детализации. Такую модель мы вставляем в игровой движок, потому что она не сильно детализирована и не перегружает его. А есть high poly модель — куб с кучей деталей.

Технология «запечки» позволяет перенести вертекс нормали с детальной модели на легкую low poly и сохранить их в Normal Map. В этом случае в кубе 6 полигонов, а модель отражает свет, как куб с кучей деталей.
Модель запеченная с Normal Map
Обычный куб с Normal Map бликует как детализированная модель, хотя детализации в нем нет. Это просто хитрое искажение вертекса нормалей с помощью отдельной текстуры.
В карте нормалей каждый пиксель создает на поверхности виртуальную вертекс нормаль (точку с отражением света).

Нейтральный голубой цвет (128,128,255 RGB) означает, что оригинальная вертекс нормаль не будет меняться. Красный канал отвечает за отклонение нормали влево или вправо, зеленый — вверх или вниз. Синий имитирует глубину.


Что происходит с сеткой после драфта?

Как только мы закончили драфт модели, на нем уже есть сетка. Но она еще не оптимизирована для игры. Внизу, на примере машины показан драфт, на котором из-за большой детализации превышен лимит полигонов. Если листнешь вправо, увидишь разницу по количеству полигонов на этапе драфта, LowPoly и HighPoly.
Драфт нельзя засунуть в игру. В нем либо движок неправильно стриангулирует сетку, либо лимит по полигонам будет превышен. Потому, для игр нужны легкие модели из треугольников и минимума полигонов. Такая модель называется LowPoly.

Вспомни наш куб. Все 8 точек влияют на силуэт, удалять ничего нельзя, иначе это будет уже не куб. Это и есть LowPoly модель, которую вставляют в игровой движок. По пайплайну, детализацию модели мы делаем с помощью запечки HighPoly на Normal. Поэтому мы должны взять драфт, сделать его супер детализированным, а потом запечь детали и накинуть их на LowPoly модель.
На последней модели всего 8 полигонов, а детализация сделана через Normal Map
Если работаешь по пайплайну для игры — на этапе сетки нужно сделать LowPoly и HighPoly с правильной топологией.
На драфте студент собрал основные формы, на high poly сделал модель пластичной и, а на low poly избавился от лишнего, сделав сетку легкой.
💥 Курс «Draft Punk» для тебя, если хочешь делать такие же 3D-модели
Узнаешь, как устроен пайплайн разработки 3D-моделей в больших игровых студиях. Научишься создавать выразительные драфты, разберёшься с топологией, high poly, low poly, развёрткой и запечкой. А в конце создашь полноценную 3D-модель по всем правилам пайплайна. Курс можно взять в рассрочку.
Три вида сетки

  1. LowPoly — упрощённая модель для игры с минимальным количеством полигонов.
  2. HighPoly — детализированная модель, которая нужна, чтобы перенести всю детализацию на low poly через Normal Map.
  3. MidPoly — компромис между бесконечно детализированными high poly и оптимизированными low poly. Используется в основном для кино.

Давай разберём каждый из трёх видов по отдельности.


1. Low Poly

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

Low poly для разных игр отличаются. На мобилках low poly очень легкая, 2к — 10к треугольников. На ААА-проектах только на главного персонажа может выйти 50-60к треугольников. А бывают проекты по 250к треугольников на персонажа.
Low poly сильно зависит от технологии. В мобильной игре, на важном объекте 5-7к полигонов. В старых играх важные объекты были по 10-20к полигонов. Современные игры тянут модели по 50-150к полигонов. А бывают модели и по 200-300к полигонов, например, корабли, танки или дома.
low poly с бампом — это как нормал, но чуть проще
Откуда берётся лимит на low poly?

Представь, что технический директор высчитал ограничение на локацию в 10 млн полигонов и 200 материалов. Получаем по 150-200 моделей в которых от 10 до 100к полигонов. Это ограничение взялось из производительности движка и железа, под которое делается игра.

Как сделать low poly?

Вот главные правила:

  • На low poly важны полигоны, которые влияют на силуэт формы.
  • Элементы, которые не видишь нужно удалять.
  • Всё, что слишком угловато на силуэте — округляй. Иногда для этого надо добавить новую геометрию.
  • Все плоские детали, не влияющие на силуэт, рисуются через текстуры или на нормале.
  • Цилиндры кратны 4, а число сечений зависит от размера цилиндра
На нижнем ряду маленькие цилиндры слишком плотные, а большие недостаточно детальные
  • Удаляй задние стенки у объектов.
  • Пересекающиеся объекты утапливай друг в друга. Но не переусердствуй — тогда впустую потратишь место на развертке. Ставить их впритык друг к другу тоже ошибка — может появиться зазор, через который шов будет некрасиво бликовать.
Перед запечкой переноси сложные формы в треугольники. А четырехугольники и многоугольники триангулируй вручную. В одной программе может быть норм, а в другой будет кривой блик или форма.

На этапе low poly, это делать не обязательно, т.к. развёртку проще делать с квадратами, но потом этот момент нужно учесть.
Одна и та же модель с разной триангуляцией
2. High Poly

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

На high poly можно всё, потому что нет ограничений по полигонам. Главное ограничение — чтобы файл открылся на компе. На high poly работают с квадратами вместо треугольников, а от угловатостей избавляются при помощи сглаживания. В игровой движок такую сетку не засунешь, но она может быть сколько угодно детализированной и гладкой.

3 способа сделать high poly:

В видеоиграх high poly нужна для запечки нормала. Для сложных органических форм первым делают high poly, а потом «ретопят» в low poly.
Это сабдив геометрия под запечку
1) Cабдив (subD) — это создание high poly через поддержки. Ты делаешь формы, накладываешь поддержки, они правильно скругляются и получается более гладкая модель без угловатостей. Самое важное на сабдиве — понять, как строить лупы и кольца полигонов, чтобы они подчеркивали форму модели.
Слева полигональные кольца направлены без учета формы, а справа они аккуратно обводят угол.
2) Скульпт — это как пластилин, только в 3D. Мы используем скульпт, если у модели мягкие формы или органика. Программы для скульптинга (zBrush, mudbox, 3d coat) делают сетку настолько плотной, что наша модель становится мягкой и тянется как 3D-пластилин. Когда работаем со скульптом — можем работать с десятками и сотнями миллионов полигонов. Мы учим как скульптить для игр на бесплатном курсе по zBrush.
3) CAD геометрия — каждая поверхность задается формулой, поэтому модель гладкая и плавная, ее легко редактировать на любом этапе. CAD подходит для твердотельного моделирования из-за того, что модели получаются гладкими. Крутой CAD софт — Fusion 360. Его сделали для инженеров, чтобы они проектировали и собирали реальные мосты, машины, роботов. Если хочешь научиться моделить технику в Fusion 360 — присмотрись к нашему курсу Hard Surface.


3. Mid Poly

Это компромисс между бесконечно детализированными high poly и оптимизированными low poly. С этой сеткой делают детальные и интересные модели, которые клёво смотрятся в кадре, но в то же время они оптимизированы лучше, чем high poly. Mid poly больше используют для кино, чем для игр. В играх важно влезть в число полигонов установленное техническим директором, чтобы игра была быстрой и не лагала. А в кино важно, чтобы картинка была красивой, потому не так страшно перегрузить движок, просто рендерится фильм будет дольше.
Пример Mid Poly сетки из Love Death and Robots
Подведем итоги

Сегодня ты узнал много нового про вертекс нормали и работу с топологией. Разобрался, как работает технология запечки, зачем нужно делать 2 файла — low poly и high poly, как они связаны друг с другом через Normal Map.

К чему ведут провалы на этапе сетки?

— К плохой оптимизации и не аккуратному шейдингу;
— Плохую low poly даже текстуры не спасут;
— Ошибки с хардами и софтами испортят запечку и текстуры;
— Плохая high poly с потягами и плохим шейдингом — не запечется;
— high poly и low poly должны совпадать. Они должны быть похожи друг на друга и покрывать друг друга. Иначе будут проблемы на запечке.


Что дальше

Если хочешь освоить весь пайплайн и научиться моделить в 3D, присмотрись к нашему курсу Draft Punk. Ты поймешь, как устроен пайплайн разработки 3D-моделей в больших игровых студиях. Научишься создавать выразительные драфты. Разберешься с топологией, high poly, low poly, разверткой и запечкой. А в конце создашь полноценную 3D-модель по всем правилам пайплайна. Полученных знаний хватит, чтобы работать на фрилансе или джуном в студии.

Вот что получилось у наших студентов после курса Draft Punk:
Если тебе интересны другие этапы пайплайна — переходи к следующей статье. 1 статья = 1 этап пайплайна, с уроками и примерами. Выбирай тему, с которой хочешь разобраться:

1. ААА-пайплайн
2. Драфт
3. Сетка
4. Развертка
5. Запечка
ВСЕ ПРОЧИТАЛ? ПЕРЕХОДИ К ПРАКТИКЕ!
Освой пайплайн и научись создавать 3D-модели на курсе Draft Punk
СМОТРЕТЬ ПРОГРАММУ
Draft Punk.
3D-моделирование объектов
Пройди курс по 3D-моделированию и научись создавать модели для игр. Уроки проходят в онлайн-формате — сможешь вернуться к лекциям в любой момент и освежить свои знания.
Работа Юрия Порубова
Курс
Понравилась статья?
ХОЧЕШЬ ПОЛУЧАТЬ ЛУЧШИЕ СТАТЬИ
ОТ XYZ РАЗ В НЕДЕЛЮ?
Подпишись на рассылку XYZ
Нажимая на кнопку, вы соглашаетесь с условиями обработки данных