Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Mental ray 3.3 для 3ds max.docx
Скачиваний:
5
Добавлен:
01.09.2019
Размер:
9.59 Mб
Скачать

1. Построение 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 луч на каждый пиксел).

2. Предварительная стадия расчета 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 отображаются как точки зеленого цвета.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]