Карты нормалей. Часть III

Про сглаживание.

Карту нормалей обычно снимают с высокополигональной модели. Каким образом получить эту модель — выбор за вами. Можно сделать ее в Z-Brush или намоделить руками много полигонов, а еще можно получить из низкополигональной модели путем наложения на нее модификатора МешСмус/ ТурбоСмус (MeshSmooth/ TurboSmooth).

Наверное, есть еще какие-то методы, про которые мне ничего не известно, но эти самые популярные.

Скажу пару слов про способ, где используется МешСмус/ ТурбоСмус (MeshSmooth/ TurboSmooth). При этом я буду использовать ТурбоСмус — у него меньше настроек, но для большинства случаев их хватает.

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

Опишу некоторые из них.

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

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

На картинке ниже видно, что после сглаживания небольшая аккуратная вдавленность совершенно потеряла форму. Растеклась, как пластилин на солнце.

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	001_smooth_1.jpg
Просмотров:	227
Размер:	186.6 КБ
ID:	3709

Я знаю 2 основных подхода для решения таких проблем.

Сглаживание с учетом групп сглаживания и путем специальной подготовки (нарезки) геометрии.

В одном случае я назначаю на объект 2 разные группы сглаживания. На стыке групп будет острый угол.

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

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	002_smooth_2.jpg
Просмотров:	241
Размер:	108.5 КБ
ID:	3710

Вот результат ТурбоСмус (2 итерации).

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	003_smoothgroups_3.jpg
Просмотров:	292
Размер:	121.6 КБ
ID:	3711

Результаты очень похожи.

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

До сглаживания — 17 полигонов.

После:
544 — группы сглаживания (голубой объект).
1312 — нарезка (зеленый объект).

Методы можно комбинировать. Каждый хорош для определенных ситуаций. Экспериментируйте.

Еще пример и пища для размышлений.

Угол куба. Одна группа сглаживания. Обратите внимание на нарезку.

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	001_cubebefore.jpg
Просмотров:	211
Размер:	88.9 КБ
ID:	3712

После ТурбоСмус (2 итерации).

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	001_cubebafter.jpg
Просмотров:	215
Размер:	41.6 КБ
ID:	3713

Эксперимент простой. Попробуйте сделать его сами.

На этом про сглаживание — все.

Теперь про карты нормалей.

В предыдущий раз были эксперименты.

Сейчас я попробую сделать карту нормалей средней сложности. Это будет нормал для автомобильной покрышки.

На скриншоте заготовка будущего колеса и модуль, из которого она собрана путем вращения вокруг пайвота с определенным углом (местоположение пайвота играет важную роль). Для удобства можно использовать инструмент «Массив» (Array).

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	01_wheel_module.jpg
Просмотров:	229
Размер:	86.3 КБ
ID:	3714

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

Высокополигональная модель покрышки, с которой будет сниматься карта нормалей. Сделана путем сглаживания (нарезка геометрии, ТурбоСмус 2 итерации).

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	02_hipolymodel.jpg
Просмотров:	252
Размер:	218.6 КБ
ID:	3715

У вас есть низкополигональная и высокополигональная модели. Как снять нормал?

Технология прежняя — «Проекция» (Projection) и «Рендер на текстуру» (Render to texture).

Но с чего на что снимать?

Самые простые варианты:

  1. C высокополигонального сегмента на низкополигональный сегмент
  2. C двух и более сегментов на два и более сегмента
  3. C целой покрышки на целую покрышку

Менее очевидный — с половины высокополигональной покрышки на половину низкополигональной покрышки.

Есть еще варианты. Не буду их перечислять, можете их сами представить.

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

Рассмотрим несколько вариантов, как будто я еще не знаю правильного ответа.

Вариант 1. С высокополигонального сегмента на низкополигональный сегмент.

Не получится.

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	03_variant01.jpg
Просмотров:	228
Размер:	116.0 КБ
ID:	3716

В низкополигональной модели меньше сегментов. Высокополигональный сегмент узкий. Получим в результате узкую полоску нормала. Нет смысла снимать карту нормалей.

Добавим сегментов, чтобы перекрыть упрощенную геометрию. В данном случае хватило 3-х сегментов.

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	04_variant02_3to1.jpg
Просмотров:	217
Размер:	132.1 КБ
ID:	3717

Не забываем про анврап! Простая раскладка сделанная с помощью «Анфолд маппинг» (Unfold Mapping).

Unfold — 1) развертывать(ся); раскрывать(ся) 2) распускаться (о почках).

Вот моя раскладка и снятая карта нормалей (с 3-х на 1).

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	05_unvrap_normal_v1.jpg
Просмотров:	216
Размер:	67.1 КБ
ID:	3718

Посмотрим, что получится, если собрать половину покрышки и наложить на нее полученную карту нормалей.

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	06_unvrap_normal_v1_result.jpg
Просмотров:	218
Размер:	97.3 КБ
ID:	3719

Хорошо видны артефакты на стыках модулей. Именно в этих местах происходит стык трех сегментов высокополигональных модулей на детализированной модели (не забывайте, мы сняли карту нормалей с 3-х объединенных высокополигональных сегментов на один низкополигональный).

Конечно, такая карта нормалей никуда не годится.

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

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

Попробуем снимать карту нормалей с половины высокополигональной модели на один сегмент низкополигональной.

При этом детализированная модель — цельный объект. Точки на стыках сшиты (weld).

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	07_all_to_1_v1.jpg
Просмотров:	212
Размер:	122.4 КБ
ID:	3720

Сильных изменений на нормале не заметно. Наложим текстуру на модель.

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	08_all_to_1_v2.jpg
Просмотров:	220
Размер:	109.9 КБ
ID:	3721

Те же проблемы. Я тоже с этим столкнулся, и опять мне подсказали.

На низкополигональной покрышке тоже не должно быть разрывов геометрии.

Собираем. Сшиваем.

В итоге будем снимать с половины высокополигональной покрышки на половину низкополигональной покрышки.

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	16_all_to_all.jpg
Просмотров:	216
Размер:	204.4 КБ
ID:	3729

Иногда в процессе рендеринга можно увидеть красные области на текстуре. Это не карта нормалей. В процессе рендеринга отображается диффузная текстура. На ней можно увидеть ошибки наложения модификатора «Проекция» (Projection) и остановить рендеринг, чтобы не терять время.

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	11_cage_errors.jpg
Просмотров:	236
Размер:	229.2 КБ
ID:	3724

Исправив кэйдж, запустим рендер вновь.

Пока компьютер что-то рендерит, скажу пару слов об анврап.

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

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

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	09_unvrap_changes.jpg
Просмотров:	190
Размер:	61.7 КБ
ID:	3722

Это может показаться неправильным. Ведь я растянул/ сжал пиксели. На картинке видно, что с ними произошло.

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	10_unvrap_changes02.jpg
Просмотров:	222
Размер:	124.6 КБ
ID:	3723

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

Когда будут проблемы с наклонными деталями (лесенка на текстуре, плохая стыковка и т.д.) — вспомните про этот метод.

Ренедер закончился. Посмотрим, что получилось.

Результат оценить сложно из-за странных черных полосок в местах стыка.

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	12_cage_errors.jpg
Просмотров:	226
Размер:	118.3 КБ
ID:	3725

Настало время пару слов сказать о «Пэдинг» (Padding). В словаре несколько значений этого слова. Больше всего подходит — «вода», общие фразы в тексте; многословие, малозначащие куски текста, вставляемые для заполнения места.

Только у нас это малозначащие фрагменты текстуры, вставляемые для заполнения места. Это генерируемый программой отступ от края геометрии на текстуре.

Обратите внимание — фон вокруг нормала черный (цвет бэкграунда). Поэтому мы видим на модели черные полосы.

Почему мы вообще их видим? Все дело в мип-мапинге (mipmap), который работает во вьюпорте 3ds max и в большинстве игр. Подробнее о mipmap можно прочитать тут.

Буквы «MIP» это акроним латинской фразы multum in parvo, что значит «много на небольшом пространстве».

Если объяснять по-простому – то это автоматическое уменьшение основной текстуры с расстоянием. Это повышает скорость отрисовки и уменьшает артефакты.

При автоматическом уменьшении соседние пиксели текстуры смешиваются, и на карту нормалей попадает черный цвет фона, а мы видим артефакты

Пэддинг растягивает крайние пиксели текстуры на заданное значение. По-умолчанию это значение равно 2.

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

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	13_padding.jpg
Просмотров:	219
Размер:	43.6 КБ
ID:	3726

Вот как выглядит padding на текстуре. Когда пэддинг равен 0, мы видим реальный размер текстуры (объекта). 1:1.

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	14_padding_exmple_v1.jpg
Просмотров:	223
Размер:	99.4 КБ
ID:	3727

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

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	15_padding_exmple_v2.jpg
Просмотров:	309
Размер:	106.3 КБ
ID:	3730

Заметно, что значения по умолчанию (2) — лучше не использовать. Приемлемые результаты получаются при пэддинге от 8 и выше. Я использую 16. Наверное, можно и больше, но нужно ли это?

В итоге правильным оказался вариант «Половина высокополигональной покрышки на половину низкополигональной покрышки», со значением пэддинга 8.

Не забывайте, что в случае с другой моделью все будет по-другому. Конечно, не на 100%. Например, пэддинг лучше использовать от 8 до 16.

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

Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	17_finalresult.jpg
Просмотров:	287
Размер:	175.2 КБ
ID:	3731

Ну и конечно, для завершения картины необходимо текстурирование.

Чтобы научиться делать качественные 3D-модели с использованием МешСмус/ ТурбоСмус, нужно время. Я описал лишь малую часть проблем и вопросов, которые возникают в работе. Опыт приходит со временем. После множества проб и ошибок.

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

«Нельзя снять один и тот же нормал дважды» — шутим мы на работе.

Если вы снимите нормал с первого раза — это очень хорошо.

В следующий раз я попробую снять карту нормалей с более сложной модели и затрону особенности анврапа и «нарезки».

Comments

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.