Читайте также: |
|
Метод фотонных карт хотя и позволяет рассчитывать освещение физически корректно, очень редко может быть использован самостоятельно. Вызвано это тем, что для получения гладкого рендера требуется сохранить огромное число фотонов в карте, что далеко не всегда возможно из-за ограничений на память. Кроме того, расчет при помощи фотонных карт порождает нежелательный визуальный эффект, известный как «потемнение углов». Поэтому на практике для расчета вторичной освещенности трехмерной сцены в подавляющем большинстве случаев используется сочетание метода фотонных карт и метода Final Gathering (FG).
Final Gathering в переводе означает нечто вроде "окончательного сбора", что достаточно точно соответствует сути метода и его месту в арсенале средств расчета. Математически FG представляет собой не что иное, как метод Монте-Карло, используемый для численного интегрирования уравнений освещенности.
FG позволяет точно посчитать освещение практически для любых условий, но требует для расчетов гораздо больше времени, чем метод фотонных карт и, к тому же, его использование довольно затруднительно для просчета такого эффекта, как каустика или для многократных диффузных переотражений. Поэтому, в mental ray FG используется как "финишное" средство для расчета наиболее значимых по вкладу вторичных переотражений – первого отскока переотражений света поверхностями объектов.
Таким образом, общая схема расчета освещения в mental ray состоит из расчета прямого освещения, расчета зеркальных отражений и преломлений методом рейтресинга, расчета первого отскока вторичных переотражений методом FG и расчета остальных переотражений методом фотонных карт.
FG обладает двумя важными особенностями.
Во-первых, расчет освещения методом FG выполняется не для всех видимых в камеру точек поверхностей, а только для некоторых, так называемых FG-точек, выбранных по определенному правилу. Для остальных точек освещение не рассчитывается, а интерполируется по рассчитанным освещенностям ближайших FG-точек. В этом смысле FG является просто способом ускорить расчет освещения методом Монте-Карло.
Во-вторых, Final Gathering рассчитывает не все диффузные вторичные отражения, а только первый отскок – когда свет однократно отразившись от какой-либо поверхности попадает в точку, видимую из камеры. Вторичные диффузные отражения света со второго отскока и выше FG не учитывает (не рассчитывает). FG может рассчитывать зеркальные отражения и преломления на произвольную, задаваемую в настройках рендера, глубину, если материал поверхности обладает ненулевыми свойствами зеркального отражения и преломления. Таким образом, если материал поверхности является чисто диффузным, FG должен использовать фотонную карту.
Поэтому, FG самостоятельно может использоваться для расчета вторичного освещения только в открытых, "экстерьерных" сценах и в этом случае дает наилучший результат при совместном использовании с HDRI в качестве карты освещения. Во всех остальных случаях FG должен использоваться в сочетании с фотонными картами, иначе рассчитанное освещение будет, как правило, излишне темным.
Совместная работа FG и фотонных карт происходит по следующему сценарию. Первый вторичный отскок рассчитывается точно методом FG для выбранных точек. При этом сэмплирующие лучи (FG-лучи), используемые для расчета интеграла освещения точки, трассируются до первого пересечения с ближайшей поверхностью. В точке пересечения рассчитывается прямая освещенность точки, это и определяет величину вклада первого вторичного отскока, а дополнительная освещенность от всех остальных отскоков оценивается по фотонной карте вблизи координаты рассматриваемой точки. Без фотонных карт, в точке пересечения сэмплирующего луча рассчитывается только прямое освещение и для чисто диффузных поверхностей трассировка обрывается, а для поверхностей с ненулевыми свойствами зеркальных отражений и/или преломлений может выполняться дальнейшая трассировка в соответствии с заданными настройками глубины трассировки FG-лучей.
Таким образом, для расчета вторичного освещения комбинированным способом «фотонная карта + FG» требуется настроить как параметры фотонных карт, так и параметры FG.
С настройкой фотонных карт мы уже разобрались, их можно и нужно выполнять отдельно и сохранять фотонную карту в файл для последующего расчета совместно с FG. Эффективная настройка параметров FG требует некоторого понимания алгоритма и сути Final Gathering.
В самом общем виде алгоритм расчетов FG включает следующие этапы.
Построение Grid сетки в растровом пространстве изображения
Все типы поверхностей в сцене (полигонального, NURBS и других типов) преобразуются к представлению треугольниками. Это так называемая триангуляция или тесселяция. Тип используемой триангуляции для FG – Grid, относительно равномерная сетка треугольников, то есть все треугольники вдоль одной изолинии поверхности имеют приблизительно одинаковый размер. Особенность Grid - триангуляции в том, что она выполняется с учетом изолиний поверхности и если в каком-то месте поверхности требуется более детальная сетка высокой плотности, то вставляется целая полоса треугольников нужного размера от края до края поверхности вдоль изолиний.
Результат этой стадии можно увидеть в логе mental ray (Rendering>mental ray message window) сразу после записей «computing final gather points», нечто вроде:
RCFG 0.2 info: depth #finalgather points RCFG 0.2 info: 0 3846 RCFG 0.2 info: ray type number RCFG 0.2 info: eye 12700
Для сцены с одним простым объектом легко можно заметить, что количество FG-точек и eye-лучей на этой стадии зависит от геометрии сцены, а не от разрешения изображения (которое в данном случае составляло 640x480 пикселей при фиксированном значении aa 1 луч на каждый пиксел).
Предварительная стадия расчета FG
Среди видимых в камеру вершин треугольных сеток всех поверхностей, построенных на предыдущем этапе, производится отбор тех из них, вторичная освещенность которых будет рассчитываться методом Монте-Карло. Так, если посмотреть на листинг лога mental ray message window, приведенный чуть выше, можно увидеть, что среди всех точек пересечения eye-лучей в количестве 12 700 было отобрано только 3 846 FG-точек.
Правило отбора точек состоит в следующем. Для каждой новой точки выполняется поиск "подходящих" ближайших точек, освещенность которых уже рассчитана методом Монте-Карло. Если такие точки есть, освещенность данной точки не вычисляется, а интерполируется. Если нет ни одной "подходящей" точки, освещенность данной точки рассчитывается методом Монте-Карло.
Определение того, является ли ближайшая точка "подходящей" для интерполяции основывается на так называемой величине ошибки интерполяции. Данная величина, вообще, должна задаваться как один из настроечных параметров рендера. Однако в mental ray явная настройка ошибки интерполяции недоступна, и более того, она скрыта от пользователя и является внутренним параметром mental ray.
Сам механизм интерполяции освещения носит название irradiance gradient (градиент освещения) и предложен Gregory J. Ward etc. в статье "A ray tracing solution for diffuse interreflection" в 1998, а впоследствии усовершенствован им же в сотрудничестве с Paul S. Heckbert в статье "Irradiance Gradient".
Смысл метода состоит в следующем. Для каждой точки, которая рассчитывается методом Монте-Карло, помимо собственно освещенности точки, рассчитывается градиент, или скорость изменения освещения в данной точке. Математически градиент является частной производной функции освещения по координатам на поверхности и имеет как величину, так и направление.
Различают два вида градиентов освещения. Градиент смещения характеризует изменение освещения в зависимости от величины смещения от рассчитанной точки вдоль поверхности. Его величина тем больше, чем ближе к данной поверхности расположены другие объекты.
Второй градиент – градиент вращения, характеризует скорость изменения освещения от величины кривизны поверхности. Он тем больше, чем больше кривизна поверхности.
Знание величин градиентов освещения в данной точке позволяет интерполировать величину освещения при некотором небольшом смещении из такой точки вдоль поверхности любой кривизны, при этом оценка освещения характеризуется величиной ошибки интерполяции. При заданной постоянной величине ошибки, точки, по которым выполняется интерполяция, будут располагаться на поверхностях с разной плотностью. Плотность точек будет выше в тех местах, где объекты ближе расположены друг к другу и где кривизна поверхности больше. Для плоскости, например, распределение интерполяционных точек будет равномерным, с постоянной плотностью.
Интересно то, что информация о сэмплирующих FG-лучах, используемых для расчета интегралов освещения методом Монте-Карло, может быть успешно использована и для расчета обоих типов градиентов освещения. В самом деле, каждый сэмплирующий луч характеризуется координатами пересечения с другой поверхностью, величиной освещения в точке пересечения и углом относительно нормали в точке поверхности, откуда он был испущен. Учитывая, что для FG - расчета одной точки используется до нескольких тысяч лучей, понятно что этой информации вполне достаточно, чтобы оценить изменение освещения в сцене для каждой FG - точки. Я не буду описывать сам механизм таких расчетов, поскольку он довольно специализирован и не связан непосредственно с обсуждаемой темой, а тем, кто интересуется данным вопросом, рекомендую обратиться к вышеуказанным статьям.
Таким образом, расчет освещения FG точки дает, помимо освещения, еще и значения градиентов освещения в этой точке. Это и позволяет интерполировать освещенность других точек поверхности в зависимости от их расстояния до данной FG - точки. Предельное расстояние, на котором может использоваться интерполяция, зависит от задаваемой величины ошибки интерполяции. Оно получило название радиуса влияния FG - точки.
Очевидно, что у различных FG - точек радиусы влияния будут разными и зависит это от особенностей геометрии конкретной сцены.
Результатом предварительной стадии FG - расчетов является набор выбранных точек, освещенность которых рассчитана методом Монте-Карло. В идеале, такого набора вполне достаточно, чтобы интерполировать освещение в любой точке поверхности, видимой в камеру, с заданной величиной ошибки. Координаты FG - точек, их рассчитанная освещенность и величины градиентов освещения сохраняются в базу данных того же типа, что и фотонная карта (kd-tree) для последующего использования (интерполяции) при рендере. Расчет освещения FG - точек выполняется с учетом величины accuracy (Final Gather Samples в 3ds max), задаваемой в настройках FG. Величина accuracy определяет максимальное количество сэмплирующих лучей для расчета освещения методом Монте-Карло. Точки, полученные на этом этапе на диагностическом рендере в 3ds max 7 отображаются как точки зеленого цвета.
Рендеринг
На этом этапе выполняется испускание лучей из камеры и трассирование их до первого пересечения с поверхностью. В точке пересечения выполняется расчет прямого освещения точки, зеркальных относительно камеры преломлений и отражений (рейтресинг) и расчет вторичного освещения методом FG + фотонные карты. При этом вторичная освещенность большинства точек не рассчитывается, а интерполируется по рассчитанным на предыдущей стадии FG - точкам. Здесь в игру вступают такие настроечные параметры FG - расчета, как Final Gather Radius и Min. Radius.
Основное назначение параметра Radius – задать предельный (максимальный) радиус, в пределах которого будет происходить поиск FG - точек для интерполяции на этапе рендеринга, и тем самым – определить число FG - точек, участвующих в интерполяции. Далеко не все FG- точки, попадающие в пределы Radius, будут использованы, а только те из них, чьи радиусы влияния содержат данную точку, или другими словами, для которых ошибка интерполяции не превысит заданную величину. Поэтому, при увеличении Radius, увеличение числа FG - точек, участвующих в интерполяции, будет происходить лишь до некоторого предельного значения. Размывания интерполируемой освещенности точки с увеличением радиуса не происходит, поскольку вклад от FG - точек зависит от их расстояния до интерполируемой точки, чем больше расстояние, тем меньше вклад.
Таким образом, увеличение Radius может приводить к повышению качества расчетов за счет увеличения количества участвующих в интерполяции FG-точек, но лишь до определенной степени. После некоторого предельного значения Radius качество интерполяции остается практически неизменным. По умолчанию, в mental ray величина Radius принята приблизительно как 1/10 величины радиуса сферы, охватывающей всю сцену.
С другой стороны, стремление разработчиков упростить рабочий интерфейс mental ray привело к тому, что Radius имеет и второе, не менее важное, назначение – его величина имеет самое прямое отношение к изменению плотности FG-точек. Чем больше Radius, тем меньше плотность FG - точек и наоборот.
Mental ray учитывает величину Radius на предварительной стадии, когда происходит отбор FG-точек. Если радиус излишне мал, он пытается увеличить плотность FG - точек так, чтобы в его пределах для любой видимой точки поверхности всегда оказалось хотя бы несколько FG-точек для интерполяции.
Таким образом, настраивая Radius, мы вынуждены балансировать между двумя противоположными возможностями. Увеличение Radius повышает качество интерполяции, но уменьшает плотность FG-точек. Уменьшение Radius повышает плотность FG-точек, но уменьшает количество точек, участвующих в интерполяции.
Хорошим инструментом для определения оптимального радиуса может быть диагностический рендер, визуально показывающий распределение плотности FG- точек, а также – информация из лога mr.
Есть сведения, что в следующей версии mental ray 3.4 функции параметра Radius будут разделены при помощи введения двух новых независимых настроечных параметров.
Min. radius принудительно заставляет mental ray использовать все FG - точки, которые попадают в его пределы. Регулируя Min. Radius можно до некоторой степени управлять сглаживанием освещения.
Хотя на предварительном этапе проводится серьезная работа по отбору и расчету FG-точек, далеко не все видимые в камеру точки поверхностей трехмерных объектов могут быть интерполированы по ним на этапе рендеринга. Все точки, которые рассчитываются методом Монте-Карло на этапе рендера, на диагностическом рендере показываются красным цветом. Основная причина возникновения такой ситуации – близость некоторых точек к границе объекта: если точка попадает достаточно близко к границе объекта, для нее может не найтись FG- точек для интерполяции, поскольку зона поиска "обрезается" границей поверхности.
Таким образом, настройка FG-расчета сводится, в основном, к настройке величин Samples и Radius. При этом рекомендуется использовать диагностический рендер для анализа распределения FG-точек. Правильная величина параметра Radius должна давать адаптивную картину распределения FG-точек – их плотность должна быть выше в тех местах сцены, где освещение меняется быстрее, а "красные" FG-точки должны быть преимущественно вблизи краев объектов.
Диагностический рендер FG-расчета. Радиус 10см, FG Samples 1000
Настройка величины accuracy (Final Gather Samples) определяет отсутствие «шума» на рендере. «Гладкое» его значение зависит от плотности фотонной карты и радиуса сбора фотонов, а также от величины FG Radius – чем он меньше, тем больше FG Samples потребуется для достижения гладкости рендера. Изменение Final Gather Samples также оказывает влияние на плотность FG-точек – чем выше количество Samples, тем выше плотность FG-точек.
Хочу особо подчеркнуть, что если фотонная карта настроена неправильно, то есть является излишне «пятнистой», то получить гладкий рендер даже сильным накручиванием accuracy, скорее всего, не удастся.
Дата добавления: 2015-10-28; просмотров: 86 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Интерфейс настройки фотонных карт в mr 3.3 для 3ds max | | | Свойства и использование Ambient/Reflective Ocllusion |