Артефакты на зеркальных поверхностях

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

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

Выглядит это вот так:

image6.png

image4.png

SPH-4 на ArtStation: https://www.artstation.com/artwork/OoGwGv

Еще один пример:

image5.png

image10.png

Детектор на ArtStation: https://www.artstation.com/artwork/ybgL53

На первый взгляд может показаться, что проблема в материале. Возможно, какие-то заливочные слои в Substance Painter так влияют на отражение. А может быть, это такая HDRI карта?


Нет. Проблема в карте нормалей.
Самый надежный способ избавиться от неё — подчистить в фотошопе :)


Заходим в фотошоп, загружаем нашу карту нормалей и кладем поверх UV сетку. В гифке показано, как сохранить UV wireframe, используя 3D’s Max.

looking_for_artefacts.gif

Теперь выбираем пипетку и ищем пиксельные перепады на нужном шелле.

гифка_юв_пнг.gif

Да, перепад может быть буквально на 1-2 значения по RGB. Без пипетки его так просто не найти. Если наши опасения подтверждаются — закрашиваем или заливаем весь шелл однотонным цветом. Значения цвета по RGB — R-127; G-127; B-255.

Готово, ты великолепен!

image2.png

image1.png

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


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

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

image9.png

image3.png

Пример условный.

Соответственно, для решения проблемы нужно повысить битность экспортируемых карт. Делается это в Export Settings:

image8.png

А если хочешь всегда экспортировать карту с конкретной битностью/форматом — можно сохранить эти настройки в Output Templates:

image7.png

Но помни о том, что это работает лишь в том случае, если ты запекал карту нормалей изначально с высокой битностью.

Чуть больше и подробнее про битность текстур можешь почитать в нашем переводе статьи с polycount.

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

Stay tuned!

Хочешь получить бесплатный урок курса «3D PRO. Game Environment Pipelines»? Оставляй заявку: https://render.ru/ru/course/19296

699 0 850 5
2
2020-10-24
А не происходит ли это от того, что карты бейкаются на нетриангулированный меш, и косяки как раз из-за разной пакетной триангуляции? Если да – то самый простой и правильный способ исправлять такое – бейкать все карты на триангулированную модель и использовать ее же в конечном пакете.
2023-01-20
Как раз вчера весь вечер мучился и не мог понять, почему на стеклах какие-то странные кривые отражения получились. Оказалось, что карта нормалей имела в этих местах еле заметные полутона в виде полос. Догадался залить это все дело сплошным цветом в Фотошопе. А сегодня это же решение читаю у вас, значит все правильно сделал)
RENDER.RU