Render.ru
Поддержать
14Записей
89Следят
235 KЗаходов
Борис ArtCraft

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

Блог компании Making of Урок

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

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

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

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
Комментарии:2
по поступлению
37
0
А не происходит ли это от того, что карты бейкаются на нетриангулированный меш, и косяки как раз из-за разной пакетной триангуляции? Если да – то самый простой и правильный способ исправлять такое – бейкать все карты на триангулированную модель и использовать ее же в конечном пакете.
2
0
Андрей Фомин
20.01.2023 10:00
Как раз вчера весь вечер мучился и не мог понять, почему на стеклах какие-то странные кривые отражения получились. Оказалось, что карта нормалей имела в этих местах еле заметные полутона в виде полос. Догадался залить это все дело сплошным цветом в Фотошопе. А сегодня это же решение читаю у вас, значит все правильно сделал)