Метод обратной трассировки лучей
Общие сведения
Метод обратной трассировки лучей был разработан в начале 80-х годов и применялся для создания высококачественных реалистичных изображений не в реальном масштабе времени. К примеру, построение сцен на машине с процессором 80286 занимало несколько дней, а то и недель. Не смотря на такую медленную скорость сцены, качество получаемого изображения было максимально приближено к реальности. Метод обратной трассировки лучей позволяет получать такие эффекты, как отражение, преломление, затенение и т.д. Достоинство данного метода заключается также в том, что можно работать со сценами, заданными не набором треугольников для аппроксимации гладких поверхностей, а, собственно, самими этими поверхностями в математической форме. Таким образом задача построения изображения такой поверхности решается точно, а не приближённо, как если бы такая поверхность была аппроксимированна набором треугольников.
Рис. 1 |
Перед описанием самого метода обратной трассировки лучей рассмотрим как получается изображение в реальном мире при взгляде на него человека. Пусть имеется простейшая сцена, состоящая из сферы и прямоугольного параллелепипеда (рис. 1). Также пусть имеется точечный источник света. Рассмотрим свет от этого источника как поток фотонов. Так как источник света является точечным, потоки фотонов распространяются от него равномерно во все стороны. Будем считать, что среда, в которой распространяются фотоны о т источника света является однородной, таким образом фотоны движутся в ней прямолинейно и с постоянной скоростью. Рассмотрим случай, когда путь фотонам преграждает какой-либо объект, например, сфера. Часть фотонов отражается от сферы и изменяет своё направление. Часть фотонов может пройти сквозь сферу, если она прозрачна (поток фотонов преломляется). После некоторого количества отражений и преломлений небольшая часть потока фотонов попадает в глаза человеку, формируя таким образом изображение. Такую модель распространения света можно было бы построить на компьютере, но дело в том, что только очень небольшая часть фотонного потока от первоначального попадает в глаза человека. Таким образом для построения качественного изображения пришлось бы проследить пути огромно числа потоков фотонов, и лишь небольшре их число оказало бы влияние на получаемое изображение, а большая часть фотонов не попала бы в глаза человеку и расчёты, производимые для них оказались бы напрасными. Такая модель построения изображения называется прямой трассировкой лучей. В отличие от неё, в методе обратной трассировки лучей учитываются только те лучи (потоки фотонов), которые заведомо попадают в глаза человеку. Предположим, для построения изображения используется камера, которая представляет собой закрытый со всех сторон ящик, в одной стенке которого проделано малое отверстие, а на стенке, противоположной этой имеется экран (рис. 2). Лучи света, проникая сквозь отверстие, формируют изображение на экране.
Рис. 2 |
На практике удобно использовать несколько другой способ изображения (рис. 3). При таком способе получения изображения, наблюдатель расположен за экраном, на котором формируется изображения.
Рис. 3 |
При моделировании такой ситуации на компьютере, экраном является экран монитора. Луч, участвующий в формировании изображения, проводится из точки наблюдения через тот пиксель экрана, для которого в данный момент производится расчёт его цвета. Для этого луча можно рассмотреть три случая:
Луч пересекается с одним из объектов сцены. В этом случае цвет конкретного пикселя определяется цветом объекта в точке пересечения с лучом.
Луч попадает в источник света. В таком случае цвет пикселя полностью определяется цветом источника света.
Луч ни с чем не пересекается и не попадает ни в один из источников света. Тогда цвет пикселя определяется характеристиками окружающей среды и, как правило, цвет этого пикселя является постоянной величиной.
В первом случае для определения цвета объекта в точке его пересечения случом нужно определить направление, откуда могла бы прийти световая энергия. Для этого можно провести ещё два луча: отражённый и преломлённый и определить световую энергию, приносимую ими в данную точку объекта. Эти два луча также могут пересекаться с некоторыми объектами сцены. Таким образом алгоритм построения изображения методом обратной трассировки лучей является рекурсивным. Энергия приносимая отражённым и преломлённым лучами зависит от свойств поверхности в данной точке. Например, поверхность может быть зеркальной и полностью отражать все лучи, попадающие на её поверхность - в этом случае цвет такого объекта в данной точке будет определяться только световой энергией, приносимой отражённым лучом. С другой стороны, объект может быть прозрачным, тогда цвет этого объекта в данной точке определяется не только энергией отражённого луча, но и энергией преломлённого луча. Таким образом для описания того, какую долю энергии вносит отражённый и преломлённый луч в цвет объекта в данной точке можно использовать коэффициенты отражённого и преломлённого лучей. Объект может также обладать ещё одним свойством - диффузным отражением. При диффузном отражении свет, попадающий в некоторую точку объекта рассеивается во все стороны с одинаковой интенсивностью и освещённость объекта в этой точке зависит лишь от доли площади объекта видимой наблюдателем, а также от того, какие лучи могут отражаться, а какие поглощаться объектом (собственный цвет объекта).
Возникает вопрос, как задать освещённость объекта в конкретной точке? Для этого следует учесть, что свет может рассматриваться е только как поток фотонов, но и как электромагнитная волна определённой длины. Но произвольный луч света может состоять из набора таких электромагнитных волн разной длины. Причём установленно, что луч света произвольного цвета может быть задан бесконечным множеством наборов электромагнитных волн разной длины. Таким образом, не существует способа по заданному цвету однозначно определить набор волн, составляющих его. Но можно представить цвет в виде комбинации трёх электромагнитных волн с длиной, соответствующей чистому красному, зелёному и синему цветам соответственно. Поэтому при дальнейшем описании освещённость будет представляться трёхмерным вектором с координатами, соответствующими вкладам волн красного, синего и зелёного цвета, а проще говоря, координаты вектора будут представлять цветовую модель RGB, так как именно эта модель используется для представления цвета пикселя на экране.
Для построения реалистичного изображения следует также учесть, что при распространении света в какой-либо среде может иметь место его ослабление засчёт свойств среды (свет поглощается средой). Причём, это ослабление тем больше, чем большее расстояние проходит луч света.
Модель освещённости Уиттеда
Для моделирования распространения света на компьютере и для упрощения расчётов введём некоторые ограничения на используемую сцену:
Все источники света будем считать точечными.
Зависимость величины поглощения светового потока от длины волны (цвета) будем игнорировать. Будем также игнорировать зависимость коэффициента преломления от длины волны.
Поверхность любого объекта сцены может обладать отражающими и преломляющими свойствами, а также свойством диффузного отражения.
Для определения освещённости объекта в конкретной точке нужно, во-первых, определить непосредственную (первичную) освещённость, которая представляет собой световую энергию, падающую в эту точку объекта непосредственно от источников света. Для этого из данной точки объекта проводятся лучи ко всем имеющимся в сцене точечным источникам света для определения их видимости, и, если источник света является видимым, то он учитывается при расчёте освещённости для конкретной точки объекта. Во-вторых, следует определить так называемую вторичную освещённость - освещённость, которую составляют отражённые и преломлённые лучи, а также диффузное отражение. Так как для диффузного отражения невозможно определить направление, в котором в данную точку объекта попал луч света, для этого вводят фоновую освещённость, которая является постоянной для всех точек объекта и не зависит ни от чего.
Рассмотрим одну из самых простых моделей освещённости - модель Уиттеда. В соответствии с этой моделью, световая энергия, покидающая точку некоторого объекта в направлении наблюдателя, определяется следующей формулой:
где:
Ka - коэффициент фоновой
освещённости;
Ia - значение фоновой
освещённости;
Kd - коэффициент диффузной
освещённости (вклад, вносимый
диффузным отражением);
C - цвет объекта в
конкретной точке;
Ij - цвет j-го источника
света;
n - нормаль к поверхности
объекта в конкретной точке;
lj - направление на j-й
источник света;
m - количество источников
света в сцене;
Kr - вес отражённого луча;
Ir - цвет отражённого луча
(освещённость, приносимая
отражённым лучом);
br -
коэффициент поглощения для среды, в
которой распространяется
отражённый луч;
dr - расстояние от
конкретной точки объекта до точки
пересечения отражённого луча с
объектом сцены;
Ks - коэффициент первичной
освещённости;
p - коэффициент Фонга;
Kt - вес преломлённого луча;
It - цвет преломлённого
луча (освещённость, приносимая
преломлённым лучом);
bt -
коэффициент поглощения для среды, в
которой распространяется
преломлённый луч;
dt - расстояние от
конкретной точки объекта до точки
пересечения преломлённого луча с
объектом сцены.
Коэффициент Фонга определяет свойства объектов при отражении ими света и уникален для каждого материала. Существует стандартный набор коэффициентов Фонга, определяющих отражательные свойства таких материалов как металл, пластик, стекло, дерево и т.д.
Так как алгоритм обратной трассировки лучей является рекурсивным, необходимы некоторые критерии для остановки, при которой прекращается дальнейшая трассировка отражённых и преломлённых лучей. Такими критериями, как правило, являются максимальное количество проводимых отражённых и/или преломлённых лучей, а также вклад, вносимый отражённым и/или преломлённым лучом. Другими словами, если количество построенных отражённых (преломлённых) лучей больше некоторго заданного значения, то трассировка прекращается. Либо, если вклад, вносимый отражённым (преломлённым) лучом становится меньше некоторого заданного значения, то трассировка также прекращается.
Для определения направления отражённого и преломлённого лучей используются формулы, определяющие направление отражённого и преломлённого лучей для идеального случая. На рис. 4 показаны отражённый и преломлённые лучи, а также падающий луч и вектор нормали к поверхности объекта.
Рис. 4 |
Для случая идеального отражения направление отражённого луча задаётся следующей формулой:
Направление отражённого луча для идеального случая задаётся следующей формулой:
Программа Renderer в разделе Программы наглядно демонстрирует применение метода обратной трассировки лучей.