•Определение интерполированных значений интенсивности отраженного света в каждой точке грани (цвет каждого пикселя) удобно выполнять во время цикла заполнения полигона. Рассмотрим заполнение контура грани горизонталями в экранных координатах (рис.).
•Интерполированная интенсивность I в точке (X, Y) определяется исходя из пропорции
•(I – I1)/(X – X1) = (I2 – I1)/(X2 – X1).
•Отсюда I = I1 + (I2 – I1) (X – X1)/(X2 – X1)
•Значения интенсивностей I1 и I2 на концах горизонтального отрезка – интерполяция интенсивности в вершинах:
•(I1 – Ib)/(Y – Yb) = (Ic – Ib)/(Yc – Yb),
•(I2 – Ib)/(Y – Yb) = (Ia – Ib)/(Ya – Yb),
•или
•I1 = Ib + (Ic – Ib) (Y – Yb)/(Yc – Yb),
•I2 = Ib + (Ia – Ib) (Y – Yb)/(Ya – Yb),
Рис. Заполнение контура грани
Метод Фонга
•Аналогичен методу Гуро, но при использовании метода Фонга для определения цвета в каждой точке интерполируются не интенсивности отраженного света, а векторы нормалей.
1.Определяются нормали к граням.
2.По нормалям к граням определяются нормали в вершинах. В каждой точке закрашиваемой грани определяется интерполированный вектор нормали.
3.По направлению векторов нормали определяется цвет точек грани в соответствии с выбранной моделью отражения света.
•Найдем вектор нормали в каждой точке грани. Для интерполяции используем вектора N'a, N'b и N'c., исходящие из центра координат плоскости проецирования и параллельные нормалям Na, Nb и Nc в вершинах a, b и c (рис.).
•Найдем N'1, N'2
• Рис. Интерполяция векторов нормалей
•где XNa, YNa, ZNa, XNB, YNB, ZNB, ХNc, YNc и ZNc — координаты векторов N'a, N'b и N'c.
•координаты вектора N':
•Вектор N’ параллелен вектору N для нормали в точке (X, У), поэтому его можно использовать для расчета отражения света так же, как и вектор нормали N.
Сравнение методов Гуро и Фонга
•Метод Фонга сложнее, чем метод Гуро. Для каждой точки (пикселя) поверхности необходимо выполнять намного больше вычислительных операций. Но он дает значительно лучшие результаты, в особенности при имитации зеркальных поверхностей.
•Общие черты и отличия методов Гуро и Фонга на примере цилиндрической поверхности, аппроксимированной многогранником (рис.1). Пусть источник света позади. Проанализируем закрашивания боковых граней цилиндра.
•На рис.1. на закрашенной поверхности черным цветом ребра граней — это для иллюстрации особенностей закрашивания, на самом деле никакого черного каркаса не будет, поверхность выглядит гладкой.
•Основные отличия – закрашивание передней грани. Она перпендикулярна направлению лучей света. Поэтому нормали в вершинах этой грани располагаются симметрично — образуют попарно равные по абсолютной величине углы с лучами света.
•Для метода Гуро - одинаковые интенсивности в вершинах передней грани и для любой точки внутри этой грани интенсивность одинакова (для линейной интерполяции).
•Все точки передней грани имеют одинаковый цвет, что неправильно.
•Метод Фонга дает правильное закрашивание. Если интерполировать векторы нормалей передней грани, то по центру будут интерполированные нормали, параллельные лучам света (рис. 2).
•По методу Фонга центр передней грани будет светлее, чем края.
•Рис.. Отличия закрашивания Фонга и Гуро
•Рис. 2. Интерполяция нормалей дает более точный результат
Преломление света
•Законы преломления света учитывают при построении прозрачных объектов.
•Модель идеального преломления. Луч отклоняется на границе двух сред, падающий луч, преломленный луч и нормаль лежат в одной плоскости (и зеркально отраженный луч).
•Угол между падающим лучом и нормалью - 1, угол между нормалью и преломленным лучом - 2. закон Снеллиуса для углов
•n1 sin а1 = n2 sin а2,
•где n1 и n2 — абсолютные показатели преломления сред.
•На рис. 1 пример отклонения луча при преломлении. Границы раздела сред - две
параллельные плоскости (толстое стекло) . Угол а1 = а4 а угол а2 = а3 – луч параллельно смещается. Смещение зависит от толщины и соотношения показателей преломления сред.
•Треугольная призма. Границы сред - непараллельные плоскости (рис. 2). Прозрачные объекты могут иметь и криволинейные поверхности – линзы
•Для вакуума абсолютный показатель преломления = 1. Для воздуха =1.00029, для воды
=1.33, для стекла разных сортов: 1.52 (легкий крон), 1.65 (тяжелый крон) [13]. Показатель преломления зависит от состояния вещества, температуры. На практике используют отношение показателей преломления двух сред (n1/n2) - относительный показатель преломления.
•Еще одним важным аспектом преломления является зависимость отклонения луча от длины волны. (рис. 3). Чем меньше длина волны, тем больше
•отклоняется луч при преломлении.
•Фиолетовый ( = 0.4 мкм) луч отклоняется больше всего,
•а красный ( = 0.7 мкм) — меньше всего.
•для стекла показатель преломления в видимом спектре
•изменяется от 1.53 до 1.51 [13].
Рис. 1. Преломление луча
Рис. 2. Преломление в треугольной призме
Рис. 3. Преломление зависит от длины волны
Вычисление вектора преломленного луча
•Заданы два единичных вектора: S1 — это радиус-вектор, направленный на источник, и N1 — радиусвектор нормали к границе раздела двух сред. Коэффициенты преломления для данных сред n1 и n2 (или отношение их) известны. Требуется найти единичный радиус-вектор преломленного луча T1,
•Для решения этой задачи выполним геометрические построения (рис.).
•Нанесем еще несколько радиус-векторов. Вектор T1 равен сумме двух векторов:
•T1 = NT + B.
•Найдем вектор NT. Он противоположен по направлению вектору нормали,
•а его длина равна |T1 cos 2= cos 2 (по условию задачи T1 – единичный).
•NT = - N1 cos 2
•
Определим cos 2. из закона преломления sin 2= n sin 1 где n = n1 / n2.
•
Воспользуемся тождеством cos2 + sin2 = 1. Тогда
• Рис. Преломление
•или
•Значение cos 1 можно выразить через скалярное произведение единичных векторов S1 и N1, то есть cos1 = S1 N1. Тогда для вектора NT:
• для вектора В. Он располагается на одной прямой с вектором А, причем А = S1 – Ns. Учитывая, что вектор
Ns = N1.COS 1, то А = S1– N1.COS 1. Так как COS 1 = S1 N1, то А = S1– N1 (S1– N1).
• длина вектора А = sin 1, а длина вектора В = sin 2 то
• откуда |B| = n|A|. Учитывая взаиморасположение векторов А и B, получим В= - n А = n (N1 (S1– N1) – S1).
• выражение для единичного радиус-вектора луча преломления
•Если подкоренное выражение < 0, то преломленного луча нет - полное внутреннее отражение [13, 30,32].
•Это решение задачи в векторном виде. Используя полученное выражение, можно записать координаты вектора T1.
Трассировка лучей
•Методы трассировки лучей на сегодня наиболее мощные и универсальные методы создания реалистичных изображений.
•Окружающие объекты обладают по отношению к свету свойствами:
1.излучают;
2.отражают и поглощают;
3.пропускают сквозь себя.
•Свойства можно описать набором характеристик. Излучение - интенсивностью, направленностью, спектром. Оно может исходить от условно точечного источника или протяженного. Распространение излучения вдоль узкого луча, конусом, равномерно во все стороны и т.д.
•Свойство отражения (поглощения) - характеристиками диффузного рассеивания и зеркального отражения.
•Прозрачность - ослаблением интенсивности и преломлением.
•Распределение световой энергии по возможным направлениям световых лучей можно отобразить с помощью векторных диаграмм, в которых длина векторов соответствует интенсивности (рис. 1-3).
•В литературе упоминается обратное, антизеркальное отражение, у которого максимум интенсивности отражения соответствует направлению на источник. Обратным зеркальным отражением обладают некоторые виды растительности на поверхности Земли, наблюдаемые с высоты, например, рисовые поля [9].
•Два крайних, идеализированных случая преломления на рис. 3.
•В общем случае каждый объект описывается сочетанием перечисленных выше трех свойств.
•а)
б)
•Рис. 1. Излучение: а — равномерно во все стороны, б— направленно
•Рис. 2. Отражение: а — идеальное зеркало, б— неидеальное зеркало б — диффузное, г — сумма диффузного и зеркального, д — обратное, е — сумма диффузного, зеркального и обратного
•а)
б)
•Рис. 3. Преломление: а—идеальное, б— диффузное
Трассировка лучей
•Рассмотрим, как формируется изображение сцены, включающей в себя несколько пространственных объектов.
•Будем полагать, что из точек поверхности (объема) излучающих объектов исходят первичные лучи света— освещают все остальное.
•Световой луч в свободном пространстве распространяется вдоль прямой линии. В геометрической оптике полагают, что луч света распространяется прямолинейно до тех пор, пока не встретится отражающая поверхность или граница среды преломления.
•От источников излучения исходит по различным направлениям бесчисленное множество первичных лучей. Некоторые уходят в свободное пространство, некоторые попадают на другие объекты.
1.Если луч попадает в прозрачный объект, то, преломляясь, идет дальше, часть световой энергии поглощается.
2.Если на пути луча встречается зеркально отражающая поверхность, то он также изменяет направление, а часть световой энергии поглощается.
3.Если объект зеркальный и одновременно прозрачный, то будет уже два луча—луч расщепляется.
•В результате действия на объекты первичных лучей возникают вторичные лучи. Бесчисленное множество вторичных лучей уходит в свободное пространство, но некоторые из них попадают на другие объекты. Так, многократно отражаясь и преломляясь, отдельные световые лучи приходят в точку наблюдения. В точку наблюдения может попасть и часть первичных лучей. Таким образом, изображение сцены формируется некоторым множеством световых лучей.
•Цвет отдельных точек определяется спектром и интенсивностью первичных лучей источников излучения, а также поглощением световой энергии в объектах, встретившихся на пути соответствующих лучей.
Метод обратной трассировки лучей
•Непосредственная реализация данной лучевой модели формирования изображения затруднительна.
•В таком алгоритме необходимо предусмотреть перебор всех первичных лучей и определить те из них, которые попадают в объекты и в камеру. Затем выполнить перебор всех вторичных лучей, и также учесть только те, которые попадают в объекты и в камеру. И так далее.
•Можно назвать такой метод прямой трассировкой лучей.
•Метод обратной трассировки лучей позволяет значительно сократить перебор световых лучей. Метод разработан в 80-х годах, основополагающими считаются работы Уиттеда и Кэя [28].
•Согласно этому методу отслеживание лучей производится не от источников света, а в обратном направлении — от точки наблюдения. Учитываются только лучи, которые вносят вклад в формирование изображения.
•Предположим, что плоскость проецирования разбита на множество квадратиков— пикселов. Выберем центральную проекцию с центром схода на некотором расстоянии от плоскости проецирования.
Рис. Схема обратной трассировки лучей
•Проведем прямую линию из центра схода через середину квадратика (пикселя) плоскости проецирования (рис.) – первичный луч обратной трассировки.
•Если прямая линия луча попадает в один или несколько объектов сцены, то выбираем ближайшую точку пересечения.
•Для определения цвета пикселя изображения нужно учитывать свойства объекта, а также то, какое световое излучение приходится на соответствующую точку объекта.
Метод обратной трассировки лучей
•Если объект зеркальный (даже частично), строим вторичный луч — падения, луч отражения предыдущий, первичный луч. Вектор отраженного луча известен, чтобы найти вектор падающего луча используем формулу зеркального отражения, но определяя вектор луча падения как отраженный луч. (отражение наоборот).
1.Для идеального зеркала (1-му отраженному лучу соответствует 1 падающий луч) достаточно проследить очередную точку пересечения вторичного луча с объектом.
2."неидеальное зеркало". Отраженному лучу соответствует несколько падающих (или один падающий - несколько отраженных), образующих конус, с осью вдоль линии падающего луча идеального зеркала. Конус соответствует некоторому закону распределения интенсивностей, простейший описывается моделью Фонга — cos угла, возведенный в некоторую степень. резко усложняет трассировку.
3.Если объект прозрачный, строим новый луч, который при преломлении дает предыдущий луч. Для расчета вектора луча можно применить формулы для вектора луча преломления, считая, что преломление происходит в обратном направлении (рис.).
4.Если объект обладает свойствами диффузного отражения и преломления, то, как и для неидеального зеркала, необходимо трассировать лучи, приходящие от всех имеющихся объектов.
5.Для диффузного отражения интенсивность отраженного света пропорциональна cos угла между вектором луча от источника света и нормалью. Источник света - видимый из точки объект, способный передавать свет.
6.Текущий луч обратной трассировки не пересекает объект,
•трассировка для этого луча заканчивается.
•Рис. Обратная трассировка для объектов, обладающих свойствами зеркального отражения и преломления
Метод обратной трассировки лучей
•При практической реализации метода обратной трассировки вводят ограничения. Примеры ограничений [28, 32].
•1. выделим объекты, которые назовем источниками света. Источники света могут излучать свет, но не могут его отражать или преломлять. Будем рассматривать только точечные источники.
•2. Свойства отражающих поверхностей описываются суммой 2х компонент —диффузной и зеркальной.
•3. зеркальность также описывается двумя составляющими. Первая (reflection) учитывает отражение от объектов, не источников света. Строится только 1 зеркально отраженный луч r для дальнейшей трассировки. Вторая (specular) означает световые блики от источников света. Направляются лучи на все источники света и определяются углы, образуемые лучами с зеркально отраженным лучом обратной трассировки (r). При зеркальном отражении цвет точки поверхности определяется цветом того, что отражается. В простейшем случае зеркало не имеет собственного цвета поверхности.
•4. При диффузном отражении учитываются только лучи от источников света. Если луч, направленный на данный источник света, закрывается другим объектом, значит, данная точка - в тени. При диффузном отражении цвет точки определяется собственным цветом поверхности и цветом источников света.
•5. Для прозрачных (transparent) объектов не учитывается зависимость коэффициента преломления от длины волны. Иногда прозрачность моделируют без преломления, направление преломленного луча t совпадает с направлением падающего луча.
•6. Для учета освещенности объектов светом, рассеиваемым другими объектами, вводится фоновая составляющая (ambient).
•7. Для завершения трассировки вводят некоторое пороговое значение освещенности, либо ограничивают количество итераций.