Про сглаживание.
Карту нормалей обычно снимают с высокополигональной модели. Каким образом получить эту модель — выбор за вами. Можно сделать ее в Z-Brush или намоделить руками много полигонов, а еще можно получить из низкополигональной модели путем наложения на нее модификатора МешСмус/ ТурбоСмус (MeshSmooth/ TurboSmooth).
Наверное, есть еще какие-то методы, про которые мне ничего не известно, но эти самые популярные.
Скажу пару слов про способ, где используется МешСмус/ ТурбоСмус (MeshSmooth/ TurboSmooth). При этом я буду использовать ТурбоСмус — у него меньше настроек, но для большинства случаев их хватает.
При сглаживании моделей, т.е. попросту добавлении новых полигонов путем деления исходных полигонов модели (по особым правилам), тоже есть нюансы.
Опишу некоторые из них.
Например, надо стараться, чтобы большинство полигонов в модели были прямоугольными, т.е. по углам было 4 вертекса. Наверное, даже лучше, чтобы все были прямоугольными, если это возможно.
Обычно в результате ТурбоСмус, острые углы сглаживаются. Это, конечно, хорошо, но что, если надо получить не только гладкие поверхности?
На картинке ниже видно, что после сглаживания небольшая аккуратная вдавленность совершенно потеряла форму. Растеклась, как пластилин на солнце.
Я знаю 2 основных подхода для решения таких проблем.
Сглаживание с учетом групп сглаживания и путем специальной подготовки (нарезки) геометрии.
В одном случае я назначаю на объект 2 разные группы сглаживания. На стыке групп будет острый угол.
Во втором случае, вокруг эджей, которые я не хочу скруглять, на близком расстоянии, с обеих сторон прорезаны дополнительные грани. На весь объект при этом наложена одна группа сглаживания.
Вот результат ТурбоСмус (2 итерации).
Результаты очень похожи.
Выбор за вами, какой метод использовать. В одном случае вам надо будет внимательно контролировать группы сглаживания на модели, в другом — нарезать лишние грани, при этом количество полигонов после сглаживания возрастет, по сравнению с методом, построенном на группах сглаживания.
До сглаживания — 17 полигонов.
После:
544 — группы сглаживания (голубой объект).
1312 — нарезка (зеленый объект).
Методы можно комбинировать. Каждый хорош для определенных ситуаций. Экспериментируйте.
Еще пример и пища для размышлений.
Угол куба. Одна группа сглаживания. Обратите внимание на нарезку.
После ТурбоСмус (2 итерации).
Эксперимент простой. Попробуйте сделать его сами.
На этом про сглаживание — все.
Теперь про карты нормалей.
В предыдущий раз были эксперименты.
Сейчас я попробую сделать карту нормалей средней сложности. Это будет нормал для автомобильной покрышки.
На скриншоте заготовка будущего колеса и модуль, из которого она собрана путем вращения вокруг пайвота с определенным углом (местоположение пайвота играет важную роль). Для удобства можно использовать инструмент «Массив» (Array).
Почему я использую только один сегмент? Потому, что проще разложить анврап и нарисовать текстуру.
Высокополигональная модель покрышки, с которой будет сниматься карта нормалей. Сделана путем сглаживания (нарезка геометрии, ТурбоСмус 2 итерации).
У вас есть низкополигональная и высокополигональная модели. Как снять нормал?
Технология прежняя — «Проекция» (Projection) и «Рендер на текстуру» (Render to texture).
Но с чего на что снимать?
Самые простые варианты:
- C высокополигонального сегмента на низкополигональный сегмент
- C двух и более сегментов на два и более сегмента
- C целой покрышки на целую покрышку
Менее очевидный — с половины высокополигональной покрышки на половину низкополигональной покрышки.
Есть еще варианты. Не буду их перечислять, можете их сами представить.
Когда я первый раз снимал карту нормалей с покрышки, то перепробовал их все, но пока нашел только один правильный.
Рассмотрим несколько вариантов, как будто я еще не знаю правильного ответа.
Вариант 1. С высокополигонального сегмента на низкополигональный сегмент.
Не получится.
В низкополигональной модели меньше сегментов. Высокополигональный сегмент узкий. Получим в результате узкую полоску нормала. Нет смысла снимать карту нормалей.
Добавим сегментов, чтобы перекрыть упрощенную геометрию. В данном случае хватило 3-х сегментов.
Не забываем про анврап! Простая раскладка сделанная с помощью «Анфолд маппинг» (Unfold Mapping).
Unfold — 1) развертывать(ся); раскрывать(ся) 2) распускаться (о почках).
Вот моя раскладка и снятая карта нормалей (с 3-х на 1).
Посмотрим, что получится, если собрать половину покрышки и наложить на нее полученную карту нормалей.
Хорошо видны артефакты на стыках модулей. Именно в этих местах происходит стык трех сегментов высокополигональных модулей на детализированной модели (не забывайте, мы сняли карту нормалей с 3-х объединенных высокополигональных сегментов на один низкополигональный).
Конечно, такая карта нормалей никуда не годится.
Когда я первый раз столкнулся с этим, то не знал что делать. Если бы не помощь одного хорошего человека, вряд ли я быстро с этим бы разобрался. Хорошо если у вас тоже есть такой человек, у которого можно проконсультироваться.
Высокополигональная модель в данном случае не должна иметь разрывов.
Попробуем снимать карту нормалей с половины высокополигональной модели на один сегмент низкополигональной.
При этом детализированная модель — цельный объект. Точки на стыках сшиты (weld).
Сильных изменений на нормале не заметно. Наложим текстуру на модель.
Те же проблемы. Я тоже с этим столкнулся, и опять мне подсказали.
На низкополигональной покрышке тоже не должно быть разрывов геометрии.
Собираем. Сшиваем.
В итоге будем снимать с половины высокополигональной покрышки на половину низкополигональной покрышки.
Иногда в процессе рендеринга можно увидеть красные области на текстуре. Это не карта нормалей. В процессе рендеринга отображается диффузная текстура. На ней можно увидеть ошибки наложения модификатора «Проекция» (Projection) и остановить рендеринг, чтобы не терять время.
Исправив кэйдж, запустим рендер вновь.
Пока компьютер что-то рендерит, скажу пару слов об анврап.
Дело в том, что нормал очень не любит наклонных областей на анврапе. Иногда невозможно получить хороший результат, не выровняв определенные элементы на раскладке.
Вот как я изменил анврап для покрышки. Я сделал это специально, хотя в данном случае и с начальной версией все бы получилось.
Это может показаться неправильным. Ведь я растянул/ сжал пиксели. На картинке видно, что с ними произошло.
Да. Текстура исказилась, но в определенных случаях важнее качественная карта нормалей. К тому же на покрышке потом будет диффузная текстура резины, а на ней эти подтяжки практически не видны.
Когда будут проблемы с наклонными деталями (лесенка на текстуре, плохая стыковка и т.д.) — вспомните про этот метод.
Ренедер закончился. Посмотрим, что получилось.
Результат оценить сложно из-за странных черных полосок в местах стыка.
Настало время пару слов сказать о «Пэдинг» (Padding). В словаре несколько значений этого слова. Больше всего подходит — «вода», общие фразы в тексте; многословие, малозначащие куски текста, вставляемые для заполнения места.
Только у нас это малозначащие фрагменты текстуры, вставляемые для заполнения места. Это генерируемый программой отступ от края геометрии на текстуре.
Обратите внимание — фон вокруг нормала черный (цвет бэкграунда). Поэтому мы видим на модели черные полосы.
Почему мы вообще их видим? Все дело в мип-мапинге (mipmap), который работает во вьюпорте 3ds max и в большинстве игр. Подробнее о mipmap можно прочитать тут.
Буквы «MIP» это акроним латинской фразы multum in parvo, что значит «много на небольшом пространстве».
Если объяснять по-простому – то это автоматическое уменьшение основной текстуры с расстоянием. Это повышает скорость отрисовки и уменьшает артефакты.
При автоматическом уменьшении соседние пиксели текстуры смешиваются, и на карту нормалей попадает черный цвет фона, а мы видим артефакты
Пэддинг растягивает крайние пиксели текстуры на заданное значение. По-умолчанию это значение равно 2.
Когда крайний пиксель растянут (в результате пэддинга), граница текстуры смещается в сторону и смешения с черным цветом не происходит. Артефакты пропадают.
Вот как выглядит padding на текстуре. Когда пэддинг равен 0, мы видим реальный размер текстуры (объекта). 1:1.
Вот текстуры с разными значениями пэддинга наложены на геометрию.
Заметно, что значения по умолчанию (2) — лучше не использовать. Приемлемые результаты получаются при пэддинге от 8 и выше. Я использую 16. Наверное, можно и больше, но нужно ли это?
В итоге правильным оказался вариант «Половина высокополигональной покрышки на половину низкополигональной покрышки», со значением пэддинга 8.
Не забывайте, что в случае с другой моделью все будет по-другому. Конечно, не на 100%. Например, пэддинг лучше использовать от 8 до 16.
Для теста вполне нормальный результат, хотя и не лишенный недостатков.
Ну и конечно, для завершения картины необходимо текстурирование.
Чтобы научиться делать качественные 3D-модели с использованием МешСмус/ ТурбоСмус, нужно время. Я описал лишь малую часть проблем и вопросов, которые возникают в работе. Опыт приходит со временем. После множества проб и ошибок.
Каждая новая модель отличается от предыдущей. Каждый раз надо анализировать ситуацию и принимать какое-то решение и по моделингу, и по раскладке и по нормалу.
«Нельзя снять один и тот же нормал дважды» — шутим мы на работе.
Если вы снимите нормал с первого раза — это очень хорошо.
В следующий раз я попробую снять карту нормалей с более сложной модели и затрону особенности анврапа и «нарезки».
Leave a Reply
You must be logged in to post a comment.