Алгоритм обратной трассировки лучей




Федеральное агентство по образованию

ГОУ ВПО «Уральский Федеральный Университет имени первого Президента России Б.Н. Ельцина»

Кафедра Интеллектуальных Информационных Технологий

 

 

курсовая работа

«модель атома лития»

по дисциплине компьютерная графика

 

 

Исполнитель:

_____________Солодянкин Д.А.

(группа ФО-391001)

«___» ___________2011 г.

Нормоконтролёр:

_____________Мокрушин А.А.

«___» ___________2011 г.

Проверил:

_____________Кругликов А.С.

«___» ___________2011 г.

 

 

Екатеринбург

2011

Федеральное агентство по образованию

ГОУ ВПО «Уральский Федеральный Университет имени первого Президента России Б.Н. Ельцина»

Институт фундаментального образования

Кафедра Интеллектуальных Информационных Технологий

 

Формулировка задания:


Оглавление

Постановка задачи. 3

Описание решения. 4

Выбор и обоснование используемых алгоритмов. 4

Базовые алгоритмы.. 5

Алгоритм обратной трассировки лучей. 5

Глобальная модель освещённости Уиттеда. 6

Схема работы программы.. 7

Выбор языка и среды программирования. 7

Структура классов программы.. 7

Выводы: 10

Список использованной литературы.. 11

Приложения. 12

Приложение 1 – результат работы программы.. 12

Приложение 2 – листинг. 13

 


 

Постановка задачи

Цель курсовой работы – разработка программы для реалистичной отрисовки сцены, состоящей из трёхмерных объектов. Функциональной основой программы является алгоритм обратной трассировки лучей (ray casting).

Сцена представляет собой увеличенную модель атома лития в трёхмерной графике – 3 протона, 4 нейтрона, 2 электронных орбиты и 3 электрона. Сцена строится из нескольких базовых примитивов: сфер и колец. В программе предусмотрены возможности для отрисовки плоскостей. Все фигуры задаются параметрически – без использования полигональной аппроксимации. Программа поддерживает произвольное количество используемых в одной сцене материалов, отображаемых объектов и источников света.


Описание решения

Выбор и обоснование используемых алгоритмов

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

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

Для расчета интенсивности каждого пиксела используется глобальная модель освещения Уиттеда, слегка видоизменённая для решения конкретной задачи (отрисовки нашей сцены). В программе используется аналитический способ задания объектов. Помимо ряда недостатков – необходимости писать для каждого вида объектов процедуры поиска пересечений – этот подход отличается более высокой скоростью в силу того, что при поиске пересечений, учитывая специфику объекта, можно на ранних этапах определить факт пересечения. По временным затратам это сравнимо с тестом на пересечение со сферической оболочкой, но при нахождении точки пересечения данный подход существенно выигрывает по сравнению с полигональным представлением модели как по скорости прорисовки, так и по качеству получаемого изображения.

Базовые алгоритмы

Алгоритм обратной трассировки лучей

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

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

 
 

Вектор отраженного луча вычисляется по формуле (1):

(1)

Преломлённым лучом в моей сцене я решил пренебречь по следующим причинам:

1) для ускорения вычислений;

2) ввиду отсутствия прозрачных поверхностей.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: