Курсовая работа: Реализация алгоритма обратной трассировки лучей для моделей с большим числом полигонов

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

Достоинством алгоритма является то, что он не требователен к памяти, в отличие от алгоритма z-буфера. А недостатком является то, что работает он сравнительно долго и не позволяет строить изображения в реальном времени.

Для ускорения алгоритма применен метод иерархических оболочек. Он позволяет сократить время работы алгоритма трассировки в десятки, а на некоторых сценах в сотни раз. Среди всех алгоритмов оптимизации данный оказался самым эффективным. Метод BSP деревьев не дал значительного ускорения, а метод порталов в случае произвольной геометрии сцены вообще не применим. Алгоритм дает наилучшие результаты в сценах, где треугольники имеют примерно одинаковые размеры, а так же в разреженных сценах (т.е. в сценах, где объекты расположены на расстоянии, гораздо большем их линейных размеров).

Для сглаживания изображения применен алгоритм закраски Фонга. Он является самым затратным по времени. Метод Гуро, например, быстрее Фонга примерно в 5 раз. Но время его выполнения от общего времени рендеринга не превышает 3 процентов. Зато он дает великолепные результаты. В частности, блики выглядят куда реалистичнее, чем если использовать метод Гуро.

2.2 Структура данных

Сцена представляется набором объектов двух типов: источников света и собственно объектов, которые необходимо визуализировать.

2.2.1 Источники света

Источники света не имеют никаких геометрических размеров, они являются точечными и не рисуются при рендеринге. Информация об источниках света хранится в массиве Svet. В i-ом элементе массива хранится информация об i-ом источнике света. Элемент массива представляет собой запись:

TLight=record

tip: integer;

lim: real;

Center: TPoint;

R,G,B: real;

DirX,DirY,DirZ: real;

end;

Поле tip содержит информацию о типе источника. Если оно равно 1, то источник светит во все стороны. Если оно равно 2, то источник светит внутри конуса, направляющая которого DirX, DirY, DirZ, а угол при вершине равен 2*Lim. Угол измеряется в радианах. Если тип источника - 3, то источник также светит в конусе, но по мере отклонения от образующей его интенсивность уменьшается и на угле Lim равна нулю.

Поле Center содержит координаты источника в глобальной системе координат.

Поля R,G,B содержат интенсивность источника по красной, зеленой и синей компоненте. Они могут принимать значения от 0 до 1.

Если источник первого типа, то нет необходимости вводить поля DirX, DirY, DirZ и Lim, так как они не требуются для расчета интенсивности.

2.2.2 Объекты для визуализации

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

Objects (массив объектов), Vse (массив треугольников), Toch (массив точек).

Массив Objects

Элемент массива представляет собой запись:

TObj=record

StartT,EndT: integer;

StartG,EndG: integer;

XC,YC,ZC,R: real;

nnn,NPr: real;

end;

StartT, EndT соответствуют индексам в массиве точек. Они указывают, что точки с номером, большим или равным StartT и меньшим или равным EndT, принадлежат данному объекту.

StartG, EndG соответствуют индексам в массиве треугольников. Они указывают, что треугольники с номером, большим или равным StartG и меньшим или равным EndG, принадлежат данному объекту.

К-во Просмотров: 409
Бесплатно скачать Курсовая работа: Реализация алгоритма обратной трассировки лучей для моделей с большим числом полигонов