Улучшение работы деноизера в Blender. Метод "TreeZod"

Всем привет! Меня зовут Андрей и я хочу поделиться с вами своим открытием: продвинутым методом шумоподавления в Blender, который я назвал - "TreeZod".

Denoiser_TreeZod_1.0.png

Как появился этот метод:

Пока я работал над своим проектом кресла «Ангела - Mercy» для челленджа «Эталон сидения», который проводил школа "Кайно", столкнулся с проблемой размытия текстур в некоторых местах. Естественно, первым делом я обратился к своему преподавателю и с его лёгкой подачи по этому вопросу был послан смотреть запись стрима по этой теме. Информация из стрима мне действительно помогла – я освежил ее в памяти и пришел к выводу, что нодовый деноизер лучше всего справляется с задачей. Но, все же, я получал не тот результат, который хотел. Тогда я начал экспериментировать с деноизером. Так совпало, что совсем недавно я изучил дополнительный курс по работе с Photoshop-ом, где мне приходилось долго и нудно работать с различными масками, отделяя нужные мне объекты от фона. Я начал вспоминать, как решал эту задачку и тут меня осенило: одним из способов отделения было создание маски, используя разные каналы RGB! Если стандартный нодовый деноизер убирает шум, используя цветное изображение, то почему бы не попробовать обработать в монохроме? В итоге, я разделил картинку с помощью нод на отдельные каналы, пропустил каждый канал через «Denoise», а затем собрал обратно в цветное изображение. И первый же тест на моём проекте с креслом показал отличный результат.

Настройка деноизера «TreeZod»: (Blender 3.0.1)
Так выглядит связка стандартного нодового динойзера (Blender 3.0.1):

Подключение стандартной связки деноизера.PNG

Шаг 1: Подготовка к работе

— Подключаем Denoising Data;
— Проверяем, что все остальные деноизеры отключены (на вкладке «Рендер»);
— Открываем редактор Compositor и ставим галочку «Use Nodes».


Data.PNG

Шаг 2: Разделение на монохром

— Разделяем изображение по RGB-каналам с помощью ноды Separate RGBA (находится в разделе Converter). Таких нод нам понадобится 3 шт;
— Подключаем соответствующие выходы из ноды Render Layers в Separate RGBA, как показано на схеме.

Step2.png

Шаг 3: Прогонка через «Шумодав»

— В разделе «Filter»: добавляем ноду Denoise для каждого RGB-канала;
— Подключаем каждый канал отдельно в свой Denoise, как показано на схеме ниже.

Step3.png

P.S. Альфа канал можно не подключать, т.к. нет смысла раскладывать его по каналам RGB — он монохромный. Хотя, я лично проводил тесты с подключённой альфой, но на результат это никак не повлияло.

Шаг 4: Финальная сборка

— Собираем все каналы обратно через ноду Combine RGBA.

Step4.png

Результаты моих тестов:

В тестах участвовали все известые мне методы шумоподавления, встроенные в сам Blender:
— “Default” – стандартная нодовая связка;
— “OptiX” – автоматический встроенный деноизер (albedo + normal);
— “OpenImageDenoise” - автоматический встроенный деноизер (тестировался в режиме accurate – albedo + normal);
— “TreeZod” – стандартная нодовая связка + моя доработка.

Сразу хочу отметить, что «TreeZod» улучшает работу существующего деноизера в местах, где не справляется стандартная нодовая связка, а не создает новый.
Лучше всего работа этого метода видна на рендерах большого разрешения, например 3840 x 2160.Для удобства я оценил результативность всех деноизеров количеством звёзд.


Пример 1.
Здесь работа нового метода лучше всего видна на подголовнике кресла. Это связано с использованием глубины резкости на камере, т.к. весь фокус направлен на спинку кресла.

1_Примеры_128+stars.png


Для того, чтобы лучше увидеть фактуру белого материала (зернистость по высоте), я отключил глубину резкости, приблизил камеру и понизил количество семплов до 64.
2_Примеры_64+stars.png

Следующие примеры из других проектов, которые изначально были заточены под движок Eevee.

Пример 2.
Здесь можно оценить качество картинки целиком.

4_Примеры_128_room.png


Пример 3.
Рендер 64 семпла, без глубины резкости.

3_Пример_64_default+TreeZod+2.PNG

Пример 4.
Здесь работа деноизера лучше всего прослеживается на тыкве.

Пример_room_128.png

Другие примеры.
Еще примеры в полном разрешении можно скачать по ссылке: https://disk.yandex.ru/d/VzImnaCMkXufGg . В именах файлов указаны настройки и zoom.

Заключение.

Теперь я пользуюсь только этим методом, так как работает он лучше, чем уже имеющиеся деноизеры. И рад поделиться им с вами – тестируйте, пользуйтесь и творите.
Мне бы очень хотелось, чтобы разработчики Blender обратили внимание на данный метод и на его основе изобрели еще более качественный денойз-инструмент, поэтому не жалеем сил в распространении этой статьи. Спасибо!)

593 0 850 8
12
2022-03-29
Выглядит резонно, надо попробовать
2022-03-29
Работает! Спасибо автору!
2022-03-29
Производительность ожидаемо ниже в 3 раза?
2022-03-30
Александр Пронин (MVDGUN)Выглядит резонно, надо попробовать
Обязательно попробуйте, нужна статистика! )
2022-03-30
daniil luskatov (danivalus)Работает! Спасибо автору!

Всегда, пожалуйста ;) Для этого эта статья здесь и появилась!
2022-03-30
Иван БалакиревПроизводительность ожидаемо ниже в 3 раза?

На время рендера это никак не влияет, но влияет на постобработку, так как системе приходится три раза прогонять картинку через шумодав. Зато с этим методом можно добиться неплохого результат при меньшем количестве семплов, что существенно ускоряет рендер, даже с учётом постобработки.
2022-03-30
Иван, дак денойз же в конце рендера происходит и длится не дольше 30 секунд
2022-03-30
Александр Пронин (MVDGUN)Иван, дак денойз же в конце рендера происходит и длится не дольше 30 секунд

в данном случае 30 сек. х 3 ;) потому что используется три ноды денойза
2022-03-31
фиг знает. как по мне игра не стоит свеч (медицинских). потестировал на собачке с демофайла сплешскрин2.8 и там практический одно и тож. че сидеть с лупой разглядывать эти денойзеры когда можно чуть больше добавить сэмплов, всяко они быстрей просчитаются чем эти 3 ноды =) по крайней мере в моем случае с ryzen3600+3090. https://cloud.mail.ru/public/UUY8/3d1ydjcfw
Хотя карман не давило бы, если можно было бы положить эту связку нод в какойнить ассет браузер.
2022-03-31
Vovaфиг знает. как по мне игра не стоит свеч (медицинских). потестировал на собачке с демофайла сплешскрин2.8 и там практический одно и тож. че сидеть с лупой разглядывать эти денойзеры когда можно чуть больше добавить сэмплов, всяко они быстрей просчитаются чем эти 3 ноды =) по крайней мере в моем случае с ryzen3600+3090. https://cloud.mail.ru/public/UUY8/3d1ydjcfw
Хотя карман не давило бы, если можно было бы положить эту связку нод в какойнить ассет браузер.

Ну так этот метод и не панацея вовсе! Как я и писал он помогает справиться с шумом в тех местах, где стандартный деноизер не вывозит, а не создаёт вау-эффект. В некоторых случаях разницы практически не будет, всё зависит от конкретной сцены и материалов.
2022-04-01
Ещё один полезный способ, почему нет? Мне сгодится. Спасибо.
2022-04-05
Александр, я имел в виду, скорость по сравнению с использование одной ноды или пресета рендеринга
RENDER.RU