Модель глобального освещения с трассировкой лучей. Сфера, призма, параллелепипед. Алгоритм трассировки лучей, страница 2

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

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

В глобальной модели освещения используется модель с такими же членами рассеянного (ламбертовского диффузного) и зеркального (Фонга) отражения, как и в простой модели.

Члены, соответствующие глобальному зеркальному отражению и пропусканию, рассчитываются следующим образом:

Трассируется луч

, падающий на поверхность в точке Q.

В этой точке он отражается в направлении

и, если поверхность прозрачна, преломляется в направлении

- интенсивность света, падающего в точку Q по направлению P. Этот свет преломляется и достигает наблюдателя, находящегося в направлении - .

- интенсивность зеркально отраженного света, падающего в направлениях -

и отраженного к наблюдателю в точке Q.

- нормаль к поверхности в точке Q.

- направление на j-й источник света.

- показатели преломления среды.

- степень пространственного распределения Фонга для зеркального отражения.

- локальные векторы наблюдения и отражения. и

Тогда наблюдаемая интенсивность:

где

- коэффициенты рассеянного. диффузного и зеркального отражения.

- коэффициент пропускания.

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

Таким образом, в глобальной модели освещения предполагается, что падающий луч в точке Q отражается в направлении

и пропускается сквозь поверхность в направлении .

Это значит, что в точке Q образуется еще 2 луча, для которых нужно найти все пересечения с объектами сцены. Такой процесс повторяется, пока не останется ни одного пересечения.

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

Направление пропущенного и отраженного лучей рассчитывается по законам геометрической оптики. Отраженный луч и падающий лежат в одной плоскости, а угол падание равен углу отражения. Пропущенный луч преломляется по закону Снеллиуса.

От каждой точки пересечения луча с поверхностью к источнику света проводится теневой зонд. Если на пути зонда находится какой-либо объект и в зависимости от прозрачности этого объекта вклад этого источника в интенсивность отражения уменьшается. Для нахождения интенсивности в точке пересечения каждого луча с поверхностью надо пройти дерево в обратном направлении. Интенсивности в узлах рассчитываются с использованием модели освещения.

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

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

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