Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ALL

.pdf
Скачиваний:
223
Добавлен:
12.02.2018
Размер:
15.74 Mб
Скачать

Метод обратной трассировки лучей

Согласно модели Уиттеда цвет некоторой точки объекта определяется суммарной интенсивностью

I( )= KaIa( )С( ) + KdId ( )С( ) +KsIs ( ) + KrIr ( ) + KtIt ( ),

где — длина волны, С( ) — заданный исходный цвет точки объекта, Ka Kd, Ks, Kr, и Kt коэффициенты, учитывающие свойства конкретного объекта параметрами фоновой подсветки, диффузного рассеивания, зеркальности, отражения и прозрачности.

Iaинтенсивность фоновой подсветки,

Id— интенсивность, учитываемая для диффузного рассеивания,

Is — интенсивность, учитываемая для зеркальности,

Ir интенсивность излучения, приходящего по отраженному лучу,

It — интенсивность излучения, приходящего по преломленному лучу.

Интенсивность фоновой подсветки (Ia) для некоторого объекта обычно константа.

для остальных интенсивностей.

• Для диффузного отражения:

где Ii ( ) — интенсивность излучения I-го источника света, θi угол между нормалью к поверхности объекта и направлением на i-и источник света.

для зеркальности;

где p — показатель степени от единицы до нескольких сотен (согласно модели Фонга), а, — угол между отраженным лучам (обратной трассировки) и направлением на r-й источник света.

Метод обратной трассировки лучей

Интенсивности излучений, приходящих по

отраженному лучу (Ir), а также по преломленному лучу (It) умножают на коэффициент, учитывающий ослабление интенсивности в

зависимости от расстояния, пройденного лучом. Коэффициент записывается в виде е- d , где d— пройденное расстояние, параметр ослабления, учитывающий свойства среды, в которой распространяется луч.

базовая операция обратной трассировки лучей - функция ЛУЧ. вычисляет значение интенсивности для текущего трассируемого луча. Для описания

– С-подобный псевдокод.

Функция ЛУЧ представлена в схематичном и обобщенном виде. Для правильного функционирования процесса обратной трассировки необходимо предусмотреть еще некоторые действия, которые не описаны в тексте функции.

определение функции ЛУЧ рекурсивно, просто моделировать дерево лучей: сначала первичный луч, затем — порождающиеся вторичные, третичные и так далее. Весь процесс обратной трассировки для одной точки изображения представляется в виде единственной строчки

I=:ЛУЧ(1, первичный, направление проецирования, 0).

Метод обратной трассировки лучей

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

Задание первичного луча полностью определяет проекцию изображаемой сцены. при обратной трассировке лучей какие-либо преобразования координат не обязательны. Проекция получается автоматически. Это одно из проявлений универсальности метода трассировки.

В ходе трассировки лучей необходимо определять точки пересечения линии луча с объектами. Способ определения точки пересечения зависит от объекта. Так, для объектов, представленных в виде многогранников и полигональных сеток, можно использовать методы определения точки пересечения прямой и плоскости. Если пересечение луча с гранью, необходимо, чтобы найденная точка пересечения лежала бы внутри контура грани.

Известны несколько способов проверки произвольной точки на принадлежность полигону. Рассмотрим две разновидности метода (рис.).

а)

б)

Рис.. Точка является внутренней, если: а — точка принадлежит

секущему отрезку, б— число пересечений нечетно

Метод обратной трассировки лучей

Первый способ. Находятся все точки пересечения контура горизонталью, соответствующей координате Y заданной точки. Точки пересечения сортируются по возрастанию значений координат X. Пары точек пересечения образуют отрезки. Если проверяемая точка принадлежит одному из отрезков (для этого сравниваются координаты заданной точки и концов отрезков), то она является внутренней.

Второй способ. Определяется точка, лежащая на одной горизонтали с испытуемой точкой, причем требуется, чтобы она лежала вне контура полигона. Найденная внешняя точка и испытуемая являются концами горизонтального отрезка. Определяются точки пересечения данного отрезка с контуром полигона. Если количество пересечений нечетно, это значит, что испытуемая точка является внутренней [32, 33].

Если точек пересечения луча с объектами несколько, то выбирается ближайшая точка по направлению текущего луча.

В сложных сценах со многими объектами для нахождения ближайшей точки пересечения необходимо перебирать все объекты, Если каждый объект представляется многими гранями-полигонами, то нужно анализировать еще и каждую грань на предмет пересечения с лучом.

Для ускорения этого процесса используется метод оболочек [28]. Суть данного метода в том, что при переборе объектов анализируются сначала не сами объекты, а более простые формы — оболочки.

Метод оболочек

Оболочка должна удовлетворять следующим требованиям.

Во-первых, она должна охватывать объект, который должен целиком умещаться в ней. Если луч не пересекает оболочку, значит, этот же луч не пересечет объект.

Во-вторых, процедура определения пересечения луча и оболочки должна быть как можно проще, а главное, наиболее быстрой. Использование оболочек позволяет в ходе перебора объектов сразу отбрасывать те, которые заведомо не пересекаются с лучом. Но если луч пересекает оболочку, тогда ищется точка пересечения луча с объектом. Если луч пересек оболочку, то не обязательно пересечет объект — форма оболочки не совпадает с формой объекта.

В качестве оболочек можно использовать шар, параллелепипед, цилиндр и другие простые формы.

Если объектов много, то объекты (или оболочки) можно объединять в группы — для нескольких объектов одна оболочка.

Выстраивается иерархия оболочек: на нижнем уровне оболочки для одиночных объектов, на следующем уровне— оболочки оболочек и так далее.

Древовидная структура может иметь несколько уровней. Это позволяет существенно ускорить процесс перебора, сделать время работы пропорциональным (теоретически) логарифму числа объектов.

Метод оболочек можно применять не только для трассировки лучей. Этот метод является достаточно универсальным методом ускорения вычислительных процессов переборного типа.

Общие выводы по методу обратной трассировки лучей

Положительные черты:

1.Универсальность метода, его применимость для синтеза изображений достаточно сложных пространственных схем. Воплощает многие законы геометрической оптики. Просто реализуются разнообразные проекции.

2.Даже усеченные варианты данного метода позволяют получить достаточно реалистичные изображения. Например, если ограничиться только первичными лучами (из точки проецирования), то это дает удаление невидимых точек. Трассировка уже одного-двух вторичных лучей дает тени, зеркальность, прозрачность.

3.Все преобразования координат (если таковые есть) линейны, достаточно просто работать с текстурами.

4.Для одного пикселя растрового изображения можно трассировать несколько близко расположенных лучей, а потом усреднять их цвет для устранения эффекта ступенчатости (антиалиасинг).

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

Недостатки:

1.Проблемы с моделированием диффузного отражения и преломления.

2.Для каждой точки изображения необходимо выполнять много вычислительных операций. Трассировка лучей относится к числу самых медленных алгоритмов синтеза изображений.

Соседние файлы в предмете Компьютерная Графика