Перейти к содержимому


Информация о статье

  • Добавлено:
  • Обновлено:
  • Просмотры: 2133
  • Автор: Lord Beowulf

 


* * * * *
3 Рейтинг

Вместо ликбеза: Smoothing Groups в 3Ds MAX

Описание основ работы с группами сглаживания (Smoothing Groups) в 3Ds MAX.
Отдельная благодарность Коту Зловреду (а на аватарке Брейн, все хотят обмануть) и Cutter за предоставление моделей для урока. Без этих моделей статья вышла бы намного позже.

Написано в Май 02 2015 17:07

Добрый день, друзья. С вами снова я, Lord Beowulf. После написания первой части своего туториала по луку, я подумал, что мне не хватит 1-2 курсов уроков, что бы рассказать о некоторых проблемах, возможностях и особенностях процесса 3D моделирования, о которых я знаю, и знание которых может пригодиться вам в работе. Поэтому я решил написать этот урок, логически не связанный с моей основной серией уроков. В нем я более детально остановлюсь на вопросе - группы сглаживания (Smoothing Groups) в 3Ds MAX.

Для начала давайте внимательней рассмотрим свиток Smoothing Groups в модификаторе Editable Poly.

Screenshot_1.png

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

Screenshot_2.png

Если вы выбрали полигоны, входящие в 1 группу - графа будет выделена.

Screenshot_3.png

Снизу от таблицы с группами сглаживания находится функция Select By SG(Smoothing Groups). Название говорит само за себя - выбрать полигоны по группам сглаживания. Давайте щелкнем по этой функции. Я построил примитив цилиндр, поэтому у меня групп будет немного. Вы можете использовать любую модель. Щелкнув по функции, у нас отроется таблица, похожая на таблицу в свитке Smoothing Groups, только в новой будет значительно меньше граф.

Screenshot_4.png

В ней отображаются только существующие группы сглаживания. Один щелчок ЛКМ выделяет группу. Один щелчок по выделенной группе - делает её не активной. Выделите одну любую группу и нажмите OK. Вы можете видеть, что все полигоны данной группы сглаживания выделились. Если вы выделите две группы сглаживания, то, соответственно, будут выделены полигоны обеих этих групп.
Функция Clear all, исходя из названия, очищает параметры сглаживания всех выбранных полигонов.
Следующая любимая всеми функция - Auto Smooth. Плюсы её бесспорны. Выделил полигоны, нажал на Auto Smooth - получил сглаживание без особой возни.
Последняя функция представляет собой поле с числом - это угол сглаживания. Чем оно (число) больше, тем на больший угол искривления воздействует сглаживание. Минимальное значение - 0, максимальное - 180. Данная функция относится только к автоматическому сглаживанию. Числа в этом окне являются градусами, в диапазоне которых будет проводиться сглаживание. Например, угол между полигонами в стандартном максовском цилиндре - 30 градусов. Выделив полигоны окружности цилиндра, поставив число 30 и нажав на Auto Smooth, мы получим сглаженную поверхность. Если поставить число 29, то ничего не произойдет (в данном случае). Углом между полигонами является внешний угол между ними, а не внутренний. Схематично углы изображены на скриншоте.

Screenshot_5.png

Угол между полигонами "трубы" и "крышки" - 90 градусов. То есть, если мы поставим количество градусов - 89, то сгладятся только полигоны окружности. При этом граница между основанием и окружностью будет не тронута.

 Screenshot_7.png

Если мы поставим 90 градусов или больше - сгладится и она.

Screenshot_8.png

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

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

Часто при моделировании и последующем сглаживании объекта встает задача “частичного” выделения ребра – то есть, чтобы на части протяженности ребер угол между полигонами был четко выделен, а затем полностью сглаживался. Пример – складки на одежде либо сочленение механических объектов, типа точка соединения рукояти пистолета и дужки вокруг спускового крючка.
За следующий пример благодарю пользователя Кот Зловред, который любезно предоставил часть своей модели, на которой можно продемонстрировать возможности групп сглаживания.

скрин — копия.png

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

Screenshot_11.png

Получается следующее

Screenshot_12.png

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

Screenshot_13.png

Присваиваю им вторую группу сглаживания. Верхним полигонам в итоге было присвоено две различных группы сглаживания. Читаются обе и никаких стыков между ними поэтому не видно. Зато нужные мне ребра лежат между группами сглаживания и отчетливо отображаются.

 Screenshot_14.png
 

Screenshot_15.png

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

Screenshot_16.png

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

Screenshot_17.png

Screenshot_18.png

Получаем достаточно забавный эффект из ничего. Не нужно извращаться ни с дублированием вершин, ни с дополнительными полигонами, которые необоснованно утяжеляют нашу модель. Просто две группы сглаживания, которые дают такой эффект что в рендере в 3D max, что на движке игры, так как любой движок читает параметры групп сглаживания.
Теперь же вернемся к нашему пистолету, дабы продемонстрировать применение этого способа не в вакууме, а в реальной ситуации. Напомню, благодаря Коту Зловреду, я имею такую вот модель

скрин.png

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

Screenshot_9.png

Screenshot_10.png

Не совсем то, верно? Углы на рукояти отчетливо видны.
Затем выделим следующие полигоны и назначим им другую группу.

Screenshot_21.png

Screenshot_22.png

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

Следующий пример применения групп сглаживания мне предоставила уважаемая Cutter, за что ей благодарность. Этот пример является достаточно иллюстративным, так как модель представляет собой одежду, экспортированную из другой игры. (Инквизиция, как я понимаю. Или Ведьмак). На данном примере я продемонстрирую, как можно сгладить данную полноценную модель. Так же данный пример отлично показывает все косяки, которые часто вызывает экспорт из игры.
Итак, я открыл модель, конвертировал её в Edit Poly, присмотрелся и увидел, что имею дело вот с таким вот угловатым ужасом.

Screenshot_23.png

Для теста решил накинуть группу сглаживания, но что я вижу? Безрезультатно, модель никак не меняется! В чем дело, как дальше жить, кто виноват и что делать? Виноват в данном случае экспорт из игры. Дело в том, что при экспортировании модель зачастую разбивается на составные элементы и один полигон представляет собой отдельный элемент. Если так, то у полигонов нет общих граней, а раз так, то и сглаживать нечего. Для того чтобы понять, так это или нет, я решил перейти на уровень редактирования вершин, выделил все вершины корсета и применил функцию Weld на самом малом значении (0.01)

Screenshot_24.png

До применения Weld. Обратите внимание на количество вершин. Что-то здесь не так!

Screenshot_25.png

После применения функции Weld. MAGIC!

После этого я решил сделать тоже самое с воротником и лифом.

Screenshot_26.png

1029 вершин? В это мне верится больше. К сожалению, косяки в модели не ограничиваются только этим. И если вы решаете выкладывать в виде плагинов для игр серии TES экспортированные откуда-либо модели, прошу, выискивайте их (косяки). Это ну очень омерзительные вещи. Поскольку урок не об этом я укажу на некоторые из них на заметку вам и к этому возвращаться не буду.
Для выявления косяков поступаем просто и нудно – выделяем вершины. Смотрим, сколько их должно быть. Смотрим, сколько их есть на деле. Если их больше, чем надо – ищем косяк.

Screenshot_27.png

Номер один. Суть в том, что там скрыто еще 2-3 полигона. Просто удалите 1 из вершин, отсутствие которой потревожит меньшее количество полигонов (желательно всего один) и достройте эти полигоны. Так же в некоторых случаях, когда в модели присутствуют элементы без толщины (то есть просто плоскости) типа бахромы сверху корсета, может случиться, что полигоны будут вывернутыми и как следствие не отображаться. Для ликвидации этого перейдите в режим редактирования элементов и выделите эти участки. Они будут выделяться как отдельные элементы. После выделения нажмите на функцию Flip (полигоны станут видимыми в старых версиях 3D MAX, в новых же станут светлее). Затем примените функцию Weld. Всё, косяки исправлены, теперь перейдем к сглаживанию.
Сначала, я уберу сглаживание, которое установилось после “сшивания” всех вершин. Сейчас я просто на скриншотах покажу, как я расставил группы и что из этого получилось. Итак, начнем.
Сначала разберемся с воротником и корсетом.
Первая группа сглаживания.

Screenshot_30.png

Вторая

Screenshot_29.png

Третья

Screenshot_31.png

Четвертая.

Screenshot_32.png

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

Screenshot_33.png

Вторая группа

Screenshot_34.png

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

Screenshot_35.png

Screenshot_36.png

Пятая группа представляет собой полигоны торцевой части бахромы

Screenshot_37.png

Шестая группа – внутренняя часть верха ворота. Вернее, её часть. Да, с воротом я так же сделаю заметным угол спереди в центре.

Screenshot_38.png

Седьмая группа.

Screenshot_39.png

Восьмая группа

Screenshot_40.png

И, наконец, девятая, последняя, группа.

Screenshot_41.png

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

Screenshot_28.png

Итог моих мучений вы видите на скриншоте.

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

Прежде чем закончить, я бы хотел бросить своеобразный клич. Данная статья – проба пера моей идеи, которая представлена в виде написания уроков на различные частные темы типа групп сглаживания и т.д., в которых не излагается методика создания готовой модели, а освещается более конкретно небольшие темы, которые могут вызвать сложности или вопросы. Нужны ли такие статьи? Как их лучше организовать? Излагайте идеи так же на форуме TesAll, в комментариях к уроку или мне в личку. Ну и естественно темы для уроков будут формироваться либо учитывая мои личные наблюдения, что вызывает затруднения, либо с помощью ваших вопросов.

На этом у меня всё, надеюсь на ваше участие. Спасибо за внимание, удачи!

Lord Beowulf, для Tesall.ru