Группы сглаживания

Моделер в 3D Studio MAX, особенно занимающийся низко-полигональным моделированием, должен чётко представлять себе, что такое группы сглаживания (Smoothing Groups). Понимание и использование групп сглаживания - есть большой шаг новичка моделера к профессионалу.

Группы сглаживания - это свойство, которое имеет каждый треугольник (face) любой полигональной модели в 3D Studio MAX. Знакомство с группами сглаживания лучше всего провести на примере Editable Mesh.

Создайте любой примитив, например, Box, и преобразуйте его в Editable Mesh. В закладке Modify выберите любой подобъект поверхности (Face, Polygon или Element), например, Face. При этом в свиток добавится дополнительная панель свойств поверхности (Surface Properties). Здесь нас интересует раздел, называющийся Smoothing Groups. Этот раздел как раз и работает с группами сглаживания.

С помощью кнопок с числами от 1 до 32 мы можем строить различные комбинации группы сглаживания для выделенных треугольников редактируемой полигональной модели.

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

Почему именно из 32-х значений строятся группы сглаживания в 3D Studio MAX?

Ответ прост. Для хранения информации об одном совпадении группы сглаживания достаточно одного бита. Для комбинации таких совпадений используется одно 32-х битовое число (DWORD). Кнопка на панели, например, с номером 18 отвечает за 18-й бит этого числа. Больше никаких ритуальных соображений по этому поводу не существует.

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

В чём же смысл групп сглаживания?

Рассмотрим изображение трёх сфер. Эти сферы различаются только группами сглаживания для своих треугольников, всё остальное, например, материал и количество полигонов, у них одинаковое. Как же можно достичь такого эффекта?

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

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

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

Работа с группами сглаживания.

С кнопками с числами в разделе Smoothing Groups немного разобрались. Можно добавить только, что если вы выделяете несколько полигонов, у одних из которых проставлены биты в группах, а у других соответствующие биты не проставлены, то кнопки с этими битами будут пустыми, без чисел.

Кнопка Select By SG позволяет выделять все треугольники, с указанными битами групп сглаживания.

Кнопка Clear All выключает все биты групп сглаживания для выделенных треугольников.

Кнопка Auto Smooth работает с выставляемым числом, находящимся справа от кнопки. Это число показывает отклонение нормалей треугольников в градусах. При нажатии на эту кнопку все выделенные треугольники, у которых отклонение нормалей меньше указанного числа, станут "сглаженными", за счёт выставления соответствующих групп сглаживания.

Где ещё встречаются группы сглаживания.

Модификатор Edit Mesh. Аналогично EditableMesh.

Модификатор MeshSmooth. В свитке Parameters есть раздел Surface Parameters.

Если выделить только Smooth Result, что происходит по умолчанию, то полученный объект полностью будет сглажен по группам сглаживания. Убрав этот флаг, мы можем оставить информацию о группах сглаживания с предыдущих уровней модификаторов, что скажется так же на гладкой закраске модели. Так же можно разделить сглаживание, выставив Smoothing Group, что повлияет на форму результирующей модели, при нескольких итерациях деления сглаживаемой модели.

Модификатор Smooth.

Работает для выделенных треугольников с предыдущих уровней модификаторов. То есть эти треугольники могут быть выделены, например, в модификаторе Edit Mesh или модификатором Mesh Select. Что делает этот модификатор, можно понять по аналогии с EditableMesh.

Что можно добавить для разработчиков игр.

Достичь аналогичного эффекта сглаживания можно другим способом, когда все треугольники имеют одинаковую группу сглаживания. Видимость границ достигается путём дублирования точек. То есть два соседних треугольника не имеют общих точек, просто соответствующие точки имеют одинаковые координаты. Кстати, именно такие дублированные точки должны попадать в игровой движок, различаясь только своими нормалями. Но поскольку моделеру неудобно самому разделять эти точки, этим должна заниматься программа экспорта из 3D Studio MAX, пользуясь данными из групп сглаживания.

Напоследок, всем желаю успешного низко-полигонального моделирования!

Автор: Сергей Ваткин
Homepage: www.gamedev.ru


600 0 850 17
8
2007-02-07
нужная тема но сплошная теория жалко, что совсем нет практических примеров
2007-03-01
тема класная, понял на четверть, автор обьясняет как Гайдар. а так если бы обяснил руским народным языком то было бы великолепно))))
2007-08-14
Самый полезный урок на рендере. все прекрасно понятно, практические примеры описаны 100%, читаешь, берешь и делаешь. Все.
2008-03-06
Тема хорошая, но не развита должным образом. Сам сейчас занимаюсь игровым моделингом, и со группами сглаживания хоть и разобрался в общих чертах, но не хватает опыта и конкретных примеров =(
2010-02-08
Большое спасибо
2010-04-07
Лаконично и понятно! На практике будем разбираться. Спасибо за урок!
2010-07-16
Спасибо!
2011-03-11
У меня вопрос, как сделать чтобы при конвертации из эдитейбл поли в эдитейбл меш не сбивались группы сглаживания. Сам создаю модели а потом экспортирую их в общую сцену в формате 3дс, вот при сохранении судя по всему группы сглаживания и сбиваются.
RENDER.RU