Цвет рендеринга нормалей искажается?

Sep 03 2020

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

Почему мое изображение отличается, если это буквально рендер одного и того же? Я знаю, что управление цветом искажает рендеринг. Я пробовал рендеринг с различными устройствами отображения, преобразованиями представления, как .png, так и .exr, разными цветовыми пространствами на узле текстуры, отключением функции «Сохранить как рендеринг» и т. Д.

Насколько я понимаю, нахождение в Display Device: sRGB, стандартное преобразование вида, а затем установка узла текстуры на Linear или Non-Color Data должны работать, но это не так. Что еще может происходить?

Ответы

2 lemon Sep 05 2020 at 16:07

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

Если вы сохраните это в формате jpg или png, цвета будут закодированы как целые числа. Это приводит к некоторым округленным значениям, которые невозможно преобразовать в точные исходные нормальные значения.

Таким образом, вы можете сохранить этот визуализированный файл в формате OpenExr, чтобы сохранить значения с плавающей запятой:

(кодек может быть «none» или «zip freeless» для точности, если необходимо ... попробуйте кодеки в зависимости от того, что вы хотите, размер файла или точность).

Результат может быть таким (хотя и не идеальным):

Вместо этого с помощью png:

Кроме того, сохраните текстуру изображения как «нецветную» или «необработанную» и, как вы сказали в вопросе, установите «необработанные» и «нецветные» в части управления цветом.

Изменить: другая вещь, которая меняет рендеринг, - это сглаживание. Если вы используете Cycles, установите фильтр пикселей в поле в разделе фильма. Рендеринг с использованием текстуры изображения, спроецированной на окно, должен дать лучший результат.