Глобальная модель освещения.
Модель освещения предназначена для того, чтобы рассчитать интенсивность отражённого к наблюдателю света в каждой точке (пикселе) изображения. Она может быть локальной или глобальной. В первом случае во внимание принимается только свет, падающий от источника (источников), и ориентация поверхности. Во втором учитывается также свет, отражённый от других объектов сцены или пропущенный сквозь них. Глобальная модель воспроизводит чрезвычайно важные эффекты, такие как преломление и отражение. Глобальная модель освещения Рассмотрим модель освещения Уиттеда. Воспользуемся моделью с такими же членами рассеянного и ламбертовского диффузного отражения, а также зеркального отражения Фонга, как и в локальной модели освещения. Члены, соответствующие глобальному зеркальному отражению и пропусканию, рассчитываются по правилу, показанному на. Здесь трассируется луч v, падающий на поверхность в точке Q. В этой точке он отражается в направлении r и, если поверхность прозрачна, преломляется в направлении p. Здесь It - интенсивность света, приносимая в точку Q преломлённым лучом. Этот свет преломляется и достигает наблюдателя, находящегося в направлении (- v). Аналогично Is - интенсивность зеркально отражённого света, падающего в направлении (- r) и отражённого к наблюдателю в точке Q, h - показатель преломления среды. Тогда наблюдаемая интенсивность I выражается формулой (2.16) где ka, kd, ks - коэффициенты рассеянного, диффузного и зеркального отражения; kt - коэффициент пропускания; n - нормаль к поверхности в точке Q; Lj - направление на j-ый источник света; R и S - локальные векторы наблюдения и отражения; p - степень пространственного распределения Фонга для зеркального отражения. В общем случае коэффициенты ka, kd, ks, kt зависят от угла падения и длины волны. Две суммы по j в уравнении - это диффузное и зеркальное отражение от множества источников. 4. Трассировка лучей. Название метода - «трассирование лучей» - происходит от слова «путь» (трасса), что связано с моделированием геометрического пути каждого светового луча, участвующего в построении изображения. Процесс моделирования основывается на законах геометрической оптики, таких как законы преломления, отражения, прямолинейности, обратимости хода световых лучей и др. Некоторые из них достаточно подробно рассмотрены в пункте 0. Прямая и обратная трассировка лучей. Свет можно рассматривать как поток частиц (фотонов), движущихся в однородной среде равномерно и прямолинейно. При переходе из одной среды в другую могут происходить отражение и преломление света. Рассмотрим, каким путём распространяется свет от источника до попадания в глаза наблюдателя, где и происходит формирование изображения. Выпустим из источника света пучок фотонов и проследим их дальнейшее распространение. Каждый фотон будет двигаться вдоль луча, выходящего из источника света, до попадания на поверхность ближайшего объекта. В простейшем случае при попадании на поверхность происходит отражение, после чего фотон снова распространяется вдоль некоторого (другого) луча, но теперь уже выходящего из точки падения на поверхность соответствующего объекта. Подобный процесс может повторяться многократно. Такое отслеживание выпущенных фотонов называется прямой трассировкой лучей. Оно является физически корректным и позволяет строить изображение сцены. Однако для достижения достаточно высокого качества требуется отследить (оттрассировать) огромное количество фотонов, что требует огромных вычислительных затрат. Это связано с тем, что лишь крайне незначительная часть выпущенных фотонов достигает в конце концов глаза наблюдателя. Кроме того, часть фотонов перед попаданием в глаз претерпевает столько отражений и преломлений, что уже не в состоянии оказать сколько-нибудь значительного влияния на строящееся изображение. В результате огромная доля работы оказывается проделанной впустую. Чтобы избежать этого, можно отслеживать лишь те фотоны, которые заведомо вносят существенный вклад в изображение. Это фотоны, попадающее в конце концов в глаз наблюдателя. Поскольку, выпуская фотоны из источника света, нельзя заранее сказать, какие из них попадут в глаз наблюдателя, единственным приемлемым вариантом является отслеживание распространения фотонов в обратном направлении - из глаза к источнику света. Этот подход называется обратной трассировкой лучей. Каждая поверхность описывается следующей структурой данных: параметры, полностью описывающие форму поверхности; I - цвет поверхности; SP - свойства поверхности; M1 - материал по одну сторону поверхности; M2 - материал по другую сторону поверхности;
Свойства поверхности (Surface Properties) описываются структурой: Ka - коэффициент диффузного отражения рассеянного света; Kd - коэффициент диффузного отражения; Ks - коэффициент зеркального отражения; Kt - коэффициент пропускания; p - коэффициент Фонга.
Материал (Material) представлен структурой: h - коэффициент преломления; Kabs - коэффициент поглощения.
В алгоритме используется стек лучей, каждый элемент которого содержит следующие сведения о луче:
В глобальной модели освещения предполагается, что падающий луч v в точке Q отражается в направлении r и пропускается сквозь поверхность в направлении p. Это значит, что в точке Q образуются ещё два луча. (Расчёт направления отражённого луча производится в п. 0, а преломлённого - в п. 0.) Этот процесс повторяется, пока не останется ни одного пересечения лучей с объектами сцены. В результате получается так называемое дерево лучей. Каждый узел (вершина) дерева представляет собой пересечение луча с поверхностью. Из каждого луча исходят две ветви: левая, порождённая отражением, и правая - преломлением. Пример такого дерева показан на Ошибка! Источник ссылки не найден.. Ветвь кончается, когда луч покидает сцену. Для того, чтобы определить интенсивность в каждом пересечении луча с поверхностью (в каждой вершине дерева), надо пройти дерево в обратном направлении. Интенсивность в узлах рассчитывается в соответствии с моделью освещения, причём для каждого следующего луча она ослабляется с расстоянием между точками пересечения. После прохода всего дерева получается окончательная интенсивность пиксела. Построение оканчивается, когда все лучи уходят за пределы сцены, но, так как алгоритм является рекурсивным, дерево трассировки луча может быть бесконечно глубоким. В качестве критериев остановки обычно выступают отсечение по глубине (когда исчерпан выделенный объём памяти) и отсечение по весу (каждое отражение и преломление уменьшают вклад луча в строящееся изображение, и как только этот вклад оказывается ниже некоторого заданного уровня, рекурсия прекращается). Для того, чтобы включить в алгоритм тени, надо из каждого пересечения луча с поверхностью направить ко всем источникам Lj теневые зонды. Если на этом направлении между данной точкой и источником лежит другой объект, то точка относительно этого источника лежит в тени и его вклад в локальное диффузное и зеркальное отражение уменьшается. Если поверхность, лежащая на пути луча, непрозрачна, то свет источника вообще не попадает на поверхность, а если тень отбрасывается прозрачной поверхностью, то свет ослабляется в зависимости от её свойств.
|