Это вторая часть большой статьи о рендеринге: чем рендерить.
1.1. Глобальное освещение (GI)
В области нефотореалистичного рендера, особенно в Японии, была проделана большая работа, но умами владеет рендер фотореалистичный. То есть — глобальное освещение, рассеяние, цветные рефлексы (color bleeding), пробники света с места съёмок, а также шейдеры и источники света, все более и более близкие к реальному миру.
Наиболее распространенные методы расчета глобального освещения — это распределенная трассировка лучей (distribution ray tracing), трассировка пути (path tracing) и точечное глобальное освещение (point-based GI). У каждого метода есть свои преимущества и ограничения, как в смысле технической реализации, так и в смысле сложности настройки с точки зрения художника по свету или технического директора.
Первым полнометражным фильмом, в котором было использовано глобальное освещение, был Шрек 2 (как упомянуто в недавней статье
«Университет монстров», отрендерено в RenderMan от Pixar.
Как указано в статье, использование 2D текстур требовало, чтоб разные поверхности в сцене были параметризованы (описывались формулами). «Это похоже на метод карт освещенности (Irradiance Map/Atlas, сокращенно - ирмапы), но там используются трехмерные текстуры («brick maps»), поэтому поверхности не нужно параметризовать. Оба метода используют два прохода: один для вычисления прямого освещения и его записи (в виде 2D или 3D текстурных карт), и еще один — для финального рендеринга.» Карты освещенности запекаются, а не просчитываются в каждом кадре, подчеркивает Сэм Эсседиен из Clarisse iFX. «Мерцание (flicker) низкочастотного шума при использовании ирмап — это самое неприятное.» Поэтому, лучше рендерить ирмапу за один проход для всей анимации и сохранить её. Так получается в целом более быстрый и более стабильный по времени рендеринг.
Трассировка пути (path tracing) - это разновидность трассировки лучей (ray tracing) и является физически корректным «честным» (unbiased - правильно произносить АнбАяст, но в нашей речи укоренилось произношение анбиас) методом просчёта глобального освещения brute-force (правильно читать брут-фос, но обычно говорят брутфорс). Brute-force впервые использовался в фильме Monster House от Sony Pictures Animation, где в качестве рендерера использовался Arnold.
Преимущества трассировки пути (path tracing) в том, что для нее не требуются такие сложные шейдеры, как для приближенных (biased - бАяст) методов или для подхода с «облаком точек». Также обеспечивается быстрая обратная связь при интерактивной настройке освещения.
Общая проблема для всех трассировщиков пути — шум. В среднем, для уменьшения шума вдвое, требуется увеличить количество лучей в четыре раза. В математическом смысле честный трассировщик стремится к единственному правильному решению при увеличении количества лучей. Другими словами, если лучей достаточно много, нам не нужно делать выборку и усреднять освещение — флуктуации (шум) стремятся к нулю, а решение стремится к корректному. Конечно, на практике невозможно просчитать бесконечное или даже просто огромное количество лучей, особенно учитывая нелинейную зависимость шума от количества лучей. Поэтому у нас есть только три выхода:
- использовать другое изящное решение, вроде «brick maps» плюс, скажем, построчный (scanline) рендер либо частичную трассировку лучей;
- написать действительно хитроумный код, который бы рендерил очень быстро, какие-нибудь «быстрые умные лучи»;
- направлять большинство лучей туда, где они нужны больше всего, то есть научиться лучше выбирать направление для наших быстрых умных лучей.
В основе трассировки лучей лежит идея выборки, в которой случайные лучи (samples) генерируются в соответствии с функцией распределения вероятности. Но для получения глобального освещения надо думать также и о том, что есть еще лучи, зависящие от материалов (шейдер/BRDF и т. д.), нужно делать выборку и по ним, ведь предметы тоже работают источниками света и вносят свой вклад в освещение. Из опыта фотостудий мы знаем о настройке света с помощью отражателей (или софтбоксов), которые используются для красивого освещения каждого объекта сцены отраженным светом. Самый большой пример такого способа — световой купол (light dome), или то, что мы знаем как «освещение на основе изображения» (image based lighting - IBL). В этом случае на купол или сферу натянуто изображение, как правило HDR. Любая часть купола (или сферы) освещает каждый объект внутри него, поэтому, повторим, тщательность выборки для такого огромного источника света очень важна. В конце концов, мы же пытаемся воспроизвести реальное освещение во всей его сложности, когда каждая часть влияет на каждую.
Свет внутри сферы должен распространяться и отражаться корректно. Т.е. при отражении света от какого-то объекта, интенсивность отраженного света не может быть больше, чем интенсивность света, изначально испущенного источником, а при удалении источника на какое-то расстояние интенсивность будет не просто уменьшаться, а уменьшаться в квадрате. В реальности все происходит именно так. Когда говорится о «физически правдоподобных материалах и освещении», имеется в виду именно идея корректного освещения и корректных шейдеров. (В этой статье мы будем пользоваться терминами — «физическое освещение» и «физические материалы», но, конечно, почти всегда речь идет лишь о достаточно хорошем приближении/упрощении).
Обязаны ли мы использовать трассировку, физические источники света и физические материалы? Вовсе нет!
Миллионы кадров анимации и визуальных эффектов произведены без всего этого. Но ситуация такова, что пусть не везде, но в мире VFX и анимации сегодня доминирует тенденция к использованию физически корректных методов.
*Более того, чтобы достичь желаемого вида, совсем не обязательно всё делать честно, более того - это даже противопоказано. Если где-то можно сжульничать и упростить сцену - так и нужно делать. Если где-то можно не симулировать одежду, а анимировать её костями или морфами - так и делайте. Если где-то волосы можно нарисовать на текстуре, вместо использования реальных волос - так и делайте. [ * примечание автора блога]
Мы поговорим также и о решениях, не основанных на трассировке лучей, их достаточно много. Но на сегодня ситуация такова, что в центре внимания — поиск именно вариантов рейтрейсинга, которые проще в настройке и не требуют космических бюджетов и объемов памяти.
G.I. Joe: Бросок кобры-2. Отрендерено в V-Ray на ILM.
Требования к памяти — один из самых больших недостатков рейтрейсинга. Но вот исторический факт: 25 лет назад Renderman победил ограничения, накладываемые объемом оперативной памяти, получив возможность рендерить что угодно с какой угодно сложностью. И сегодня он, все так же, содержит рендерер REYES scan line и ray hider (отсекатель лучей). RenderMan замечателен не только успешной историей, но и всеобщим признанием его научных основ с возможностью написать собственный рендерер на его основе. Этот подход хорош сегодня, и будет так же хорош в дальнейшем.
Ниже мы немного остановимся на истории, но сегодня, когда есть Arnold, V-Ray, Maxwell, более новые программы вроде облачного Lagoa и GPU-ориентированного Octane, RenderMan является продуктом, который старается получать изображения трассировкой лучей еще аккуратней и еще быстрей в еще более конкурентной среде.
Maxwell рендер с подповерхностным рассеиванием SSS.
Насколько конкурентной? Со времени первого выпуска
«рендеринг теперь — это что-то вроде религии»
Подпишитесь на обновление блога (вот 3 причины для этого).
Читайте продолжение в статье Облако точек для глобального освещения (GI).
Спасибо Андрею Пшеничному за перевод!
Продолжение будет.
Вам понравилась статья? Хотите отблагодарить автора? Расскажите о ней друзьям.
Или подпишитесь на обновление блога по E-Mail.
Извините, в данный момент комметарии закрыты.