Всем привет! Меня зовут Андрей и я хочу поделиться с вами своим открытием: продвинутым методом шумоподавления в Blender, который я назвал - "TreeZod".
Как появился этот метод:
Пока я работал над своим проектом кресла «Ангела - Mercy» для челленджа «Эталон сидения», который проводил школа "Кайно", столкнулся с проблемой размытия текстур в некоторых местах. Естественно, первым делом я обратился к своему преподавателю и с его лёгкой подачи по этому вопросу был послан смотреть запись стрима по этой теме. Информация из стрима мне действительно помогла – я освежил ее в памяти и пришел к выводу, что нодовый деноизер лучше всего справляется с задачей. Но, все же, я получал не тот результат, который хотел. Тогда я начал экспериментировать с деноизером. Так совпало, что совсем недавно я изучил дополнительный курс по работе с Photoshop-ом, где мне приходилось долго и нудно работать с различными масками, отделяя нужные мне объекты от фона. Я начал вспоминать, как решал эту задачку и тут меня осенило: одним из способов отделения было создание маски, используя разные каналы RGB! Если стандартный нодовый деноизер убирает шум, используя цветное изображение, то почему бы не попробовать обработать в монохроме? В итоге, я разделил картинку с помощью нод на отдельные каналы, пропустил каждый канал через «Denoise», а затем собрал обратно в цветное изображение. И первый же тест на моём проекте с креслом показал отличный результат.
Настройка деноизера «TreeZod»: (Blender 3.0.1)
Так выглядит связка стандартного нодового динойзера (Blender 3.0.1):
Шаг 1: Подготовка к работе
— Подключаем Denoising Data;
— Проверяем, что все остальные деноизеры отключены (на вкладке «Рендер»);
— Открываем редактор Compositor и ставим галочку «Use Nodes».
Шаг 2: Разделение на монохром
— Разделяем изображение по RGB-каналам с помощью ноды Separate RGBA (находится в разделе Converter). Таких нод нам понадобится 3 шт;
— Подключаем соответствующие выходы из ноды Render Layers в Separate RGBA, как показано на схеме.
Шаг 3: Прогонка через «Шумодав»
— В разделе «Filter»: добавляем ноду Denoise для каждого RGB-канала;
— Подключаем каждый канал отдельно в свой Denoise, как показано на схеме ниже.
P.S. Альфа канал можно не подключать, т.к. нет смысла раскладывать его по каналам RGB — он монохромный. Хотя, я лично проводил тесты с подключённой альфой, но на результат это никак не повлияло.
Шаг 4: Финальная сборка
— Собираем все каналы обратно через ноду Combine RGBA.
Результаты моих тестов:
В тестах участвовали все известые мне методы шумоподавления, встроенные в сам Blender:
— “Default” – стандартная нодовая связка;
— “OptiX” – автоматический встроенный деноизер (albedo + normal);
— “OpenImageDenoise” - автоматический встроенный деноизер (тестировался в режиме accurate – albedo + normal);
— “TreeZod” – стандартная нодовая связка + моя доработка.
Сразу хочу отметить, что «TreeZod» улучшает работу существующего деноизера в местах, где не справляется стандартная нодовая связка, а не создает новый.
Лучше всего работа этого метода видна на рендерах большого разрешения, например 3840 x 2160.Для удобства я оценил результативность всех деноизеров количеством звёзд.
Пример 1.
Здесь работа нового метода лучше всего видна на подголовнике кресла. Это связано с использованием глубины резкости на камере, т.к. весь фокус направлен на спинку кресла.
Для того, чтобы лучше увидеть фактуру белого материала (зернистость по высоте), я отключил глубину резкости, приблизил камеру и понизил количество семплов до 64.
Следующие примеры из других проектов, которые изначально были заточены под движок Eevee.
Пример 2.
Здесь можно оценить качество картинки целиком.
Пример 3.
Рендер 64 семпла, без глубины резкости.
Пример 4.
Здесь работа деноизера лучше всего прослеживается на тыкве.
Другие примеры.
Еще примеры в полном разрешении можно скачать по ссылке: https://disk.yandex.ru/d/VzImnaCMkXufGg . В именах файлов указаны настройки и zoom.
Заключение.
Теперь я пользуюсь только этим методом, так как работает он лучше, чем уже имеющиеся деноизеры. И рад поделиться им с вами – тестируйте, пользуйтесь и творите.
Мне бы очень хотелось, чтобы разработчики Blender обратили внимание на данный метод и на его основе изобрели еще более качественный денойз-инструмент, поэтому не жалеем сил в распространении этой статьи. Спасибо!)
Всегда, пожалуйста ;) Для этого эта статья здесь и появилась!
На время рендера это никак не влияет, но влияет на постобработку, так как системе приходится три раза прогонять картинку через шумодав. Зато с этим методом можно добиться неплохого результат при меньшем количестве семплов, что существенно ускоряет рендер, даже с учётом постобработки.
в данном случае 30 сек. х 3 ;) потому что используется три ноды денойза
Хотя карман не давило бы, если можно было бы положить эту связку нод в какойнить ассет браузер.
Ну так этот метод и не панацея вовсе! Как я и писал он помогает справиться с шумом в тех местах, где стандартный деноизер не вывозит, а не создаёт вау-эффект. В некоторых случаях разницы практически не будет, всё зависит от конкретной сцены и материалов.
рад, что кому-то мой метод стал полезным!