Артефакты на зеркальных поверхностях
Мы уже рассказывали про основные ошибки при запекании карт, но отдельного внимания заслуживает наш сегодняшний гость — артефакты на отражающих поверхностях.
Алгоритмы запекания не идеальны и часто выдают мелкие проблемы, которые мы даже не замечаем. Они не видны на обычных поверхностях, но сильно портят картину, когда мы работаем со стеклом или зеркалом.
Выглядит это вот так:
SPH-4 на ArtStation: https://www.artstation.com/artwork/OoGwGv
Еще один пример:
Детектор на ArtStation: https://www.artstation.com/artwork/ybgL53
На первый взгляд может показаться, что проблема в материале. Возможно, какие-то заливочные слои в Substance Painter так влияют на отражение. А может быть, это такая HDRI карта?
Нет. Проблема в карте нормалей.
Самый надежный способ избавиться от неё — подчистить в фотошопе :)
Заходим в фотошоп, загружаем нашу карту нормалей и кладем поверх UV сетку. В гифке показано, как сохранить UV wireframe, используя 3D’s Max.
Теперь выбираем пипетку и ищем пиксельные перепады на нужном шелле.
Да, перепад может быть буквально на 1-2 значения по RGB. Без пипетки его так просто не найти. Если наши опасения подтверждаются — закрашиваем или заливаем весь шелл однотонным цветом. Значения цвета по RGB — R-127; G-127; B-255.
Готово, ты великолепен!
Ещё одна причина, из-за которой могут возникать проблемы при использовании карты нормалей на отражающих поверхностях — битность текстуры.
Когда на карте присутствует плавный градиент, после сжатия текстуры могут появиться полосы. Они возникают из-за нехватки цветов для отображения градиента.
Грубо говоря, это выглядит следующим образом:
у тебя есть плавный переход между цветами. Для примера возьмем красный, зеленый и синий. Чтобы отобразить переход от красного к зеленому, тебе нужны промежуточные оттенки. Чем больше оттенков — тем плавнее переход. Количество используемых оттенков определяется битностью изображения. Если ты уменьшаешь битность — переход становится резким:
Пример условный.
Соответственно, для решения проблемы нужно повысить битность экспортируемых карт. Делается это в Export Settings:
А если хочешь всегда экспортировать карту с конкретной битностью/форматом — можно сохранить эти настройки в Output Templates:
Но помни о том, что это работает лишь в том случае, если ты запекал карту нормалей изначально с высокой битностью.
Чуть больше и подробнее про битность текстур можешь почитать в нашем переводе статьи с polycount.
Это частые проблемы с неочевидным, на первый взгляд, решением. Но теперь тебе нечего боятся: если обнаружишь подобное в своем проекте — ты знаешь, что делать.
Stay tuned!
Хочешь получить бесплатный урок курса «3D PRO. Game Environment Pipelines»? Оставляй заявку: https://render.ru/ru/course/19296