За обновлениями можно следить в telegram-канале https://t.me/quasiart

Рендеринг анимации в LuxRender

Строго говоря, анимация — это не более чем последовательность статичных картинок. Таким образом, можно просто отрендерить картинки и расставить их в ряд.

Прежде всего, необходимо отрендерить множество изображений. Это наводит на мысль, что, раз рендеринг статичного изображения в LuxRender занимает 2 дня в разрешении 1920х1080, не займёт ли рендеринг одной секунды 1080р 24 кадра/сек почти 50 дней на настройках, используемых для статики? Не совсем. Когда для анимации используются физически точные рендеры, нужно кое-что помнить. Хоть и нужно сделать тысячи изображений, каждое из них будет показано лишь долю секунды. Поэтому можно «выкрасть» часть сэмплов.

Статичный рендер предназначен для того, чтобы его разглядывали. Будь то рендер нового здания для строительного плана, визуализация продукции в брошюре, фэнтези-иллюстрация для альбомной обложки или просто классная обоина со сценой кухни. Любой дефект может быть замечен, так что часто необходимо рендерить изображение с тысячями сэмплов на пиксель, чтобы быть уверенным, что весь шум исчезнет. Сэмплер LuxRender-а — metropolis — может помочь в этим, «направляя&raqu; рендер в свет, он помогает устранить артефакты меньшим количеством сэмплов.

Анимация же — это другой случай. Отдельные кадры полагается смешивать — это основная задача. Все цифровые камеры также дают некоторую зернистость, и никто не беспокоится по этому поводу, покуда она не ужасающе сильная. В сущности, если постараться, то можно отрендерить кадр анимации лишь с некоторой частью сэмплов необходимых для рендера статики. Пока шум остаётся равномерным, можно выйти из положения с довольно большим его количеством. Важно, чтобы шум был равномерным высокочастотным зерном. Низкочастотный шум от алгоритмов трассировки фотонов или «светлячки» — оба составляют проблемы, так что нужно позаботиться о том, чтобы избежать их.

LuxRender имеет собственные системы поочерёдного и сетевого рендеринга, которые могут быть использованы для управления кадрами анимации без использования дополнительного ПО. Разумеется, если вы предпочитаете, чтобы ваш экспортер и менеджер очерёдности контролировали рендер, большинство экспортёров для LuxRender также могут это делать. Изучите инструкцию к вашему экспортёру на предмет использования его для пакетных рендеров. Секция «управление кадрами и рендер-узлами» (managing frames and render nodes) предполагает, что используется встроенный функционал LuxRender.

Настройки рендера

Примечание: для продолжения рекомендуется ознакомиться с разделом «Настройки рендера в LuxRender»

Sampler

Metropolis sampler, вероятно, здесь вам не помощник. В большинстве случаев, пока он улучшает скорость конвергенции во время работы, он не распределяет сэмплы лучей равномерно по всему изображению. В результате получается неравномерный шум и группы «светлячков», если использовать малое количество сэмплов на пиксель (spp). В кадре анимации будет казаться, что «светлячки» вспыхивают, и неравномерная зернистость будет «плавать» по всему изображению. Оба случая отвлекают внимание, так что лучше использовать low discrepancy sampler.

Low discrepancy распределяет сэмплы на изображении по квази-случайному шаблону. В результате получается довольно равномерный шум. Стоит помнить, что low discrepancy требует, чтобы значение pixel samples (количество spp за один проход) было установлено как 2 в любой степени (2, 4, 8, 16 и т. д.) Также лучше всего сделать изображение за как можно большее количество проходов, чтобы удостовериться, что сэмплы распределены равномерно. Не нужно выставлять много spp для кадров анимации, чаще всего достаточно 100-200, особенно если вы используете exphotonmap.

HaltSPP и HaltTime

Эти два флажка можно использовать, чтобы рендер текущего кадра останавливался и переходил к следующему по истечении определённого времени или достижении количества сэмплов на пиксель. Обычно haltspp проще обеспечить равномерное качество для каждого кадра, но можно использовать и halttime, в зависимости от предпочтений. Если c lowdiscrepacy sampler вы используете haltspp, нужно установить его значение чуть ниже значения, использованного для pixelsamples. Это заставит завершить рендер, когда сэмплер завершит свой текущий проход. Иначе, он перейдёт к следующему проходу и постарается завершить его тоже.

Surface integrator

Стандартные рекомендации для bidirectional или exphotonmap здесь так же применимы. Exphotonmap значительно быстрее выдаёт бесшумные изображения, так что он может быть вам полезен для получения чистых кадров за разумное время. Однако он также может оставлять на заднем плане низкочастотный шум, который в анимации может быть довольно очевидным и отвлекать внимание.

Tonemapping

Для анимации лучше всего использовать Linear (линейный) тонмапер. Другие тонмаперы будут автоматически подстраиваться под яркость каждого кадра. Это что-то наподобие автоэкспозиции, которая пересчитывается для каждого кадра видео. В результате анимация будет мерцать. У Linear фиксированная экспозиция, что решает эту проблему.

Outlier Rejection

Этот параметр в LuxRender может помочь избежать возникновения случайных «светлячков» путём предотвращения их от попадания на плёнку. Для анимации нужно включить его с достаточно большой силой (5-10).

Fixed seeds

Можно уменьшить видимый шум, сделав шаблон шума между кадрами. Это происходит когда вы отключаете значения случайной зернистости у потоков рендеринга LuxRender. Чтобы включить этот режим, запустите LuxRender c ключом -fixedseed. В вашем экспортёре может быть опция для вызова Lux c этим флагом.

Управление кадрами и узлами рендера

Использование LuxRender GUI

Интерфейс LuxRender включает в себя возможность поочерёдного рендеринга. Можно добавить все кадры вашей анимации в очередь, и LuxRender пройдётся по ним по очереди. Вы можете добавить сетевые узлы, и они будут использованы для помощи с каждым кадром. Все узлы будут работать вместе над одним и тем же кадром, поскольку LuxRender пока что не поддерживает распределение элементов очереди. Когда каждый кадр достигает точки останова, LuxRender собирает сэмплы со всех сетевых узлов и записывает результат на диск, затем переходит к следующему кадру.

Если вы используете сэмплер low discrepancy и пытаетесь получить результат за несколько больших проходов, как упоминалось ранее, это может быть сложным при использовании машин различающейся производительности. Если все узлы приблизительно одинаковы, вы можете просто заставить их сделать по одному большому проходу каждый и объединить результаты.

Но что, если, например, ваша основная машина может сделать 2 прохода за раз, а ведомые узлы по одному? В этом случае можно установить haltspp на остановку после двух проходов и окончательный проход от сетевого узла будет добавлен в конце, давая 3 прохода полноценных сэмплов.

Использование LuxConsole

На не-Windows системах возможно передать LuxConsole множество файлов, указав, что нужно отрендерить файл.lxs или похожие. Вы можете использовать это для достижения функционала, как и с очередями в графическом интерфейсе. LuxConsole также будет работать с сетевыми узлами, которые можно указать командой -u (useserver).

Допустим, у вас есть 4 узла с IP-адресами 192.168.0.105, 192.168.0.106, 192.168.0.107, и 192.168.0.108. Вы загрузили все файлы сцены для анимации в каталог /Shared/render_out и хотите, чтобы машина с адресом 192.168.0.105 была ведущей. Вы можете запустить ведомые узлы на других машинах, затем по ssh зайти на 192.168.0.105 и выполнить команду: luxconsole /Shared/render_out/*.lxs -u 192.168.0.106 192.168.0.107 192.168.0.108