Настройка и расчет освещения в brazil r/s

Часть 1. Обзор средств brazil


Введение

Если оставить в стороне чисто художественные критерии, успешность визуального воплощения трехмерной сцены определяется тремя основными факторами. Эти факторы - хорошее моделирование, интересные материалы и освещение. И если моделирование лежит вне компетенции программ рендеринга, то материалы и освещение являются их прямой обязанностью. В настоящее время существует целый ряд программ, специализирующихся на материалах и расчете освещения. Наиболее известны: mental ray, Vray, brazil r/s, finalrender, этот ряд постоянно расширяется. Среди современных программ рендеринга brazil занимает свое собственное достойное место. Brazil обладает достаточно гибкими и современными возможностями расчета освещения, хотя и не является самой быстрой программой расчета. Brazil имеет собственный механизм шейдеров материалов с универсальным интерфейсом. Этот механизм не так изощрен, как, например, у Renderman или mental ray, опирающихся не столько на библиотеку готовых шейдеров, сколько на программирование необходимых свойств. Однако свойств, заложенных в основные типы шейдеров brazil, достаточно для качественного воспроизведения свойств материалов самого широкого спектра. В масштабах промышленного производства это делает brazil выбором №1 для небольших и средних студий, обладающих возможностями сетевого рендеринга и не имеющих возможности/желания программировать собственные шейдеры. Впрочем, brazil имеет немало своих искренних приверженцев и среди энтузиастов-индивидуалов.

Предметом данной статьи является рассмотрение и предоставление всем интересующимся необходимой информации об основных возможностях и особенностях средств настройки освещения в brasil. При этом, хотя сами шейдеры здесь подробно не рассматриваются, их влияние на освещение также будет описано, где это будет необходимо.



Немного теории

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

Все три компоненты вычисляются независимо и затем комбинируются в один общий результат. Процесс начинается с испускания лучей от камеры (наблюдателя) через двумерную решетку пикселей, формирующих будущее изображение, в сцену. Для каждого их таких лучей рассчитывается первое пересечение с поверхностью того или иного объекта сцены. Для всех точек пересечения рассчитываются указанные выше компоненты освещенности. Общее число лучей, испускаемых от камеры, определяется настройками антиалиасинга.

Прямое освещение вычисляется испусканием дополнительных лучей из каждой точки пересечения в направлениях всех источников света трехмерной сцены. При этом определяется, находится ли точка в тени или освещена, вычисляется расстояние до источника света и угол между направлением на источник и нормалью точки пересечения поверхности с лучом камеры. Если в сцене имеются не только точечные, но и протяженные источники типа linear (линейные), area (источники света, обладающие площадью) или volume (объемные), в их направлении испускается не один луч, а группа лучей, для того чтобы определить степень освещенности точки как сумму освещенностей от различных частей источника света. Такой механизм позволяет вычислять "мягкие" или размытые границы между тенью и светом (penumbra). Наиболее широко используются на практике источники света типа area.

Расчет отраженного и преломленного света вблизи углов идеального преломления и отражения (зеркальные отражения) выполняется посредством рейтресинга (raytracing или трассировка лучей). Если поверхность объекта в той ее точке, в которую попадает луч из камеры, обладает свойствами зеркального отражения или прозрачностью, в направлении идеальных углов отражения и преломления или в обоих направлениях, если поверхность обладает двумя этими свойствами одновременно, строится еще по лучу. Новые лучи трассируются до следующего пересечения с объектом сцены, где процедура может повторяться, если новая точка пересечения также имеет свойства преломления/отражения. Трассировка лучей для одной и той же исходной точки продолжается до тех пор, пока не будет достигнута заданная глубина трассировки (количество преломлений луча, задаваемых в настройках программы рендеринга) и известна как глубина трассировки. Либо, пока взнос в освещение от очередного луча не станет меньше некоторой заданной величины. Освещенность точки от отражений и преломлений определяется как сумма освещенностей от всех построенных из нее лучей рейтресинга. Современная модификация этого алгоритма позволяет рассчитывать размытость отражений и преломлений. Достигается это за счет того, что из начальной точки испускается не один луч, а несколько в створе углов, близких к идеальному углу отражения или преломления. Освещенность точки рассчитывается усреднением по некоторому закону освещенностей от этих лучей. Поскольку, по мере удаления от точки, такие лучи все больше расходятся, усреднение будет давать все более размытый результат с увеличением расстояния или при прохождении через другие отражающие/преломляющие поверхности.

Расчет диффузных переотражений выполняется двумя способами или их сочетанием - методом Монте-Карло и/или методом фотонных карт.

Метод Монте-Карло учитывает весь падающий в данную точку многократно переотраженный свет, кроме прямого света и зеркальных отражений/преломлений. Для этого вокруг точки строится полусфера (сфера, если материал поверхности еще и прозрачен), через поверхность которой в случайных направлениях испускаются лучи, получившие название "сэмплы". Направления на источники света и углы зеркальных отражений/преломлений исключаются из набора сэмплов. Каждый сэмпл трассируется до пересечения с окружением. В каждой новой точке пересечения должна быть вычислена ее освещенность, поэтому процесс должен повториться - расчет прямого освещения, трассирование зеркальных углов, построение полусферы и новых сэмплов для расчета непрямого диффузного освещения. Легко понять, что процесс испускания сэмплов имеет лавинообразный характер. Например, если для сэмплирования видимой в камеру точки использовать 50 лучей, то каждый луч может дать до 50 новых точек, а из них, в свою очередь, снова испускаются 50 лучей, каждый из которых даст еще 50 точек и так далее. Если не ограничивать глубину переотражений, процесс расчета может быть очень долгим. Поэтому, на практике глубина переотражений ограничивается либо в настройках рендера указанием глубины трассировки вторичных отражений, либо минимальной величиной вклада, который может быть учтен. Кроме того, сэмплирование всех отскоков, исключая самый первый, выполняется менее точно - с меньшим числом лучей.

Суммирование возвращаемых сэмплами освещенностей с той или иной степенью точности позволяет оценить полную освещенность точки, видимой в камеру. Чем больше лучей испускается через сферу, тем точнее будет оценка. Классический метод Монте-Карло (М-К) требует, чтобы направления лучей выбирались совершенно случайным образом. На практике почти все программы рендеринга используют модифицированный метод М-К, так называемый квази Монте-Карло (QMC в английской аббревиатуре). Его основное отличие в том, что направления лучей выбираются не совсем случайно. Например, для определения направлений могут использоваться так называемые низкорасходящиеся последовательности, позволяющие выбирать направления лучей так, чтобы сумма возвращаемых освещенностей сходилась к некоторому значению. Также довольно широко используется importance sampling, согласно которому среди всех возможных направлений лучей выбираются только те, которые дают существенный вклад в расчет освещенности. Довольно часто используется и метод определения направлений сэмплов по направлениям фотонов, взятых из фотонной карты вблизи точки и различные методы интерполяции, позволяющие получить освещенность некоторых точек без вычислений, по известным освещенностям уже вычисленных точек. Главное назначение этих методов - ускорить расчет без ущерба для качества. Вычисление освещенности точки методом Монте-Карло является довольно медленным, хотя может быть очень точным.

Второй способ расчета вторичных диффузных переотражений - метод фотонных карт. В этом случае весь расчет начинается не с трассировки лучей из камеры, а испусканием лучей (фотонов) от источников света. С каждым лучом связывается порция энергии, величина которой определяется характеристиками источника света. Фотоны трассируются до пересечения с поверхностями на заданную глубину переотражений фотонов. Если поверхность, с которой сталкивается фотон, имеет ненулевые диффузные характеристики, событие о столкновении (координаты столкновения, энергия и направление фотона) записывается в базу данных, получившую название "фотонная карта". Фотонная карта нужна для расчета вторичной диффузной освещенности точки на этапе трассировки лучей от камеры. Осуществляется это следующим образом. Когда луч от камеры пересекается с поверхностью, то вместо построения сферы и испускания сэмплов по координатам пересечения поднимаются записи о столкновениях фотонов из карты. Определяется количество ближайших фотонов и по их энергиям оценивается освещенность точки. Какие из фотонов будут принимать участие в оценке освещенности точки, определяется радиусом сбора фотонов или количеством собираемых фотонов, которые задаются явным образом в настройках рендера.

Метод фотонных карт - очень быстрый способ расчета, обладающий, к тому же, физической корректностью. Но он имеет два очень существенных недостатка. Первый - непомерные по современным меркам требования к оперативной памяти. Для получения корректных результатов требуется испускать огромное число фотонов. На каждую запись в базе данных о столкновении фотона требуется приблизительно 30 байт. На практике максимальное количество фотонов ограничено объемом памяти, который может адресовать операционная система. Для Windows XP SP1 и Win2k этот предел составляет 2 гигабайта (вне зависимости от того, сколько оперативной памяти установлено в компьютере), для Windows XP SP2 этот предел немного выше и может составлять 3 гигабайта. Вторым недостатком фотонных карт является их дискретность - каждое столкновение характеризуется единственной трехмерной координатой и единственным значением энергии. Это приводит к трудностям в расчете освещенностей углов и стыков только фотонной картой и к размыванию светотени в результате усреднения энергий фотонов по радиусу сбора (иначе не достичь гладкости, рендер будет "пятнистым").

В последнее время предпринимаются попытки усовершенствовать метод фотонных карт. Например, почти удалось снять ограничение на количество излучаемых фотонов за счет изменения методики учета вклада энергий фотонов в освещенность точек. Речь идет о light map для Vray и о tone map для brazil, которые должны появиться в будущих версиях этих программ. Но вопрос с усреднением все еще остается открытым - в этом направлении не предпринимается никаких исследований, насколько мне известно.

Поэтому, на практике для расчета вторичных диффузных переотражений используется комбинация двух методов. А именно, для расчета освещенности от первого диффузного отражения используется метод квази Монте-Карло - в точке пересечения луча от камеры с поверхностью строится полусфера, через поверхность которой испускаются сэмплирующие лучи. Для каждого сэмпла в точке его пересечения с другой поверхностью для расчета диффузных переотражений используется фотонная карта, расчет прямого освещения и возможно - расчет зеркальных отражений и преломлений. Часто последней составляющей пренебрегают.

На этом с теорией все. Этого вполне достаточно для понимания работы основных настроек расчета освещенности brazil, к рассмотрению которых мы и переходим.

Обзор интерфейса brazil r/s

Brazil: General Options

Brazil имеет альтернативный стандартному "максовскому" VFB (Virtual Frame Buffer) - Brazil VFB. Самая первая закладка Brazil: General Options предлагает различные настройки, относящиеся в основном к Brazil VFB и консоли.



рис. 1 Настройка Braxil VFB и консоли

Использовать Brazil VFB удобно и полезно по двум причинам. Во-первых, в режиме "Select Buckets Mode" имеется возможность выбирать, какую часть изображения рендерить. В этом случае все изображение покрывается прямоугольной сеткой с размером ячейки, который выбирается в Bucketing Options>Size. Можно выбрать для рендера одну или несколько таких ячеек, кликая по ним мышкой, и когда выбор завершен, правым кликом запустить рендер.


рис. 2 Brazil VFB в режиме Select Buckets Mode. Красным цветом помечены buckets, которые будут просчитываться при рендере. Остальная часть изображения из расчетов будет исключена.

Эта возможность очень удобна при настройке параметров рендеринга, поскольку рендер небольшой части изображения выполняется гораздо быстрее, чем рендер всего изображения целиком. Также возможно настроить Brazil VFB таким образом, чтобы предыдущий рендер оставался в нем, что делает еще более удобным сравнение результатов изменения параметров. Таким образом, мы имеем удобное средство для быстрого поиска оптимальных настроек финального рендера. Впрочем, существуют исключения. Если рендер выполняется только при помощи фотонной карты, выигрыш во времени будет минимальным, поскольку фотонная карта будет все равно создана в полном объеме в соответствии с заданными для нее настройками.

Поскольку рендер выполняется "buckets" - прямоугольными ячейками заданного размера, по времени рендера нескольких ячеек можно оценить приблизительное время расчета всего изображения, так как общее число buckets, составляющих изображение, известно. И, наконец, избирательный рендер по выбранным ячейкам может пригодиться, если нужно пересчитать только определенную область изображения, например, поменять материал на каком-то объекте. Впрочем, в этом случае следует соблюдать осторожность - сильное изменение параметров рендеринга может привести к тому, что ячейка будет заметно отличаться от окружения, что приведет к появлению "заплатки" на изображении.

Второе большое преимущество Brazil VFB - наличие средств регулирования экспозиции и цветокоррекции рендера. Ими можно воспользоваться напрямую, изменяя параметры уже сделанного рендера непосредственно в окне Brazil VFB. Этот способ ограничен по возможностям, поскольку значительное изменение параметров экспозиции приведет к искажению цвета рендера. Этот инструмент также очень полезен для экспериментирования с настройками экспозиции готового рендера, чтобы понять, в каком направлении следует двигаться, а затем найденные значения можно подставить для параметров группы Exposure Control свитка Brazil: Exposure/Color clamping. В последнем случае значения экспозиции будут учитываться при рендере, а не накладываться на уже готовый рендер, что обеспечит более качественный конечный результат.



рис. 3 Интерактивный контроль экспозиции Brazil VFB.

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

Gamma позволяет регулировать контрастность изображения, или разницу между светлыми и темными участками. Влияет на степень яркости или блеклости изображения. Увеличение значения Gamma ведет к уменьшению контраста изображения.

Black Point - при помощи этого параметра можно управлять тем, какие RGB значения цвета в рендере будут читаться черным цветом. Увеличение значения Black Point приводит к тому, что темные области изображения становятся еще темнее.

White Point - управляет тем, какие значения RGB будут считаться в рендере белым цветом. Уменьшение значения этого параметра приведет к осветлению ярких участков изображения.

Совместная работа Black Point и White Point приводит к изменению границ динамического диапазона отображения рендера. Так, увеличивая значения White Point можно уменьшать степень засвета ярких участков изображения, уменьшая Black Point можно проявить детали изображения в темных местах, что в целом означает расширение диапазона отображаемых в рендере оттенков цвета.

Еще один важный настроечный параметр этой закладки - Verbose level группы Console options. Консоль предназначена для обратной связи с программным ядром brazil и предоставляет своеобразный отчет о результатах внутренних операций программного "движка" brazil при рендере. Эта информация может оказаться очень полезной для диагностики самых разных проблем рендера и их отладки. Verbose level определяет степень подробности этой информации. Минимальный уровень - нулевой, он обеспечивает информацию самого общего характера. Максимальный уровень - четвертый, в этом случае консоль способна просто завалить вас огромным количеством самой подробной и разнообразной информации. Выбирать уровень Verbose level следует исходя из конкретных условий, например, в случае отсутствия проблем с рендером, можно выбрать минимальный уровень или вообще отключить вывод консоли при рендере.

Brazil: Image Sampling

Параметры закладки Brazil: Image Sampling предназначены для управления антиалиасингом (antialiasing, или просто AA). Aliasing охватывает довольно широкий спектр артефактов у созданных на компьютере изображений, основная причина появления которых заключена в представлении непрерывных величин дискретными значениями. Наиболее известны такие явления, как ступеньки на краях объектов, зернистость в полутоновых переходах (на краях мягкой тени, например), мигания в анимации и другие. Существует математическая теория, разработанная для устранения этих явлений. Основная ее суть состоит в уточнении цветовых значений пикселов путём разделения их на составляющие части - субпикселы, испусканием через субпикселы дополнительных лучей и усреднением результатов для целого пиксела. Основанием для разбиения пиксела на субпикселы является величина разницы в цвете между соседними пикселами или субпикселами. Процесс разбиения на субпикселы и испускания дополнительных лучей получил название суперсэмплинга (supersampling). Существует также и undersampling, при котором один луч для определения цвета используется для нескольких пикселов. Undersampling используется для ускорения расчетов в случаях, когда цвет в некоторой области изменяется довольно медленно, так что его можно достаточно точно воспроизвести при помощи интерполяции по нескольким контрольным точкам.

Brazil использует механизм адаптивного суперсэмплинга. Это означает, что можно задавать "вилку" значений для минимального и максимального количества лучей на пиксел и пороговое значение контраста, которое при необходимости будет переключать количество лучей суперсэмплинга в заданных пределах.



рис. 4 Параметры управления суперсэмплингом

Min Samples - минимальное количество лучей для пиксела или группы пикселей. Значения являются степенями двойки, так что величина 0 означает, что на каждый пиксел будет использоваться минимум 1 луч для определения цвета. В случае отрицательных значений будет выполняться undersampling, то есть один луч будет использоваться для определения цвета группы пикселей. В случае значений, больших 0 (1 и больше), пиксел сразу будет разбиваться на субпикселы (точнее говоря, на матрицу из n x n субпикселов, где n - степени двойки из Min Samples), т.е. для определения цвета одного пиксела будет использоваться 2 и более луча.

Max Samples - максимальное количество лучей для одного или группы пикселей. Эта величина также может принимать отрицательные значения, 0 и положительные значения. Оба эти параметра имеют нижнюю границу значений, которая составляет -4 (один луч для матрицы 16х16 пикселей) и верхнюю границу, которая равна 8 - для определения цвета одного пиксела может быть использовано не более 256х256 субпикселов и соответствующих им лучей.

Наиболее употребимы следующие пары значений Min/Max Samples: -3 0, -2 -1 или -2 0 для предварительных рендеров; 0 2, 1 2, 1 3 для финальных рендеров.

Low Contrast - то, что превращает просто supersampling в адаптивный. Цветовой образец, находящийся справа, позволяет определять значение контраста. Задавать величину контраста можно для каждого канала RGB по отдельности, либо задав общую величину изменения интенсивности света параметром value в модели представления HSV. Величина контраста используется для принятия решения движком brazil об увеличении числа лучей суперсэмплинга. Алгоритм такой. Сначала вычисляется цвет для пиксела или группы пикселей в соответствии с установками Min Samples. Затем сравниваются между собой значения вычисленных цветов соседних пикселов (групп пикселов или субпикселов). Если разница в цвете превышает значение, заданное в Low Contrast, количество лучей увеличивается в два раза. Это означает, что пиксел будет разбит на 2 субпиксела, (группа пикселов или субпикселов делится пополам). Снова вычисляются значения цвета для новых лучей и весь процесс повторяется. Выход из цикла осуществляется, если разница значений соседних субпикселов становится меньше величины контраста, или же если достигнуто максимальное количество лучей суперсэмплинга, установленное Max Samples. Если установлено большое значение контраста, велика вероятность того, что суперсэмплинг будет выполняться с минимальным количеством лучей. Если значение контраста мало, велика вероятность, что суперсэмплинг будет выполняться с максимальным количеством лучей. Для финального рендера значение контраста следует выбирать исходя из того, что глаз человека способен различать цветовые оттенки с разницей в 3-4 градации цвета.

Найденные новые значения цвета для субпикселов одного пиксела используются для вычисления уточненного цвета пиксела. Для этой цели применяются различные фильтры группы Image Filter закладки Brazil Image / Texture Filtering.



рис. 5 Фильтры AA

Другими словами, фильтры представляют собой различные правила, которые используются для определения цвета пиксела по цветам его субпикселов. Нужно заметить, что в теории AA получен вывод, в соответствии с которым цвет пиксела зависит не только от цвета его субпикселов, но и от цвета окружающих пикселов (в идеале - от всех пикселов окружения). Многие из фильтров, используемых в brazil для AA, учитывают это обстоятельство. Наиболее универсальным фильтром из имеющихся в списке является фильтр Mitchell-Netravalli. Он обеспечивает достаточно качественный результат, скорость вычислений и детализацию. Кратко суть каждого из фильтров описывается в текстовом боксе чуть ниже списка фильтров.

Jitter Samples - в обычной ситуации, луч, используемый для определения цвета пиксела или субпиксела, проходит через его центр. Часто, и особенно при высоких значениях суперсэмплинга, это приводит к появлению повторяющихся узоров, известных как муар. Для избежания этого нежелательного эффекта луч можно пропускать не через центр пиксела, а задавать ему некоторое случайное отклонение относительно центра. Параметр Jitter Samples это и делает, задавая для каждого луча AA свое случайное отклонение.

Кнопки P1, P2, P3 являются предопределенными наборами пар значений Min и Max Samples при фиксированном значении контраста с value=25.

Таким образом, выбор значений Min и Max Samples, Low Contrast и фильтра однозначно определяют способ и качество AA.

Brazil Exposure / Color Clamping



рис. 6 Параметры управления экспозицией и динамическим диапазоном рендера

Управление экспозицией мы уже обсудили выше. Остальные параметры этой закладки относятся к управлению динамическим диапазоном цветовых значений рендера.

Brazil использует для представления цвета внутренний числовой формат повышенной точности. Это означает, что значение цвета представлено числами с плавающей запятой и значениями, лежащими вне диапазона цветовой модели RGB. С другой стороны, изображение в Brazil VFB (как впрочем, и в "максовском" VFB) представлено с использованием модели RGB. Таким образом, если рендер выполняется не в HDRI формате, необходимо управлять преобразованием внутреннего представления цветов в модель RGB. Brazil Color Clamping и предоставляет для этого некоторые средства.

Clamp Color Range for Render Effects - используется совместно с Render Effects, включение этой опции включает стандартный режим сжимания цветового диапазона, используемый в 3ds max вместо алгоритма сжатия, используемого в Brazil. Рекомендуется к использованию, если изображения содержат артефакты.

Luminance Compression - коэффициент сжатия цветовых значений. Истинное цифровое значение цветовой величины будет делиться на этот коэффициент. Компрессия цветов позволяет "сжать" более широкий диапазон цветовых значений к более узкому, например к RGB-диапазону с его 255 градациями интенсивности цвета. Cжатие позволяет до некоторой степени исключить засветы в рендере.

Sampling - параметр очень полезен, если используется HDR изображение, например, для освещения сцены. Он ограничивает максимальное значение светимости на один луч. Это позволяет исключать из расчета отдельные яркие пиксели HDR изображения, интенсивность света в которых может достигать очень больших значений и не устраняется размыванием.

Brazil: Ray Server



рис. 7 Параметры сервера трассировки лучей (ray tracing)

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

Группа Ray tracing Depth Control обеспечивает критерии для завершения трассировки.

Reflected - трассировка будет завершена после того, как луч отразится от поверхностей заданное в этом параметре число раз.

Refracted - то же, но в отношении преломлений для прозрачных поверхностей.

Total - суммарное число максимального количества отражений и преломлений. Если величина Total меньше действительной суммы величин, заданных в Reflected и Refracted, в игру вступает принцип случайности - действительное количество отражений и преломлений будет случайным для разных точек поверхности, но сумма их не превысит значения Total.

Auto Cutoff - задает выход из трассировки по величине возвращаемого значения цвета. Если величина цвета меньше значения Auto Cutoff, трассировка в данном направлении прерывается. Справа представлены цветовые боксы и слоты текстур, с помощью которых можно явным образом задать цвет, возвращаемый лучом в конце трассировки.

Группа Options позволяет рассчитывать дополнительные эффекты, такие как размытые отражения и преломления (Glossy), самоотражение и другие. Включение Glossy в Ray Server всего лишь разрешает расчет этого эффекта, реальная настройка размытия осуществляется в параметрах материалов.

Очень важная группа параметров - Ray tracing Acceleration. Фактически абсолютно все операции расчета освещения, от антиалиасинга до расчета фотонных карт, в brazil связаны с трассировкой того или иного типа лучей и расчетом их пересечений с поверхностями. Без преувеличения можно утверждать, что не менее 90% (а на самом деле может быть и больше) времени расчетов тратится на вычисление координат пересечений лучей. Поэтому, ускорение таких расчетов самым непосредственным образом сказывается на общей скорости работы brazil.

Способов ускорения тестов пересечений разработано довольно много, brazil в настоящее время использует для этого так называемые воксели (voxel). Вся сцена разбивается на трехмерные ячейки заданного размера (ширина x высота х глубина). Каждая ячейка содержит описание полигонов, попавших в ее пределы, а вся сетка вокселей представляет собой базу данных с описанием положения полигонов.

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



рис. 8 Параметры настройки Ray tracing Acceleration

Mode>Single Grid - та самая сетка вокселей. В списке еще присутствует другой способ ускорения - Manual Hybrid, основан на создании баз данных о полигонах по-объектно. Разработчиками к употреблению не рекомендуется.

Max Size - здесь задается максимальное число вокселей сетки. Например, значение 25 означает, что воксельная сетка может состоять не более чем из 25 вокселей по ширине, высоте и глубине. Реальное количество вокселей в сетке будет зависеть от количества полигонов в сцене и значения Max Polys.

Max Depth - максимальная глубина разбиения одного вокселя, если он все еще содержит число полигонов, большее, чем задано в Max Polys. Требуется соблюдать осторожность с этим параметром, поскольку увеличение глубины требует большого количества памяти.

Max Polys - счетчик полигонов, выступающий в роли критерия для определения реального количества вокселей и глубины их разбиения. Чем меньше значение (минимальное значение не может быть меньше одного полигона), тем меньше тестов на пересечение будет выполняться. Однако малые значения Max Polys не всегда приводят к общему ускорению расчетов, поскольку может оказаться, что программа будет тратить очень много времени на построение самой системы вокселей. Требуется всегда находить оптимальное соотношение между временем для настойки сетки вокселей и временем самой трассировки лучей.

Balance - параметр, управляющий тем, как будет строиться сетка вокселей. При высоких значениях баланса (около 1) при построении сетки будет отдаваться предпочтение размеру сетки перед глубиной разбиения вокселя, то есть будут создаваться сетки с большим количеством вокселей, которые не будут или почти не будут разбиваться на дополнительные части. При низких значениях Balance (около 0.5 и ниже), предпочтение при построении сетки будет отдаваться разбиению вокселей на части. В этом случае будут создаваться сетки с небольшим числом вокселей, но с большой вероятностью почти каждый воксел будет разбит на дополнительные части, насколько позволит глубина разбиения Max Depth. Оба эти способа пригодны для ускорения расчета пересечений, реальный эффект будет зависеть от конкретной сцены.

В настройках Ray tracing Acceleration предусмотрены три оттестированных набора готовых параметров для различных ситуаций. Если нет возможности искать собственные настройки, вполне можно воспользоваться готовыми.

Low RAM - настройки для случая, когда для расчета сцены недостаточно свободной памяти. Ситуация не такая уж и редкая в случае высокополигонных сцен. Если ваша сцена приводит к зависанию системы или аварийному завершению расчетов, попробуйте этот набор параметров. Правда, сам расчет будет медленным.

Moderate - среднее количество памяти, среднее время расчетов.

Max Speed - если имеется достаточно свободной памяти для расчета сцены, используйте этот набор параметров, он обеспечивает высокую скорость расчета. Значения параметров этого набора могут стать отправной точкой для собственных экспериментов со скоростью рендера.

Brazil: Luma Server

Одна из важнейших закладок brazil, отвечающая за настройку двух компонент освещенности из трех (raytracing настраивается на закладке Brazil: Ray Server, рассмотренной выше). Имеется в виду прямое освещение и вторичное диффузное освещение, рассчитываемое только методом Монте-Карло. Brazil позволяет рассчитывать каждую из этих двух компонент освещенности по отдельности. Например, выключив галочку у Indirect Illumination>Enable, мы заставим brazil рассчитывать только прямое освещение с raytracing отражениями/преломлениями (их тоже можно отключить). Эта возможность очень полезна на начальном этапе настройки сцены, когда выполняется постановка освещения и определяются ее параметры.

рис. 9 Только прямое освещение. В сцене три источника света.

Можно рассчитать только вторичное освещение, начиная с первого диффузного отскока и выше, для чего требуется отключить расчет Direct Illumination.


рис. 10 Освещение от единственного первого диффузного отскока (bounces=1).

Эта возможность полезна для анализа настроек вторичного освещения.



рис. 11 Параметры управления расчетом прямого и непрямого освещения.

Освещение можно включать или отключать по типам освещения (Direct/Indirect) или по типам источников света. В группе параметров Indirect Illumination можно исключить из участия в непрямом освещении отдельные объекты.



рис. 12 Параметры настройки адаптивного механизма непрямого освещения.

Расчет непрямого освещения методом Монте-Карло (далее - QMC) в brazil выполняется не для каждой точки, видимой в камеру. Ситуация очень похожа на суперсэмплинг при обычном AA. Расчет непрямого освещения выполняется сначала для групп видимых из камеры точек, число которых равно степени двойки, указанной в Min. При этом одно найденное значение освещенности присваивается всем точкам из группы. Далее, значения освещенностей соседних групп сравниваются между собой и если разница в их величине больше значения, указанного в Contrast, группы точек разбиваются пополам и для них выполняется дополнительное вычисление вторичной освещенности. Процесс продолжается до тех пор, пока разница освещенности соседних групп не станет меньше величины Contrast, либо пока при разбиении групп не будет достигнуто их максимальное количество, определенное в Max. Таким образом, данная группа параметров реализует адаптивный механизм расчета непрямой освещенности. Наиболее употребимые пары значений Min Max: -4 0 для предварительного рендера (preview) при значениях Contrast от 25 и выше, -3 0 для финального рендера при значениях Contrast 25 и меньше. Достаточно редко используется значение Max, большее 0. Чем выше разрешение рендера, тем более низкие значения Min - Max допустимо использовать.

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



рис. 13 Параметры настройки расчета непрямой освещенности методом квази Монте-Карло (QMC).

Центральная группа параметров, определяющая сам расчет вторичной освещенности методом QMC (кази Монте-Карло). Поскольку теорию расчета QMC мы уже обсудили, далее я просто привожу описание настроечных параметров.

Sampler - список алгоритмов расчета, который пока содержит единственный элемент - Quasi Monte Carlo.

View Rate - количество сэмплирующих полусферу лучей (лучей, испускаемых через поверхность полусферы, окружающей видимую в камеру точку) для расчета вторичной освещенности. Эти лучи трассируются в сцену до первого пересечения с ближайшей поверхностью. В новых точках, полученных в результате таких пересечений, рассчитывается прямое освещение точек. Это и есть первый отскок или первое диффузное переотражение, поскольку свет падает на поверхность, диффузно отражается от нее и попадает в точку, видимую из камеры. Кроме прямого освещения, в этих новых точках выполняется ray tracing, результат рассчитанной освещенности также возвращается в исходную точку.

Наконец, в новых точках также должно быть вычислено непрямое освещение, поэтому вокруг них строятся свои полусферы и через них снова испускаются сэмплирующие лучи. Количество таких лучей задается в параметре Sec Rate, а сколько раз весь процесс будет повторяться, определяет значение параметра Bounces (отскоки).

Когда сэмплируется сфера видимой в камеру точки, вычисляется первый отскок света или первое диффузное переотражение. Первый отскок дает новый набор точек, сэмплирование сфер которых дает расчет второго отскока, который в свою очередь приводит к появлению нового набора точек, сэмплирование которых дает значение третьего отскока (диффузного переотражения) и т.д. Поэтому параметр Bounces еще называют глубиной трассировки непрямого освещения. Чем больше глубина трассировки, тем более точным будет расчет диффузной освещенности, и тем дольше он будет выполняться. Чем больше View Rate и Sec Rate, тем меньше шума, глаже рендер и дольше расчет. Значение View Rate в пределах 5 - 15 может использоваться для предварительного рендера, для финального расчета нужно использовать значения от 40 и выше. Значение Sec Rate, как рекомендуют сами разработчики, должна составлять половину или три четверти значения View Rate.

Параметры группы Indirect Energy filter являются множителями рассчитанной интенсивности и цвета рассчитанного освещения. С их помощью можно уменьшать интенсивность вторичного освещения (Diffuse или Specular меньше 1) или наоборот, увеличивать ее. Цветовые боксы этой группы позволяют определить цвет вторичного освещения.

Таким образом, метод QMC позволяет точно рассчитать все три компоненты освещенности. Однако расчет будет очень долгим. Кроме того, QMC в одиночку не в состоянии рассчитывать caustic-эффекты освещения. К недостаткам расчета освещенности методом QMC в brazil стоит отнести невозможность сохранения результатов расчета освещенности в файл, необходимость полного пересчета освещения в случае изменения настроек AA и контроля экспозиции, отсутствие интерполяции и каких бы то ни было настроек свойств самого метода QMC.

Для расчета вторичной освещенности, QMC может использоваться не только самостоятельно, но и в сочетании с методом фотонных карт. Такой способ расчетов получил название regathering. В этом случае QMC рассчитывает только первый отскок, оценка освещенности от второго и более диффузных переотражений света берется из фотонной карты. Такой способ обеспечивает качественный и одновременно более быстрый, по сравнению с "чистым" QMC, расчет.

При regathering параметр Bounces выполняет помимо основной еще и дополнительную функцию. Если фотонная карта активизирована для расчета и Bounces=1, то расчет вторичной освещенности выполняется только по данным фотонной карты, QMC не используется вообще. Если фотонная карта активизирована и Bounces=2 и выше, первый отскок рассчитывает QMC, остальные - фотонной картой. Если фотонная карта не активизирована, все расчеты выполняются QMC, а величина Bounces определяет глубину трассировки отскоков.

Brazil: Photon Map Server

Photon Map Server -"сердце" настройки фотонных карт.



рис. 14 Выбор типа фотонной карты

Всего существует два типа фотонных карт - Global (глобальная), используется для создания фотонных карт, при помощи которых рассчитывается непрямое освещение для всей сцены, и Caustic, используется для расчета caustic эффектов освещения для отдельных объектов сцены. Такое разделение обусловлено тем, что для caustic эффектов требуется высокая плотность фотонов, которую трудно обеспечить при помощи Global фотонной карты. Высокая плотность фотонов достигается за счет локальности, то есть Caustic фотонная карта создается для небольшого участка поверхности, так что даже при относительно небольшом числе излученных источником света caustic-фотонов можно достичь их высокой плотности. Для расчета каустики требуется указать объект-источник и объект получатель. Источником может быть любой объект, чья поверхность обладает свойствами зеркального отражения или прозрачностью. В качестве получателя лучше использовать объект, чья поверхность имеет только диффузные свойства. Например, каустику можно посчитать для стеклянного бокала, стоящего на столе. В этом случае источником каустики будут стенки бокала, а получателем - поверхность стола. Если поверхность объекта-источника обладает кривизной, сходной с кривизной линзы, каустика будет проявляться сильнее. Природа caustic-эффектов связана с преломлением прозрачных и отражающих поверхностей, фокусирующих падающий рассеянный свет в узкий пучок после преломления или отражения.

Если тип карты активен, это отображается зеленым "фонариком" напротив типа карты. Здесь же представлена статистика фотонной карты - ее предполагаемый размер, количество действительно сохраненных фотонов, размер используемой для этого памяти и статус кэша фотонной карты. Данные изменяются в процессе генерации фотонной карты.



рис. 15 Настройка трассировки фотонов.

Здесь можно управлять стратегией создания фотонной карты и глубиной трассировки - общим количеством отражений фотонов от поверхностей.

Prepass Type - с помощью этого параметра выбирается определенная стратегия создания фотонной карты. Вообще, заранее предсказать общее количество фотонов, которые будут сохранены в фотонной карте, довольно затруднительно, хотя число излучаемых источником света фотонов всегда известно. Причина в том, что при отражении фотонов от поверхностей в игру вступает фактор случайности, известный как "русская рулетка". Русская рулетка, используя механизм генерации случайных чисел с учетом таких характеристик поверхности, как величина диффузного и зеркального отражения или преломления материала, определяет, что будет происходить с фотоном - рассеется ли он диффузно или отразится на зеркальный угол, или же будет поглощен. Неопределенность с объемом фотонной карты только усиливается при увеличении числа отскоков фотонов. Поэтому фотонный сервер brazil выполнят предварительный проход, при котором излучается небольшая от общего числа часть фотонов. По результатам сохранения этой части делается прогноз об общем числе фотонов, которые будут сохранены после излучения их полного количества. Это происходит, если в Prepass Type выбран тип Map Size. Результат предварительной оценки отображается в Map Capacity соответствующего типа карты.

Если выбран тип #Emitted, то фотонный сервер организовывает излучение таким образом, чтобы количество сохраненных фотонов в карте соответствовало суммарному числу фотонов, указанных в параметрах излучения источников света. Это удобно в том случае, когда есть необходимость получить строго заданное числа сохраненных фотонов в карте.

Splitting - включение этой опции заставит фотонный сервер делать различие между фотонами, которые отразились от поверхности и фотонами, которые прошли через прозрачную поверхность. Позволяет уменьшить шум при расчете caustic -эффектов. Эта возможность полезна при использовании совместно с Caustic фотонной картой и не нужна при расчете Global фотонной карты. В последнем случае, поскольку расходуется дополнительная память на различение фотонов, ее лучше отключить.

Diffuse Depth - максимальное количество диффузных переотражений, которое может испытать фотон. После достижения этого числа отражений, фотон далее не трассируется. Необходимо учитывать, что каждое столкновение - это запись в фотонной карте. Поэтому если задать большое число отражений, то даже при небольшом числе испускаемых ИС фотонов, конечный объем фотонной карты может быть очень внушительным.

Reflected Depth / Refracted Depth - то же в отношении зеркальных отражений и преломлений фотонов. Запись о фотоне не будет сохраняться до тех пор, пока он не достигнет диффузной поверхности.



рис. 16 Параметры настройки способа оценки освещенности от фотонов.

Эта группа позволяет до некоторой степени управлять тем, как будет выполняться оценка освещенности видимой в точку камеры от окружающих ее фотонов. Фотонная карта представляет собой базу данных, хранящих информацию о координатах столкновений фотонов с поверхностями, энергиях фотонов и направлении их падения на поверхность. Поэтому, когда требуется рассчитать освещенность какой-либо точки поверхности, по координатам этой точки осуществляется поиск в базе данных таких фотонов, которые будут либо лежать в пределах круга заданного радиуса (параметр Max Search Radius) с центром в этой точке, либо заданного числа ближайших фотонов (параметр Photons in Estimate). Энергии выбранных фотонов суммируются с некоторыми весовыми коэффициентами, и получается оценка освещенности точки. Мы говорим именно об оценке, а не о точном значении освещенности, поскольку точность расчетов сильно зависит от плотности фотонной карты. Чем выше плотность, тем ближе оценка к действительному значению освещенности.

Еще одно важное замечание касается взаимодействия параметров Photons in Estimate и Max Search Radius при выполнении оценки. Эти два параметра работают по принципу конкуренции - если один из них будет достигнут раньше, второй не будет использоваться. Например, если при оценке освещенности максимальный радиус поиска (Max Search Radius) достигается раньше, чем заданное для сбора число фотонов (Photons in Estimate), то сбор прекращается, несмотря на то, что действительно собранное число фотонов не соответствует заданному. И наоборот. Это обстоятельство нужно учитывать, поскольку величина Photons in Estimate имеет самое прямое отношение к гладкости рендера, а Max Search Radius - к точности вторичного освещения.

Ввиду особой важности этих двух параметров, рассмотрим подробнее особенности их взаимодействия. Одним из основополагающих свойств фотонной карты является количественная связь между числом собираемых для оценки освещенности фотонов, плотностью фотонной карты в точке оценки освещенности и радиусом сбора фотонов. Эту количественную связь можно выразить простой формулой:

(Фактическое число собираемых фотонов) = (локальная плотность фотонной карты в точке оценки освещенности) х (фактическая площадь сбора фотонов в круге некоторого радиуса)

Я говорю о фактическом значении величин, поскольку значения, заданные что называется "руками" для соответствующих параметров в настройках не всегда будут совпадать со значениями, которые действительно будут использованы при сборе фотонов.

Например, можно в качестве радиуса сбора фотонов указать 5 метров, количество собираемых фотонов указать равным 10, тогда даже для фотонной карты с малой плотностью фактический или реальный радиус сбора будет гораздо меньше 5 метров, поскольку условие сбора 10 фотонов выполнится гораздо раньше.

Другой пример. Если указать количество собираемых фотонов равным 10 000, радиус сбора равным 1 мм, то даже для фотонной карты большой плотности реальное число собранных фотонов вряд ли превысит 1000, потому что максимальный радиус поиска будет достигнут гораздо раньше.

Поэтому, основное свойство фотонной карты можно использовать для нахождения одного из параметров по остальным двум, если их значения известны. Усредненное фактическое значение Max Search Radius (радиуса сбора фотонов для оценки освещенности) можно определить, зная среднюю плотность фотонной карты и задав величину Photons in Estimate. Усредненное фактическое значение Photons in Estimate (количество собираемых для оценки фотонов) можно определить, зная среднюю плотность фотонной карты и задав величину Max Search Radius. Я говорю об усредненных значениях, поскольку плотность фотонной карты, а с нею и радиус сбора и количество фотонов сбора, будут разными для разных точек поверхности. А возможность определить Photons in Estimate и Max Search Radius важна, поскольку от них зависит гладкость рендера и точность расчета вторичного освещения.

Таким образом, использование приведенной формулы дает направление поиска настроек в зависимости оттого, что нужно получить в рендере - просто гладкое изображение, или гладкое изображение с точным вторичным освещением при определенной плотности фотонной карты. И даже если не использовать формулу для определения количественных значений параметров, понимание ее качественного содержания очень важно для успешной работы с фотонной картой.

Предложить какую-то формулу для вычисления плотности фотонной карты по известному числу излученных фотонов довольно сложно, да и не нужно. Потому, что усредненная плотность фотонной карты очень просто определяется практически. Позже я расскажу, как это сделать.

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

Вернемся к параметрам оценки освещения.

Estimator - алгоритм оценки освещения. Возможны три варианта - Basic, Advanced и Analysis. Basic - самый простой и быстрый алгоритм из трех, но не поддерживает многих важных функций. Например, неправильно обрабатывает тонкие поверхности, не может создавать зеркальные подсветки, неверно обсчитывает тени для bump map. Так что скорость - единственное его преимущество. Используется довольно редко. Advanced - полнофункциональный алгоритм оценки освещения, делает все то, чего не делает Basic, но работает медленнее. Этот алгоритм используется в brazil по умолчанию. Analysis - специальный алгоритм, предназначенный для отладки настроек оценки освещения, в особенности - радиуса сбора фотонов и количества собираемых для оценки фотонов. Рендер, выполненный с использованием этого алгоритма, возвращает цвета, которые можно использовать для анализа. В настоящее время полезную информацию несет только красный цвет. Если красный цвет в некоторой области отсутствует, то либо фотонов в этой области достаточно для оценки освещения, либо их меньше 8. Чем ярче красный цвет, тем больше ошибка, тем больше дефицит фотонов для оценки.


рис. 17 Рендер в режиме Analysis. Места красного цвета свидетельствуют о недостатке фотонов для оценки освещения - это области, в которых невозможно собрать количество фотонов, указанное в Photons in Estimate, в пределах радиуса, заданного в Max Search Radius.

Search type - способ сбора фотонов для оценки вблизи углов и стыков. Представлено два типа: Spherical и Elliptical. Elliptical более точно обрабатывает углы, но медленнее, чем Spherical.

Specular - включает возможность расчета зеркальных подсветок средствами фотонной карты. Эта функция работает пока только с материалом типа Brazil BasicMtl.



рис. 18 gif Остальные настройки фотонного сервера.

Photon Energy>Multiplier - позволяет дополнительно изменять величину энергии фотонов для настройки яркости освещения в сцене. Кроме этого, имеется еще один регулятор энергии фотонов в настройках источников света. Разработчики не рекомендуют увеличивать этот множитель больше единицы, поскольку это может приводить к артефактам. В качестве альтернативы лучше регулировать энергию фотонов у источников света.

Filtering - конический фильтр, используемый при оценке. Определяет весовые коэффициенты для складываемых энергий фотонов, так что фотоны, более удаленные от точки дают меньший вклад. Для Global фотонной карты фильтр обеспечивает дополнительное сглаживание рассчитанной освещенности, если правильно подобран размер фильтра и не используется regathering. Для Сaustic фотонной карты этот фильтр позволяет получать более четкий эффект с высокой резкостью, увеличение размера фильтра ведет к размыванию каустики.

Cashing - сохраняет фотонную карту в оперативной памяти компьютера, что позволяет не пересчитывать ее для каждого рендера. Кэширование полезно в том случае, когда фотонная карта невелика по размеру и в расчетах анимаций.

Photon Map Files - позволяет сохранить рассчитанную фотонную карту в файл на диск. Эта возможность просто необходима при настройке фотонной карты, поскольку изменение Max Search Radius и Photons in Estimate не требует пересчета фотонной карты. Поэтому, их можно менять, загружая одну и ту же фотонную карту из файла, что гораздо быстрее ее пересчета.

File - здесь указывается место на диске и название файла для сохранения фотонной карты.


рис. 19 Прямое освещение и непрямое диффузное освещение, рассчитанное при помощи фотонной карты.

рис. 20 Только фотонная карта, глубина трассировки фотонов - 20 диффузных отскоков.

рис. 21 Regathering, первый диффузный отскок рассчитан QMC, остальные - фотонной картой.

Мы довольно подробно рассмотрели параметры фотонной карты ввиду исключительной важной роли, которую выполняет Global Photon Map для получения качественного расчета освещения в рендере. Подводя итог, скажу, что основные усилия при практической настройке рендера с фотонной картой тратятся на подбор размера фотонной карты (количества сохраненных фотонов), и нахождение подходящих значений для Max Search Radius и Photons in Estimate.

Нам осталось еще рассмотреть некоторые настройки источников света, имеющие отношение к фотонам.

Источники освещения (ИС)

Несомненно, важнейшая вещь для настройки освещения. Но мы рассмотрим подробно только те параметры, которые имеют непосредственное отношение к непрямому освещению.

Brazil предлагает свои варианты ИС для всех основных типов источников 3ds max плюс два вида ИС типа area. Итого мы имеем 5 ИС: omni, spot, directional, rectangle area и disk area. Главным преимуществом использования brazil ИС является то обстоятельство, что все они могут испускать фотоны.

В настройках ИС можно по отдельности включать/отключать разные виды освещения - прямое (direct) и непрямое (indirect). Таким образом, включение расчета вида освещения доступно в brazil из трех различных мест - из панели настроек ИС (в двух местах) и из панели настроек рендера. Это, несомненно, очень гибкий подход. Тем не менее, стоит хотя бы в одном месте забыть включить вид света, и он не будет рассчитываться. Принимая во внимание разбросанность панелей настроек по совершенно разным местам интерфейса, получаем управление, не отличающееся большим удобством.

Все ИС могут быть фотометрическими и могут использовать реальные физические параметры излучения, такие как пространственное распределение освещения и единицы интенсивности освещения. Несомненным преимуществом brazil является наличие встроенного просмотрщика IES-файлов.

Если фотометрические ИС не используются, то яркость освещения устанавливается на закладке Color/Projector. Здесь можно задать величину интенсивности света и его цвет.

При расчете освещения от ИС учитывается их тип излучения. Особо следует остановиться на area-источниках, поскольку они обладают диффузным типом излучения - освещение от каждого участка поверхности ИС будет зависеть не только от расстояния, но и от угла между направлением на участок источника и нормалью в точке, где рассчитывается освещенность. Освещение от area ИС основывается на разбиении их поверхности на сетку участков. Каждый участок сэмплируется одним или несколькими лучами. Освещение в точке является суммой освещенностей сэмплов для участков ИС, видимых из точки. В brazil имеется два основных алгоритма расчета сэмплов - Regular и Adaptive Halton, доступных на закладке Area Light Options.



рис. 22 Параметры расчета освещения от area ИС.

Regular использует постоянное количество сэмплов, Adaptive Halton изменяет количество сэмплов в зависимости от условий освещения. Например, когда часть ИС перекрыта другим объектом, в области границы перекрытия может быть использовано больше сэмплов.

Initial start - определяет начальное количество сэмплов. Оно остается постоянным для Regular и может меняться для адаптивного сэмплинга. Для Regular рекомендуются значения 1 и больше, для адаптивного сэмплинга - малые значения initial start в пределах 0.1 или меньше.

Error estimator - способ оценки ошибки расчета освещения. Всего три типа - mono, RGB и HDRI. Mono выполняется быстрее, но может приводить к шуму в цветных тенях или при освещении цветной текстурой. RGB гарантирует, что во всех цветовых каналах величина ошибки не превысит заданного значения. HDRI более точно рассчитывает ошибку в тенях и самый медленный из трех типов оценки.

Max samples - максимально возможное число сэмплов, это число не может быть превышено ни при каких настойках адаптивного сэмплинга.

Estimate intrvl - интервал для расчета ошибки сэмплирования. Чем больше интервал, тем точнее и медленнее расчет ошибки.

Max error - главная настройка, включающая дополнительное сэмплирование и определяющая качество расчета освещения. Задается в процентах отношения величины ошибки к величине всего освещения. Для финального рендера рекомендуется использовать значения ошибки от 0.1% и ниже в сочетании с большим max samples, около 1000 или даже больше. Для предварительного рендера величина ошибки может быть большой, вплоть до 100%.

Поскольку area ИС могут сильно замедлять расчет, в качестве альтернативы им можно использовать освещение от точечных источников, поскольку они тоже могут излучать фотоны и brazil позволяет рассчитывать для них тени, как от area light.

Расчет вторичного освещения основывается на реальных физических законах, поэтому выбор типа затухания, наряду с выбором реальных единиц измерения и реальных размеров геометрии, очень важен. Выбор типа затухания осуществляется на закладке Attenuation / Decay.



рис. 23 Выбор типа затухания.

Decay>Auto используется для фотометрических ИС, ON позволяет выбрать из выпадающего списка квадратичное Inverse Square затухание (его и нужно использовать) или затухание пропорционально расстоянию, OFF выключает затухание вообще.

Группа Attenuation позволяет дополнительно выбрать плоскости отсечения освещенной области сцены, тогда освещение будет только между выбранными плоскостями, что удобно для экономии времени расчетов.

При типе затухания Inverse Square необходимо еще выставить начальную точку относительно ИС, откуда затухание начнется и Scale, смысл которого заключается в возможности дополнительного масштабирования выбранных единиц измерения. Если выбраны реальные единицы измерения, Scale можно выставлять равным 1 и регулировать освещение настройками его интенсивности и энергии (для фотонов). Либо можно не трогать интенсивности и энергии, а увеличить значение Scale. Последний способ удобнее и, к тому же, изменение интенсивности освещения отображается в видовых окнах max.

И, наконец, закладка Photon Maps.


>
рис. 24 Настройка свойств и количества излучаемых источником света фотонов.

Именно здесь определяется тип излучаемых фотонов, Caustic или Global, количество излучаемых фотонов и их энергия. На этой же закладке расположены дополнительные параметры настройки излучения фотонов. Но поскольку сами разработчики не уверены в том, что они останутся в следующей версии brazil, рассматривать их мы не будем и в расчетах ограничимся настройками излучения фотонов, принятых по умолчанию.

Схемы и стратегии расчета освещения

Основной целью данного обзора является рассмотрение способов и средств настройки расчета средствами brazil прежде всего вторичного освещения. При этом, конечно же, многие другие вопросы, также немаловажные для освещения в целом, остаются вне поля зрения. Такие, например, как настройка прямого освещения и работа с материалами. Однако такой подход вполне оправдан, поскольку позволяет лучше сосредоточиться на обсуждении предмета статьи. Далее, при рассмотрении примеров настройки освещения конкретных сцен, конечно же, настройка и прямого освещения и материалов, равно как и некоторые другие вопросы, будут затронуты, но только по мере необходимости.

При настройке расчета непрямого освещения в конечном итоге преследуется только две цели. Первая - достижение гладкости рендера при наличии вторичного освещения, без видимых пятен, пересветов/затемнений в углах и других артефактов. Вторая - получение физически корректного вторичного освещения c одновременным достижением гладкости рендера. Последняя задача намного труднее и требует больше времени, сил и средств.

Всего же различных способов расчета вторичного освещения может быть три.

  1. Расчет только методом QMC. Этот способ подходит для решения обеих задач, но является очень медленным.
  2. Расчет при помощи одной фотонной карты. Метод быстр, довольно прост в настройке, но позволяет решать только задачу получения гладкого вторичного освещения. Получение гладкого и одновременно правильного вторичного освещения в настоящее время невозможно из-за ограничения на размер оперативной памяти, накладываемого операционной системой, которое не позволяет достичь необходимой плотности фотонной карты в подавляющем большинстве случаев.
  3. Regathering. Для расчета первого диффузного отскока используется QMC, для всех остальных вторичных переотражений используется фотонная карта. Regathering позволяет успешно решать обе задачи при высоком качестве конечного изображения и за относительно небольшое время. Разделяется на два подвида - с применением фотонной карты низкой и высокой плотности.

Все три метода расчета освещения в brazil используются на практике и будут рассмотрены подробно на конкретных примерах в следующей, второй части обзора.

До встречи!

Дополнительно

iXBT BRAND 2016

«iXBT Brand 2016» — Выбор читателей в номинации «Процессоры (CPU)»:
Подробнее с условиями участия в розыгрыше можно ознакомиться здесь. Текущие результаты опроса доступны тут.

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.