Hard и Soft edges. Группы сглаживания

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

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

Vertex normal и Face normal

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

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

Hard и Soft edges. Группы сглаживания

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

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

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

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

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

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

Hard edge и Soft edge

Hard и Soft edges. Группы сглаживания

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

Hard и Soft edges. Группы сглаживания

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

1 - На левом цилиндре применены hard edge по всем граням. На правом по скруглению цилиндра стоят soft edge, а на стыке с крышками - hard edge. Так мы получаем плавное скругление по поверхности и четкую границу с крышками.
1 - На левом цилиндре применены hard edge по всем граням. На правом по скруглению цилиндра стоят soft edge, а на стыке с крышками - hard edge. Так мы получаем плавное скругление по поверхности и четкую границу с крышками.
2 - На левой сфере также стоят hard edge, на правой - soft edge по всему мешу, это делает шейдинг на нем плавным.
2 - На левой сфере также стоят hard edge, на правой - soft edge по всему мешу, это делает шейдинг на нем плавным.

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

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

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

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

Главное правило при работе с UV касательно soft\hard edge - на углах близких к 90 градусов, либо более острых, будет стоять hard edge, следовательно в этом месте должен быть разрез на UV. То есть визуально это будет выглядеть как два отдельных участка имеющих отступ.Это связано с тем, что если на стыке выставлен hard edge - во время рендеринга программа делает резкий скачок между нормалями и при запекании это образует артефакт, так называемый «шов». Чтобы это обойти, надо указать ей, что в этом месте происходит, скажем так, «отсечка» между нормалями, граница двух полигонов и их надо считать как отдельные.

Hard и Soft edges. Группы сглаживания

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

Давайте посмотрим простой пример с hard edge и разрезом на UV, чтобы понять разницу наглядно. Возьмем LP модель для запекания и нарушим в ней вышеописанное правило - не сделаем разрез на угле в 90 градусов.

Hard и Soft edges. Группы сглаживания

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

Hard и Soft edges. Группы сглаживания

На следующем примере правило соблюдено, разрез сделан в нужном месте, сделан отступ.

Hard и Soft edges. Группы сглаживания

В результате мы получаем чистое запекание с плавным переходом.

Hard и Soft edges. Группы сглаживания

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

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

Hard и Soft edges. Группы сглаживания

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

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

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

И в конце - небольшой факт о вертекс нормалях.

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

Hard и Soft edges. Группы сглаживания

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

Давайте подытожим:

  • понимание того, как управлять vertex normal и как это работает, это путь к пониманию работы с soft/hard edge.
  • понимание того, как soft/hard edge применяются в группах сглаживания, и воздействуют на отображение вашей модели, влияет на финальный результат.
  • при создании UV есть правило по работе с soft/hard edge, и его применение сильно облегчит вам жизнь и сэкономит время.

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

Hard и Soft edges. Группы сглаживания
1.8K1.8K показов
2.3K2.3K открытий
11 репост
2 комментария

Спасибо🎩

Ответить

Спасибо большое 👍

Ответить