Открыта запись на курс Vehicles and Props Старт обучения 28 ноября 2024 Преимущества курса: - разбор домашних работ только автором курса; - справедливые фидбеки каждую неделю; - помощь в выполнении тестового задания при трудоустройстве; - рекомендации в топовые студии в РФ при успешном прохождении курса.
Hard и Soft edges. Группы сглаживания

Давайте поговорим о том, как работа с Edge (гранью) и Vertex (вершиной) влияет на финальный вид вашей модели. Начнем с общих понятий и постепенно приведем их к конкретным моментам и правилам, зная и понимая которые, вы улучшите свои работы.

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

Vertex Normal и Face Normal

Существуют такие понятия как Face Normal и Vertex Normal (нормаль поверхности и нормаль вершины).

Нормаль, если простыми словами, это вектор перпендикулярный к точке, из которой он выходит. Она применяется для расчета света на меше.

1.png Визуально нормали выглядят таким образом. Есть точка её начала и вектор направления. Движки, разумеется, видят это как данные, но суть их от этого не меняется

Face Normal указывает общее направление полигона, а Vertex Normal - направление вершин. Vertex Normal интересует нас в первую очередь, так как напрямую влияет на то, как свет падает на полигон, а управление им позволяет нам управлять поведением света, а точнее - реакцией полигона на свет.

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

2.png Пример ручного управления направлением нормалями в Maya

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

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

3.png Это один и тот же куб без одной стенки. На примере слева (back) видно, что программа не отображает те полигоны, которые не видны на камеру

Продолжим. Мы разобрались с тем, что каждый полигон в модели имеет такие элементы, как Face Normal и Vertex Normal, напрямую связанные с расчетом света на модели. Это подводит нас к следующему важному моменту - Vertex Normal влияет на жесткость ребер.

Hard edge и Soft edge

4.png На примере 1 видно, что на ребре между полигонами вертекс нормали направлены перпендикулярно к поверхности полигонов, к которым они привязаны. Это создает жесткий переход. Благодаря этому мы видим четкую разницу в освещении двух полигонов

Ребро с такими параметрами нормалей называется Hard Edge (жёсткая грань).

5.png На примере 2 можно увидеть противоположный пример - нормали на ребре между полигонами усреднены в сторону большего по площади полигона. Это создает плавный переход

Если у двух смежных полигонов одинаковый угол и площадь, то нормали усредняются равномерно, то есть, если оба полигона будут иметь угол 45 градусов, то нормали усредняются под это значение. Такое ребро называется Soft Edge (мягкая грань).

6.png На цилиндре слева расставлены Hard Edge по всем граням. На правом по скруглению цилиндра стоят Soft Edge, а на стыке с крышками - Hard Edge

Так мы получаем плавное скругление по поверхности и четкую границу с крышками.

7.png На сфере слева также расставлены Hard Edge, на правой - Soft Edge по всему мешу, это делает шейдинг на нём плавным Еще один небольшой факт - процесс сглаживания через управление нормалями называется Интерполяция. По сути он заключается в плавном переходе нормалей от центра полигона к соседнему. Этот процесс был придуман в компании Pixar.

Итак, мы немного разобрались с тем, как работают нормали и как управление Vertex Normal влияет на Edges.

Понимание и знание этих процессов поможет вам на определенных этапах работы с моделью, и в целом облегчит жизнь.

UV развёртка

Немного о UV развертке, группах сглаживания и как Vertex Normal влияют на все это.

UV развертка имеет прямое отношение к тому, какую карту Normal Map (карта нормалей) вы получите в результате запекания. А Vertex Normal имеют прямое отношение к UV развертке, и правильная работа с ними, это путь к корректному шейдингу и чистому запеканию модели в финальном результате.

Главное правило при работе с UV касательно Soft/Hard Edges - на углах близких к 90 градусам, либо более острых, нужно расставлять Hard Edge, следовательно в этом месте должен быть разрез на UV. Т.е. визуально это будет выглядеть как два отдельных участка имеющих отступ.

Это связано с тем, что если на стыке выставлен Hard Edge - во время рендеринга программа делает резкий скачок между нормалями и при запекании это образует артефакт, так называемый «ШОВ».
Чтобы это обойти, программе нужно указать, что в этом месте происходит, скажем так, «отсечка» между нормалями, граница двух полигонов и их надо считать как отдельные.

8.png Пример того если у вас стоит на ребре группа сглаживания Hard Edge, то обязательно делаем разрез на UV

Если где-то на модели у вас стоит Soft Edge, то разрез в этом месте на UV развертке делать не обязательно, т.к. описанной выше отсечки не происходит из-за усредненных нормалей.

Главное помнить про угол - если он близкий к 90 градусам и острее, то необходимо поставить в этом месте Hard Edge и пустить разрез на UV развертке.

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

Возьмем Low Poly модель для запекания и нарушим в ней вышеописанное правило - не сделаем разрез на угле в 90 градусов.
9.png Пример в котором есть ошибка. Угол 90°, Группа сглаживания на ребре - Hard Edge, разрез на UV развертке не сделан 10.png В результате запекания мы видим артефакт на стыке полигонов - тот самый скачок, о котором шла речь выше 11.png На этом примере правило соблюдено, разрез на UV сделан в нужном месте, установлен отступ между шелами 12.png Получили чистое запекание без артефактов

В разных ситуациях и на разных участках модели это правило стоит учитывать, со временем вы научитесь применять его. Как и с остальными аспектами 3D моделирования - это придёт с опытом и насмотренностью.

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

Выделить стоит главное - от правильности распределения групп сглаживания зависит правильность отображения вашей модели. По сути группы сглаживания это результат работы вертекс нормалей.

13.png Пример групп сглаживания

Посмотрим на примере цилиндра. На примере видно, что модель разбита на три части - две крышки и центральная скругленная часть. На центральной части выставлены Soft Edge, чтобы создать плавный переход, сформирована группа сглаживания. На стыках с крышками - Hard Edge, которые будут отрезаны на UV развертке.

Это даёт нам четкое отображение гладкого цилиндра и корректный результат запекания.

6.png Не так уж плох и без кучи полигонов, верно?

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

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

Небольшой факт о вертекс нормалях

Несмотря на то, как отображается и считается модель в редакторе, движок интерпретирует её несколько иначе.

Допустим, у нас есть цилиндр на 12 сечений на группе сглаживания Hard Edge по скруглению. Он будет содержать в себе 24 вертекса и счётчики в редакторе будут отображать это число. Все логично - вертексы соседних полигонов сшиты и являются общими. Если этот цилиндр выгрузить в движок то окажется, что у него 48 вертексов.
Это связано с тем, что что на Hard Edge есть две нормали на один общий вертекс, мы уже знаем, что это необходимо для четкого перехода полигонов без визуального сглаживания. Соответственно движку для расчета отображения надо учесть все эти нормали, то есть 4 у каждого полигона из 12.
Это еще один аспект оптимизации графики для игр. Чем больше вертексов - тем больше надо учесть и обработать данных для отображения модели.

14.png На примере видно, что у цилиндра слева нормали на боковых полигонах «расщепляются» - образуют комплект из 4 нормалей на каждый полигон. На правом они усреднены, это дает сглаживание, а движок считает такие нормали за одну

Подводя итог

  • понимание того, как управлять Vertex Normal и как это работает, это путь к пониманию работы с Soft/Hard Edges.
  • понимание того, как Soft/Hard Edges применяются в группах сглаживания, и воздействуют на отображение вашей модели, влияет на финальный результат.
  • при создании UV развертки есть правило по работе с Soft/Hard Edges, его применение сильно облегчит вам жизнь и сэкономит время.

Результат всегда в конечном итоге будет зависеть от вас и вашего подхода.

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

15.jpg
Ваша заявка отправлена!
Если во входящих на почте: нет письма, проверьте папку спам или напишите нам в телеграм