Discovered (анимация)
Сказ о том, как я рендерил "тяжелый" ролик в C4D + Redshift на старухе GeForce GTX 970 с помощью нейронок.
Когда я только начинал изучать C4D, то запилил вот такую вот сцену.
Изначально задумывал её, как анимацию, но увы, моя старушка GTX 970 решила иначе - 9 минут рендера на один кадр. При разрешении 1920х1080, 30FPS, получалось 45 часов рендера на 10 секунд видео. И вот спустя почти пол года я решил таки вделать изначально задуманное, прибегнув к некоторым уловкам.
ОПТИМИЗАЦИЯ СЦЕНЫ
Первое, что я сделал - оптимизировал сцену. Удалил нахрен все текстуры со сцены, заменив их простыми материалами (всё равно разницы почти не видно). Архитектуру локации запилил с помощью матрицы - по сути это несколько прямоугольников, клонированных десятки раз. Дальше поиграл с настройками рендера - снизил качество всего, что не било сильно по общей картинке (упор сделал на семплы тумана и отражений). В настройках GI заменил Brute Force + Irradiance Point Cloud на Irradiance Cach + IPC - разницу в итоговом изображении можно найти только под лупой, а время рендера сократилось довольно заметно. Всё это сократило время рендера с 9 до 4 минут, аж в два раза!
И финальный штрих - я тупо снизил разрешение сцены с 1080p до 720p, взамен добавив каустику на сферу, чтобы получить "солнечные зайчики" на стенах локации.
Итог: время рендера снизилось с 9 минут до 2:15 - быстрее почти в 4 раза! Итоговый ролик должен отрендериться за 11,5 часов. Что всё ещё слишком много...
Получилось как-то так в итоге
ИНТЕРПОЛЯЦИЯ КАДРОВ
И тут на помощь пришла программа Flowframes - нейронка с дружелюбным интерфейсом с помощью которой можно увеличить частоту кадров в (почти) любом видео. Ранее я баловался с несколькими подобными инструментами, но Flowframes оказалась самой удобной, эффективной и оптимизированной (некоторые другие либо шакалалили видеоряд, либо крашились из-за нехватки видео памяти на GTX 970).
Я просто ускорил всю анимацию в сцене в два раза, сократив общую длительность с 10 до 5 секунд и поставил перед сном рендериться секвенцию. Спустя 6 часов у меня на руках было 150 готовых PNG-кадров, с пылу с жару.
Далее я загрузил все изображения в FlowFrames и интерполировал свои 150 кадров (30фпс) до 300 кадров (якобы 60 фпс). Но я не планировал делать видео в 60 фпс, а вместо этого просто замедлил вы два раза секвенцию, получив в итоге те самые 10 секунд, задуманные изначально.
Итог: на интерполяцию ушло примерно 10 минут, включая несколько неудачных "дублей" из-за некорректных настроек.
Результат же получился вполне хороший, хоть местами и получались вот такие артефакты. Но общее кол-во таких вот кадров составляет не больше 5%, и в динамике их почти невозможно рассмотреть, если не знать где искать.
АПСКЕЙЛ С 720р ДО 1440р
Это всё, конечно, было круто, но оставалась последняя проблема - шакальное качество картинки из-за низкого разрешения. И тут на помощь снова пришли нейронки. И решил воспользоваться Topaz Gigapixel AI, потому что во-первых, простой интерфейс без заморочек, во-вторых вполне приемлемый результат и быстрая работа, а в-третьих было много сидов ;-). Кстати, наверняка есть более продвинутые инструменты без лишних заморочек. Если знаете такие - напишите в комментариях, я обязательно протестирую, потому что Gigapixel всё же частенько выдает мыльную дичь.
Во избежание появления мыла, я обработал все кадры в Фотошопе (залил кадры как секвеенцию, сделал смарт-объектом, чтобы эффекты с первого кадра автоматом легли на все остальные), чтобы они были более контрастные. Затем закинул все 300 кадров в софтину и, подобрав, оптимальные настройки, я запустил процесс апскейла и пошел заниматься домашними делами.
В конце всё по стандартной схеме - запустил After Effects, загрузил изображения единой секвенцией в 30 ФПС , наложил немного эффектов (частицы вокруг сферы, цветокоррекция, музыка) и отрендерил.
Итог: через 1,5 часа я получил готовое видео в 2560х1440 вместо 1280х720 пикселей.
Один и тот же кадр ДО и ПОСЛЕ
ВЫВОДЫ:
Тупо 7 часов 40 минут на всё против изначальных 45 часов.
Экономия времени составила ~600% (!!!)
Да, я понимаю, что без всех этих уловок видео получилось бы "чище" и качественнее, но для владельцев такого древнего железа, как у меня использование нейронок - отличный выход. Ведь лучше потратить 8 часов и получить приемлемый результат, чем насиловать домашний ПК двое суток, не так ли? Думаю, этот опыт может быть полезным и для владельцев топового железа - можно делать ролики в 4К и 60ФПС, тратя гораздо меньше времени.
ОТВЕТЫ НА ВОПРОСЫ, КОТОРЫЕ НИКТО НЕ ЗАДАВАЛ
В: Зачем всё это, если можно использовать UE 4/ UE5 / Evee / Urender и т.д?
О: Во-первых UE4 и другие реалтайм-движки всё же ограничены, добиться в них красивой картинки сложнее в разы. Сэкономив время на рендере, я бы потратил гораздо больше на создание "фейковых" эффектов, таких как объемный туман, каустика и т.д. и не факт, что в итоге смог бы добиться нужного результата. Теоретически UE5 мог бы выдать схожую картинку без танцев с бубном, но он у меня тормозит так, что работать невозможно. В-третьих, я хочу изучать не другие движки и редакторы, а именно C4D и Redshift.
В: А не быстрее было бы сперва апскейлить 150 изображений, а потом интерполировать их до 300?
О: Быстрее! Но я заметил, что Flowframes лучше скармливать "сырые" материалы для интерполяции, потому что он становится слегка непредсказуемым при работе с отредактированными изображениями, а особенно если они после апскейла.
В: Почему всё зернистое?
О: Потому что тут цель была - получить приемлемый результат за ночь рендера на старухе GTX 970. Результат без зерна пришлось бы рендерить на 4-5 часов дольше.
В: Будет ли это работать в динамичных сценах?
О: К сожалению, не факт. Когда происходят резкие движения в кадре или камера сильно трясется, то Flowframe тупит и пытается "рисовать" кадры, исходя из своей машинной логики, что приводит в странным и стремным результам. Возможно есть другие нейронки, которые лучше справляются с динамикой, но я о них не знаю.
В: Стоило ли тратить столько времени и сил на какую-то унылую 10-секндную сценку?
О: Стоило.
ССЫЛКИ
Мои страницы:
Всем спасибо за внимание, с вас 3 лайка.
тебе в гос закупках работать надо.
Чому?
У вас немного некорректно подсчитано сэкономленное время в процентах. Оно составляет 83%, а не 600% (ты не можешь сэкономить больше, чем у тебя есть). А в целом подход интересный
Блин, всегда с процентами тупил
Экономия времени составила ~600% (!!!)
А сколько времени заняли все эти работы по перегонке видео в png, скармливании их проге, потом манипуляциям с нейросетями.
Не проще ли было просто оставить рендериться на двое суток и заниматься иными делами?
Я же написал 7 часов 40 минут.
Это весь процесс. Ну может час ушёл на пробы всякие, всё таки я наощупь двигался в первый раз.
Если ты конкретно про сам процесс, то там от силы час времени.
К тому же я работаю за этим же компом в дневное время) Рендер затянулся бы на неделю
Молодец приятель! В первую очередь это опыт, опыт важнее всего.