Глобальная модель освещенности. Классический raytracing

Глобальная модель освещенности. Классический raytracing

Классический raytracing, или метод трассировки лучей, предложен Артуром Аппелем (Arthur Appel) в 1968 году и дополнен алгоритмом общей рекурсии, разработанным Whitted в 1980 году. Понадобилось почти 12 лет эволюции вычислительных систем, прежде чем этот алгоритм стал доступен для широкого применения в практических приложениях. Суть метода заключается в отслеживании траекторий лучей и расчете взаимодействий с лежащими на траекториях объектами, от момента испускания лучей источником света до момента попадания в камеру. Под взаимодействием луча с объектами понимаются процессы диффузного (в смысле модели локальной освещенности), многократного зеркального отражения от их поверхностей и прохождение лучей сквозь прозрачные объекты. Таким образом, raytracing – первый метод расчета глобального освещения, рассматривающий освещение, затенение (расчет тени), многократные отражения и преломления. Различают два основных вида метода трассировки лучей: прямой – forward raytracing, и обратный – backward raytracing. Raytracing вообще не использует модели затенения. Расчет освещенности выполняется во всех точках пересечения лучей и объектов. Forward raytracing. В методе forward raytracing траектории лучей строятся от источника ко всем точкам всех объектов сцены (первичные лучи). Затем проверяется ориентация поверхности в каждой ее точке относительно источника, и если точка лежит на стороне объекта, обращенной в противоположную от источника сторону, точка из расчетов освещенности исключается. Для всех остальных точек вычисляется освещенность с помощью локальной модели освещения. Если объект не является отражающим или прозрачным, то есть поверхность объекта только диффузно рассеивает свет, траектория луча на этой точке обрывается (заканчивается). Если же поверхность объекта обладает свойством отражения (reflection) и/или преломления (refraction), из точки строятся новые лучи, направления которых точно определяются законами отражения и преломления (рис. 1).

Глобальная модель освещенности
Рис. 1

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

Очевидно, что при прямой трассировке лучей мы вынуждены выполнять расчеты для лучей, которые не попадут в камеру, то есть, проделывать бесполезную работу. По некоторым оценочным данным доля таких «слепых» лучей довольно велика. Эта главная, хотя и далеко не единственная, причина того, что метод прямой трассировки лучей считается неэффективным и на практике не используется.

Backward raytracing

Второй метод – обратной трассировки лучей, или backward raytracing. Он основывается на построении лучей от наблюдателя через плоскость экрана вглубь сцены, а не от источника. Лучи строятся по двум точкам: первая точка, общая для всех лучей – положение камеры (наблюдателя), вторая точка определяется положением пикселя на плоскости видового окна (рис. 2).

Backward raytracing
Рис. 2

Таким образом, направление каждого луча строго определено, и количество первичных лучей также известно – это общее количество пикселей видового окна. Например, если видовое окно имеет 800 пикселей по ширине и 600 пикселей по высоте, то количество лучей составит 800х600= 480 000.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *