Лекция 13 Метод трассировки лучей Астана 2004 Трассировка лучей через сферическую каплю воды Луч 7 -- луч Декарта [1637] Прямая трассировка лучей Каждый источник света испускает лучи света в окружающее его пространство. Эти лучи распространяются в пространстве и часть из них покидает сцену (не внося никакого вклада в возникающее изображение), а часть падает на поверхности различных объектов сцены. Попав на поверхность объекта каждый луч порождает вторичные отраженные и преломленные лучи Часть лучей (очень небольшая!) попадает в глаз объектив камеры, формируя там изображение сцены. Обратная трассировка лучей Будем отслеживать луч в обратном направлении – из объектива фотокамеры через заданный пиксел экрана. Обратная трассировка лучей отслеживает только лучи, вносящие значительный вклад в изображение Диффузное и зеркальное отражения r i 2i, nn Идеальное преломление c v v – скорость света в среде c – скорость света в вакууме t i Ci 1 C 1 n 2 2 i Ci cos i i, n i t Полное внутреннее отражение Для некоторых углов i падения при выходе из более плотной среды в менее плотную 1 выражение под корнем может получиться отрицательным: 1 C 1 0 2 2 i Это соответствует случаю полного внутреннего отражения Диффузное преломление Световая энергия равномерно рассеивается по всем направлениям соответствующего полупространства Коэффициенты Френеля Доля отраженной энергии для диэлектрических материалов (по отношении к падающей энергии) описывается при помощи коэффициентов Френеля (Fresnel): 1 cos i cos t Fr ( , ) 2 cos i cos t 2 cos i cos t cos i cos t Доля преломленной энергии (если не происходит полного внутреннего отражения): 1 Fr , 2 Микрофасетная модель Поверхность объекта считается состоящей из множества бесконечн малых случайно ориентированных идеальных микрозеркал n – усредненная нормаль h – нормаль к микрограни D – плотность распределения угла между n и h D Ce m 2 BRDF (1/2) Доля световой энергии, покидающей точку Р в направлении вектора v и приходящей в эту точку вдоль направления l, задается следующей формулой: Fr , D G n, v, l BRDF v, l , n n, l n, v BRDF -- Bidirectional Reflection Distribution Function Затеняющее влияние соседних граней: 2n, h n, v 2n, h n, l Gl , v, h, n min 1, , v, h v, h BRDF (2/2) Доля световой энергии, покидающей точку Р в направлении вектора v вычисляется как интеграл по всем направлениям: I P, v BRDF P, v, l , nI P, l dl l ,n 0, l 1 В большинстве случаев необходимости интегрировать по всей полусфере в большинстве случаев нет – основная световая энергия приходит из очень небольшого числа направлений, суммарный вклад всех остальных направлений крайне незначителен. Основная модель трассировки лучей (1/2) 1 Будем считать, что источники света являются либо точечными, либо направленными. 2. Будем разделять (обрабатывать отдельно) первичную и вторичную освещенность. 3 Будем игнорировать зависимость коэффициентов преломления от длины волны 4. Будем считать, что непосредственная освещенность точки может быть представлена в виде суммы диффузной (diffuse) и зеркальной (specular) частей. 5. Для расчета вторичной освещенности, идещей за счет процессов отражения и преломления, будем считать, что имеет место лишь идеальное отражение и преломление. Основная модель трассировки лучей (2/2) li Конечное число направлений – направление на i-ый источник света, направление отраженного луча r и направление преломленного луча t. Модель освещения (1/2) Fr , D G I K a I a C K d C I li n, li K s I li n, li n, v i i K r I r Fr , r e r d r K t I t 1 Fr , t e t dt I li - интенсивность фонового освещения; I a - интенсивность i-го источника света; I r - интенсивность, приходящая по отраженному лучу; I t - освещенность, приносимая преломленным лучом; C - цвет в точке P; K a - коэффициент фонового освещения; K d - коэффициент диффузного освещения; Модель освещения (2/2) Kr Ks Kt n li r t dr dt r t - - вклад отраженного луча; коэффициент зеркального освещения; вклад преломленного луча; вектор внешней нормали в точке Р; единичный вектор направления из точки Р на i-й источник света; угол отражения (для отраженного луча); угол преломления; расстояние, пройденное отраженным лучом; расстояние, пройденное преломленным лучом; коэффициент ослабления для отраженного луча; коэффициент ослабления для преломленного луча. Модели Холла и Уиттеда Модель Холла: I K a I a C K d C I li n, li i K s I li Fr , i n, hi K s I r Fr , r e r d r p i K t I t 1 Fr , t e t d r . Модель Уиттеда: I K a I a C K d C I li n, li i K s I li n, hi K s I r e r dr K t I t e t d r . k i Дерево лучей Затенение объектов Алгоритм трассировки лучей 1. Через каждый пиксел картинной плоскости выпускается луч в сцену и ищется точка его ближайшего пересечения с объектами сцены. Из этой точки выпускаются лучи ко всем источникам света (для определения их видимости), также выпускаются отраженный и преломленный лучи. 2. Для определения световой энергии, приходящей вдоль отраженного и преломленного лучей, каждый из этих лучей трассируется для определения точки ближайшего пересечения. Затем снова может потребоваться трассировки возникающих отраженных и преломленных лучей. 3. Критерии прекращения рекурсии: заданный уровень рекурсии или заданный вес луча. Объекты CSG R org t dir , t 0 – луч A B R A R B R 1. Найдем пересечение луча с каждым из объектов. 2. Применим к полученному семейству отрезков требуемую теоретико-множественную операцию. CSG и нормали При построении результата теоретико-множественной разности двух объектов необходимо отслеживать правильное направление нормали Текстурирование Текстура определяет зависимость одного или нескольких параметров уравнения освещенности от текстурных координат (u,v) или (u,v,w). Закон наложения текстуры на поверхность объекта: P : x, y, z u, v P : x, y, z u, v, w Параллельное, цилиндрическое и сферическое проецирование: Процедурные текстуры Процедурная текстура определяет алгоритм вычисления одного или нескольких параметров по координатам (x,y,z) Пример: текстура дерева. C x, y, z lerp C1 , C2 ,0.5 0.5 * sin x2 y2 Для большей реалистичности к текстуре желательно добавить шум. 1. Шум должен быть случайным 2. Шум должен быть функцией точки (x,y,z) Шумовая функция Перлина noise x, y, z x 1 y 1 z 1 x i, y j , z k ix j y k z ijk ijk u, v, w u v w ijk , u, v, w t 2 t 3 t 1, t 1, 3 2 t 0, t 1 ijk - случайные единичные вектора, заданные в узлах целочисленной сетки T Примеры процедурных текстур C x, y, z lerp C1 , C2 , sin x 2 y 2 turbulence p Cx, y, z f sin x turbulence p Функция Turbulence 1 turbulence p, f min , f max noise 2 p i 2 i:2i f min , f max i Bump maps Оптимизация трассировки лучей Использование ограничивающих тел: Использование иерархии ограничивающих тел: