exam44 - MiAneko24/bmstu-cg GitHub Wiki
Модель освещения предназначена для расчёта интенсивности отражённого к наблюдателю света в каждой точке изображения. Модель может быть глобальной или локальной.
- Локальная модель - учитывается только свет от источников и ориентация поверхности;
- Глобальная модель - учитывается ещё и свет, отражённый от других поверхностей или пропущенный через них.
На рисунке сфера, треугольная призма и параллелепипед непрозрачны. Их поверхность зеркальна.
Если наблюдатель смотрит из точки обзора 0 в точку 1, то он также видит точку 2 на призме, несмотря на то, что призма загорожена параллелепипедом. В этом случае изображение, получаемое вокруг точки 1, перевёрнуто в силу того, что оно получается после одного отражения.
Если же наблюдатель смотрит в точку 1', то он видит не только точку 3' на призме, но и точку 2' на параллелепипеде. При этом точка 3' видима после одного отражения от сферы, в силу чего на сфере будет видно два изображения призмы. Второе изображение будет менее интенсивно. Более того, в сфере отражается обратная сторона параллелепипеда. Несмотря на то, что она освещается лишь отражённым светом, она всё равно видима наблюдателю.
Глобальная модель освещения является частью алгоритмов выделения видимых поверхностей путём трассировки лучей.
Метод Потметсила состоит из двух шагов:
- Построение изображения;
- Постпроцессинг;
Во время первого этапа с помощью метода трассировки строится "простое" изображение по выборочным точкам (т.е. изображение для камеры с маленьким отверстием). Для каждого пиксела хранятся данные о глубине z, интенсивности RGB и видимых поверхностях.
Во время второго шага каждая точка преобразуется в круг согласно законам геометрической оптики. Распределения размеров интенсивностей зависят от значения z.
Уиттед использует те же модели рассеянного, диффузного и зеркального отражения Фонга, что и локальная модель.
Компоненты, соответствующие глобальному зеркальному отражению, рассчитываются по правилу, описанному ниже:
Пускай трассируется луч v, падающий на поверхность в точку Q. В этой точке он отражается в направлении r, и, если поверхность прозрачна, преломляется в направлении p. Здесь It - интенсивность света в направлении p. Этот свет преломляется и достигает наблюдателя в направлении v.
Аналогично, Is - интенсивность зеркально отражённого света, падающего в направлении r и отражённая наблюдателю в точку Q. n - нормаль к поверхности в точке Q. Lj - направление на j-й источник света. S, R - локальные векторы наблюдения и отражения. η - показатель преломления среды, m - степень пространственного распределения Фонга для зеркального отражения.
Наблюдаемая интенсивность выражается формулой:
Здесь ka, kd, ks - коэффициенты рассеянного, диффузного и зеркального отражений, а kt - коэффициент пропускания.
В глобальной модели освещения предполагается, что падающий луч v в точке Q отражается в направлении r и проходит сквозь поверхность в направлении p. Таким образом, в точке образуется ещё два луча. для которых нужно найти все пересечения с объектами. Процесс повторяется до тех пор, пока не останется ни одного пересечения.
Пусть v - падающий луч, r - отражённый, а p - преломлённый. Пропущенный луч высчитывается по закону Снеллиуса:
Здесь kn - отношение показателей преломления, n - вектор единичной нормали в направлении падающего луча.
По итогу, для расчёта результирующей интенсивности луча нужно обойти дерево в обратном направлении, учитывая ослабление луча при каждом отражении.
В теории, глубина дерева может быть любой, но его построение можно прерывать при достижении определённого уровня или при исчерпании запаса памяти.
Если мы хотим включить в алгоритм обработку теней, то нужно из каждого пересечения луча с поверхностью направить ко всем источникам Lj теневые зонды.
Если на направлении между точкой и источником света лежит другой объект, то точка относительно этого источника лежит в тени и его вклад в локальное и диффузное отражение этого источника уменьшается.
Если поверхность, лежащая на пути луча, непрозрачна, то свет вообще не попадает на поверхность.
Если тень отбрасывается прозрачной поверхностью, то свет ослабляется в зависимости от её свойств.
Теневые зонды:
Для передачи данных об отражённом и пропущенном свете применяется стек магазинного типа. Стек содержит в себе в каждый момент только часть дерева (как вариант, самую длинную предполагаемую ветвь). При переполнении стека алгоритм рассчитывает интенсивность исходного луча, используя имеющиеся компоненты в точке падения.
Содержание стека для каждого луча:
- Идентификатор луча;
- Тип луча (v - из глаза, r - отражённый, p - преломлённый);
- Идентификатор исходного луча;
- Тип исходного луча;
- Флаг пересечения (1, если есть пересечения, 0 - иначе);
- Указатель объекта (положение объекта, с которым луч пересекается);
- Координаты пересечения;
- Направляющие косинусы луча;
- d (расстояние от пересечения исходного до пересечения данного лучей);
- It (интенсивность пропущенного света в направлении луча);
- Is (интенсивность зеркально отражённого света в направлении луча).
- Модель освещения для алгоритма трассировки луча с использованием глобальной модели освещения
- Глобальная модель освещения с трассировкой лучей
Следующий вопрос: 45. Определение направления преломленного луча.
Предыдущий вопрос: 43. Глобальная модель освещения с трассировкой лучей.