Факультет информатики и систем управления
Кафедра "Программное обеспечение ЭВМ и информационные технологии"
Курсовой проект
по машинной графике
Расчетно-пояснительная записка
Тема:
"Реализация алгоритма обратной трассировки лучей для моделей с большим числом полигонов"
Москва 2004
Оглавление
1. Введение
2. Конструкторская часть
2.1 Обоснование использованных алгоритмов
2.2 Структура данных
2.2.1 Источники света
2.2.2 Объекты для визуализации
2.2.3 Текстуры
2.3 Алгоритм обратной трассировки лучей
2.3.1 Описание алгоритма
2.3.2 Математическая основа обратной трассировки лучей
2.3.3 Составление матрицы
2.3.4 Программная реализация
2.3.5 Определение пересечения луча с треугольником
2.3.4 Формирование отраженного луча
2.3.5 Формирование преломленного луча
2.4 Оболочки
2.4.1 Алгоритм построения иерархических оболочек
2.4.2 Алгоритм обхода оболочек в трассировке лучей
2.5 Текстурирование
2.5.1. Процедуры для работы с текстурами
2.5.2. Собственно текстурирование
2.6 Закраска Фонга
2.7 Освещение
2.7.1. Модель освещения Уиттеда
2.7.2 Диффузное отражение
2.7.3 Зеркальное отражение
2.7.4 Фоновая освещенность
2.7.5 Прозрачность
2.7.6 Процедуры расчета освещенности
3. Технологическая часть
3.1 Выбор языка программирования и обоснование выбора
3.2 Модульная структура программы
3.3 Интерфейс программы
4. Экспериментально-исследовательская часть
Тест № 1
Тест № 2
Тест № 3
Заключение
Список литературы
1. Введение В компьютерной графике на сегодняшний день большое внимание уделяется алгоритмам получения реалистических изображений. Эти алгоритмы являются самыми затратными по времени. Обусловлено это тем, что они должны предусматривать множество физических явлений, таких как преломление, отражение, рассеивание света. Профессиональные программы для кинематографа учитывают еще больше явлений (дифракцию, интерференцию, зависимость коэффициентов преломления, отражения, поглощения от длины волны падающего света, вторичное, третичное отражение света).
В моей курсовой работе для рендеринга применяется алгоритм обратной трассировки. На сегодняшний день он считается одним из лучших для формирования реалистических изображений. Его используют большинство трехмерных графических редакторов. Применяется так же алгоритм z-буфера. Но эффекты отражения и преломления, там достигаются искусственными методами и считаются не совсем точно. Подобным методом пользуются в программах, где крайне важна скорость. Примером таких программ служат компьютерные игры. Почти все они построены на использовании алгоритма z-буфера.
Целью моей курсовой было так же сделать алгоритм обратной трассировки как можно более быстрым. Для этого я применил метод иерархических оболочек. Его применение позволяет сделать время рендеринга, пропорциональным логарифму от числа объектов, а не числу объектов. Добиться с помощью этого реального времени, конечно, не удастся, но делает время ожидания приемлемым, равным порядка 5-30 секунд для 30000 треугольников на сцене.
Модуль Engine программы, может быть использован отдельно, в других программах Delphi. ............