Наша новая игра 8 сентября в раннем доступе на steam



Как правильно сглаживать 3d модели

Публикую продолжение обучающих материалов от ценящего время моделера 3D техники Александра Барсукова (ник DesertBull).

Раньше я уже публиковал его труд здесь про UV и там про основы моделирования под сглаживание.

Поехали!

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

За "легкую" модель в будущем вам обязательно скажет "спасибо" любой, кто будет с ней работать. Кубик со 100000 полигонами бесспорно выглядит красиво, но что если... в будущем в сцене должно будет быть 10000 кубиков? Тогда открытие такой сцены, работа с ней и рендеринг – станут настоящей пыткой для любого пользователя, у которого компьютер не хайенд-навороченный монстр или рендер-ферма.

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

Поговорим про нормали полигонов (не путать с нормал-картами)))

Я создал сцену с 4-мя кубиками. На заднем фоне я разместил геометрию полос, дабы более наглядно показать изложенный материал.

Сцена с 4 одинаковыми 3d кубиками

Итак. Поговорим про чамферы (Chamfer). Поверите ли вы, если я скажу, что фактически никогда их не использую? Если быть точным, то в 99% случаев)))

Причин несколько:

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

Слева на право (сверху внизу):

  • Первый кубик – базовый. С ним я ничего не буду делать кроме работы с группами сглаживания.
  • Второй кубик – проработан моим способом, посредством добавления 1 пояса еджей с каждой стороны.
  • Третий кубик – "обработан" чамфером по всем еджам.
  • Четвёртый кубик – "обработан" чамфером по всем еджам + дополнительно добавлено по одному поясу еджей с каждой стороны. 

1. просто кубик и 2. кубик с лупами по всем краям сторон

3. кубик с чамфером и 4. кубик с чамфером и лупом рёбер по краю

Итак, назначим на все кубики одну группу сглаживания (не путать с сабдивижнами)

Как назначить разные группы сглаживания на полигоны

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

  1. На первом кубике при работе группы сглаживания мы, по сути, имеем ооочень грубый шарик... Далее я верну ему разные группы сглаживания, чтобы он являлся ориентиром по отражениям в сравнении с другими кубиками.
  2. На втором кубике мы ничего не чамферили, а просто добавили по поясу еджей с каждой стороны [они еще называются лупами, примечание автора блога]. При работе одной группы сглаживания на изгибах геометрии, она пытается непосредственно ... сгладить (знаю...масло-масляное)))) эти самые изгибы геометрии. Добавленные нами еджи являются сдерживающим фактором в пределах которых и происходит это самое сглаживание. Так как следующий после зоны сглаживания полигон находится в одной плоскости с тем, что находится на изломе геометрии между ними не происходит уже никаких сглаживаний и соответственно, на этом полигоне не будет уже никаких искажений отражений.
  3. Третий кубик: основной (самый большой) планарный полигон не находится в одной плоскости с крайним еджем из зоны чамфера, поэтому между ними так же происходит сглаживание, что однозначно вызывает искажения отражений на планарном (самом большом) полигоне.
  4. Четвёртый кубик: то же, что и третий, но скорректирован способом как на втором кубике, благодаря чему здесь мы так же имееем корректное отражение на планарном (самом большом) полигоне. 

механизм работы групп сглаживания на 3d кубиках

(кликните для увеличения)

Давай посмотрим как это выглядит на рендере:

рендер 3D кубиков с разным механизмом сглаживания

(кликните для увеличения)

Как я говорил выше, я верну первому кубику разные группы сглаживания, чтобы он был ориентиром в сравнении "правильности" отражений на планарных полигонах (в нашем случае это верхние полигоны на кубиках с отражением полос):

Кубик ориентир для разных механизмов сглаживания

(кликните для увеличения)

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

Editable Poly: привязка по еджам при моделировании

Ты спросишь, почему я показал 4-ый вариант? Ведь он даже более полигонален, нежели третий. Всё просто. Второй вариант годится абсолютно везде, где модель не будет видно, как говорится "в силуете". Но в иных случаях следует использовать вариант 4. Это мелочи и они не критичны, но я давно понял, что тысяча таких вот мелочей делает картинку значительно живее. Это может быть не видно явно, но глаз подсознательно видит такие вещи и чувствует. 

Вариант 2 и 4 на реальном примере

(кликните для увеличения)



Подпишитесь на обновление блога (вот 3 причины для этого).
Введите ваш e-mail:


Реклама на 3D блоге: если вам нужно приобрести лицензионный Photoshop CC, 3ds Max 2014 или купить Corel Videostudio Pro X6, то это можно сделать в онлайн-магазине store.softline.ru




Вам понравилась статья? Хотите отблагодарить автора? Расскажите о ней друзьям.
Или подпишитесь на обновление блога по E-Mail.

Введите ваш e-mail (используется только для отправления обновлений блога):

комментариев 15 к статье “Как правильно сглаживать 3D модели (лупами или чамфером)”

  1. Не понятно написано, размазано как то. Что такое правильно, не правильно? Правильнее сказать с оптимизацией или без. Имхо 3тий вариант выглядит лучше всего без танцев с бубном. И почему ко второму варианту не применит смуз? Или тут дело в оптимизации? Тогда опять 3тий вариант выглядит лучше всего. Это Квад-чамфер который сейчас доступен как плагин, а в 2015 максе будет по умолчанию. Но имхо квад-чамфер как отдельный плагин лучше всего работает. И еще, возможно дело в углах сглаживания.

    ps http://www.mariussilaghi.com/products/quad-chamfer

  2. да, полезно очень, только я не понял где нужно использовать 2й вариант а где 4й(((

  3. Спасибо за полезную инфу. Все очень понятно.

  4. Я давно уже применяю «2 способ» на некоторых деталях, но, Chamfer часто тоже выручает

  5. Полезный материал. Для моделирование предметов интерьера, большинство из которых смотрятся силуэтно, оптимальный способ чемфера с минимальным радиусом и количеством ребер. Для корректности отражений, я задаю группу сглаживания только на скругленные углы, а на плоскостях вообще сглаживание убираю. Для удобства и скорости работы лучше использовать плагин EdgeChEx, который позволяет выделить полигоны области скругления одним кликом при преобразовании обьекта в editable poly.

  6. Сногсшибательно!!!!!!!

  7. «Второй кубик – проработан моим способом, посредством добавления 1 пояса еджей с каждой стороны.»
    можно описать способ или небходимо с помощью connect нарезать и подгонять еджики на всех гранях кубика,я правильно понимаю?

  8. Что-то меня это совсем не радует, даже обеспокаивает о «правильности отражений на всех 3д моделях». Или я чего-то не
    до понимаю. Нет, конечно, что вот таким способом сглаживать лоупольные модели — это хорошо, но я о другом.
    А вот почему. Взял, к примеру, тот 2й куб, проработанным «спец. способом», посредством добавления 1 пояса еджей с
    каждой стороны. Для эксперимента, взял и применил к этому 2му кубу TurboSmooth с 1 интерацией сглаживания.

    Назначил 1 группу сглаживания, по умолчанию 45* градусов, и на рендере получается такая картина:

    Которая заставляет задуматься о «правильности отражений на всех моделях». Ведь форма модели далеко не такая…, какую себе представляет система сглаживания, я так думаю, она себе представляет, что там (на изгибе) вообще полу-труба какая-то .

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

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

    — Факт в том, как именно она это сглаживает угловатую геометрию. Вот для обычного куба, на котором нет ни фасок, ни вот этого специального второго способа приведенного в этой статье, AutoSmooth создает 3 или 6 групп сглаживания, потому что там углы больше или равны 45 градусам и отражения на нем правильные.
    На моём кубе есть изгиб полигонов, у которого угол меньше 45 градусов, к примеру, это = 15*

    — AutoSmooth всему мешу присвоит только 1 группу сглаживания — и, из-за непонятной системы сглаживания, куб получается с такими глюками на отражениях, что не правильно.

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

    Поиграв со значениями настроек угла в свитке Smooth Groups, я добился оптимального значения — «15». Теперь отражения стали «правильными»:

    Но поверхность куба уже не является сглаженной:

    Если попытаться поставить ближайшие значения, например, 18* или 20* — то куб либо слегка сгладится, но все-равно будет угловатым (будет несколько групп сглаживаний, как и при 15* градусах, также будут конфликтные швы между группами), либо к нему вернутся те кривые отражения соответственно.

    Понимаете, оно должно само определять, вычислять углы на изгибах или полигонов, и по этим вычислениям строить систему сглаживания, чтобы были правильные отражения.А то смотря на отражение этого куба, ощущается, что система делает некие упрощения или еще что-то…

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

    Не сидеть же и добавлять на изгибы дополнительные ребра уже в готовом Mid, High-poly модели, к примеру, машине или особенно на персонажей, и пр., чтобы были правильные отражения на некоторых изгибах моделей? Или все-таки придется?

    У кого есть какие мнения по этому поводу?

    • Доброго дня всем участникам беседы.
      Спасибо за замечательный урок товарищу DesertBull.

      Уважаемый MaxVolume, не могли бы Вы загрузить ваши скриншоты еще раз? К сожалению они уже удалены. Очень интересно проследить ход ваших мыслей.

      Спасибо.

      Также в целом мне не ясно почему «способ 2» менее затратен чем 3?
      Ведь если применить одинарный Chamfer (способ 3, с треугольником на стыке трех ребер) — полигонаж куба составит 44 триса, в то время как способ 2 дает результат в 108 трисов.

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

      С уважением.
      Ярослав

  9. Эх, прошли те времена когда все пищали от радости от внедрения normal shading (сейчас просто smoothing)

    Сейчас проблемы прям «серьезнее» — как это — правильно работает или нет….

  10. Великолепно! Отличный урок! Проверил!, всё работает! До этого урока, эти группы сглаживания меня задолбали своими искажениями. И в тоже время, без них не обойтись. А теперь всё ясно: что бы на крупных поликах избежать искажений, нужно этот полик окружить узкой полосой компланарных полигонов, и всё класс!
    Только я в одном не согласен с автором — насчёт того, когда применять способ 2, а когда способ 4. Автор предлагает судить по наличию «силуэтности». Но мы не знаем, кто и как будет использовать нашу модель. Значит у нас определённый угол может находиться не в силуэте, а у другого он попадёт в силуэт, и будет стрёмно.
    Лично я буду делать так: если угол «резкий» — способ 2, если угол плавный (большой радиус скругления) — способ — 4.
    И ещё хотелось бы узнать у автора: каким способом можно быстро наносить рёбра по способу 2?

  11. Кстати, по фотографиям в этой статье, заметил ещё одну интересную особенность, которая может быть полезной — чем больше угол между нормалями соседних полигонов, тем больше искажения.
    Чуть не забыл. Спасибо автору за полезную статью!

Извините, в данный момент комметарии закрыты.

© 2008 - 2018 3dyuriki.com
Для связи со мной 3dyuriki@gmail.com