понедельник, 4 ноября 2013 г.

Решаем проблему мерцания при рендеринге анимации в VRay


Рендеринг анимации в VRay с использованием непрямого освещения (GI) на основе кэширования сэмплов, как правило, приводит к появлению мерцания на видео. Происходит это из-за того, что сэмплы каждого отрендеренного кадра рассчитываются по-разному, что влечет за собой различие в значениях освещенности каждого последующего кадра.


 Обычно, чтобы обойти этот глюк, анимацию пытаются рендерить путём использования одних и тех же данных выборки сэмплов в каждом кадре. Для этого понадобилось бы заранее рассчитать GI, обычно с использованием двух наиболее распространенных в народе механизмов — Irradiance map (Карта освещённости) и Light cache (Световой кэш), выбрав для ирмапы режим Multiframe Incremental (Расчет карты освещённости текущего кадра на основе предыдущего), а для лайт кэша — режим Fly-through

(Пролёт камеры). Связка Irradiance map + Light cache вполне оправдывает себя, если в анимации нет движущихся объектов. Поэтому рекомендуется использовать эту сладкую парочку только для создания анимации пролёта камеры по сцене.


Представьте, что вы рассчитали сэмплы для рендеринга объекта, имеющего точки расположения в пространстве X, Y и Z. Но когда впоследствии он переместится в новые координаты X, Y, Z, то для корректной визуализации объекта на новом месте просто не окажется нужных сэмплов. По этой причине на рендере будут заметны артефакты и пятна. Метод применения Irradiance map и Light cache достаточно быстр по сравнению с рендерингом на основе механизма Brute Force(Грубая сила), при котором сэмплы для каждой затенённой точки рассчитываются отдельно и независимо от других точек. Хотя Brute Force работает очень аккуратно, уберегая рендер от каких-либо мерцаний, всё же он слишком медленно считает картинку.

Одним из нововведений во VRay год стали карты освещённости Irradiance map с временной интерполяцией. Основная их функция сводится к сокращению величины мерцания, которое случается при использовании метода расчёта GI картами освещённости. Работает это всё путём смешивания некоего диапазона сэмплов из нескольких ирмап, что позволяет добиться плавных переходов между кадрами. Диапазон определяется с помощью параметра Interpolation frames (Кол-во кадров для интерполяции), о котором мы поговорим ниже.

Параметр Use camera path (Использовать путь камеры)
В то время как карты освещённости с временной интерполяцией решают большинство проблем с мерцанием от камеры. Причина этого в том, что Irradiance map рассчитывается путём трассировки лучей из камеры, а так как камера движется, то лучи, соответственно, в каждом кадре будут рассчитываться по-разному. Параметр Use camera path вносит изменение в способ выстреливания лучей из камеры. Вместо их выстреливания с текущего положения камеры в каждом кадре, со включенным параметром лучи будут выстрелены для всего пути следования камеры, что позволит использовать одни и те же лучи в каждом кадре.

Режимы Animation (prepass) и Animation (rendering)
Данная методика состоит из двух этапов. На первом этапе в режиме Animation (prepass) VRay отдельно для каждого кадра высчитывает карту освещённости (Irradiance map) с запасом в несколько кадров до фактического начала анимации и после её окончания. Второй этап — это уже рендеринг конечной анимации в режиме Animation (rendering). При этом надобности в использовании механизма для расчёта Secondary GI не будет, поскольку он уже будет являться частью Irradiance map после прохождения первого этапа.

Схема настройки режима Animation (prepass)
Irradiance map
Отметьте флажком параметр Use camera path и установите Mode на Animation (prepass). Щёлкните кнопку Save(Сохранить), укажите место для сохранения и название перечня создаваемых ирмап. Проверьте также, чтобы был установлен флажок Auto save (Автосохранение).



При выборе места для сохранения карт освещённости с использованием проводника Windows, советую потом проверить, сохранилась ли в этой папке начальная карта Irradiance map. Это важно, потому как крайне редко, но бывает, что Windows или Макс с этим тупит.



Light cache
В свитке Light cache поставьте галочку в аналогичном параметре Use camera path и выберите Single frame (Одиночный кадр) в качестве режима в списке Mode (вообще, по умолчанию это и так стоит, но мало ли). Как вариант, можно заранее наперёд рассчитать лайт кэш и использовать его из файла. При этом можно даже сэкономить немного времени на рендеринге.


ВАЖНЫЙ МОМЕНТ! Когда завершится этап расчёта препасса, нужно будет указать величину смешивания между картами освещённости. Поэтому прежде, чем рендерить финальную анимацию, от вас потребуется решить, по скольким ирмапам системе нужно производить смешивание. Это влияет на продолжительность анимации, добавляя к ней несколько новых кадров. Например, если величина смешивания равна 2, то это будет означать, что данные об освещённости для текущего кадра получены путём смешивания данных от двух предыдущих кадров, текущего и двух последующих за ним. В этом случае, чтобы отрендерить кадр 5, VRay смешает кадры 3, 4, 5, 6, 7. Для кадра 6 будут смешаны кадры 4, 5, 6, 7, 8. Ну, вы поняли.

Статья взята

Комментариев нет:

Отправить комментарий

Контакты: gmail mnexuss@gmail.com | ICQ 201882385 | Add me to Skype