
- •Глава 9. Описание и характеристика поверхностей 3
- •Глава 14. Трассировка лучей 82
- •Глава 15. Цвет в компьютерной графике 90
- •Глава 16. Сжатие графических изображений 96
- •Глава 9. Описание и характеристика поверхностей
- •9.1. Описание поверхностей
- •Параметрическое описание
- •Описание неявными функциями
- •Поточечное описание
- •Фрактальное описание
- •9.2. Характеристики поверхностей
- •Поверхности 1-го порядка
- •Поверхности 2-го порядка
- •Фрактальные поверхности
- •9.3. Моделирование деформации трехмерных полигональных поверхностей в режиме реального времени
- •Метод деформации на основе использования неявного задания поверхности объекта
- •Метод деформации плоских протяженных объектов
- •Метод деформации тела, заданного полигональной сеткой
- •9.4. Триангуляция поверхностей
- •Уровень детализации (lod)
- •Глава 10. Получение реалистичных изображений
- •10.1. Методы создания реалистических изображений
- •Перспективные проекции
- •Передача глубины яркостью
- •10.2. Перспективные изображения
- •Глава 11. Проецирование
- •11.1. Основные виды проекций
- •Параллельные проекции
- •Центральные проекции
- •11.2. Математическое описание прямоугольных проекций
- •11.3. Математическое описание косоугольных проекций
- •11.4. Математическое описание перспективной проекции
- •11.5. Задание произвольных проекций. Видовое преобразование.
- •Глава 12. Алгоритмы удаления скрытых линий и поверхностей
- •12.1. Общие сведения об удалении скрытых линий и поверхностей
- •12.2. Алгоритм сортировки по глубине (оп)
- •12.3. Алгоритм, использующий z-буфер (пи)
- •12.4. Алгоритм построчного сканирования (пи)
- •12.5. Алгоритм разбиения области
- •12.6. Алгоритм плавающего горизонта
- •12.8. Алгоритм трассировки лучей
- •12.9. Иерархический z—буфер (смешанный тип)
- •Глава 13. Свет в компьютерной графике
- •13.1. Общие сведения о свете.
- •13.2. Модель освещения.
- •Свойства объектов
- •Отражение диффузное
- •Зеркальное отражение
- •Пропускание света (прозрачность)
- •13.3. Закраска полигональных сеток
- •Однотонная закраска
- •Интерполяция интенсивностей (метод Гуро)
- •Интерполяция векторов нормали (метод Фонга)
- •13.4. Тени
- •Источник света в бесконечности
- •Локальный источник
- •13.5. Фактура. Нанесение узора.
- •Нанесение узора на поверхность. Регулярная текстура.
- •Нанесение узора на поверхность. Стохастическая текстура.
- •13.6. Создание неровностей на поверхности.
- •Использование карт высот
- •Метод возмущения нормали
- •Использование фрактальных поверхностей
- •13.7. Фильтрация текстур
- •13.8. Полутоновые изображения
- •Глава 14. Трассировка лучей
- •14.1 Метод прямой трассировки
- •14.2 Метод обратной трассировки
- •Глава 15. Цвет в компьютерной графике
- •15.1. Ахроматический и хроматический цвета
- •15.2. Цветовые модели
- •Системы смешивания основных цветов
- •Цветовая модель hsv
- •Модель hls
- •Цилиндрическая цветовая модель
- •Глава 16. Сжатие графических изображений
- •16.1. Графические форматы
- •16.2. Основные сведения о сжатии изображений
- •16.3. Алгоритмы сжатия файлов без потерь
- •Алгоритм Хаффмана
- •Алгоритм Лемпеля—Зива (lzw)
- •Алгоритм rle (Run Length Encoding)
- •Обрезание хвостов
- •16.4. Сжатие с потерями цветных и полутоновых файлов
- •Сжатие изображения по стандарту jpeg
- •Новый стандарт jpeg 2000
- •Фрактальное сжатие изображений
Глава 14. Трассировка лучей
До сих пор были рассмотрены проекционные методы получения реалистичного изображения сцены, начиная с описания объектов, получения геометрической модели, изменения объектов, и заканчивая построением проекций, освещением объекта и его закраской. Проекционные методы – это методы, в которых синтез изображения выполняется с помощью аффинных преобразований и преобразований проекций. Трехмерная сцена как набор примитивов визуализации (обычно, многоугольников, точек, линий и т.п.) трансформируется в двухмерный массив, который и отображается на экране монитора. Но чтобы получить хотя бы тень, отбрасываемую объектом на самого себя, алгоритм придется весьма сильно усложнить, причем результат получится не совсем совпадающим с реальной картиной освещения. Когда же дело касается зеркального отражения, прозрачности либо преломления света, эти алгоритмы оказываются слабы.
Существует, однако, и другой подход, позволяющий получить реалистичной изображение сцены и решить все перечисленные проблемы простым и красивым математически методом. Он называется трассировка лучей. Кроме этого метод решает также задачу удаления невидимых граней и задачу наложения текстуры. Методы трассировки лучей работают на уровне пикселей выходного изображения, рассчитывая их цвет на основе данных о геометрии сцены и положения виртуальной камеры (рис. 14.1). На первом рисунке (а) показаны два шара, освещенные источником света, на втором рисунке (б) - те же шары после работы метода трассировки лучей. Видны зркальные блики, зеркальное отражение, нанесение рисунка и тени.
а) б)
Рис. 14.1 Получение реалистичного изображения методом трассировки лучей
Классический метод трассировки лучей (ray tracing) был предложен Артуром Аппелем еще аж в 1968 году и дополнен алгоритмом общей рекурсии, разработанным в 1980 годах на базе работ Уиттеда и Кея. Понадобилось почти 12 лет эволюции вычислительных систем, прежде чем этот алгоритм стал доступен для широкого применения в практических приложениях. Суть метода заключается в отслеживании траекторий лучей и расчета взаимодействий с лежащими на траекториях объектами, от момента испускания лучей источником света до момента попадания в камеру. Трассировка лучей - первый метод расчета глобального освещения, рассматривающий освещение, затенение (расчет тени), многократные отражения и преломления.
14.1 Метод прямой трассировки
Предполагается, что из точек поверхности излучающих объектов исходят лучи. Такие лучи будут первичными — они освещают всё остальное. Считается, что луч света распространяется прямолинейно до тех пор, пока не встретится точка отражающей поверхности или границы среды преломления.
Затем проверяется ориентация каждой точки относительно источника. Если она лежит на стороне объекта, обращенной в противоположную от источника сторону, точка из расчетов освещенности исключается. Для всех остальных точек вычисляется освещенность с помощью уже рассмотренной ранее модели освещения. Если объект не является отражающим или прозрачным, то есть поверхность объекта только диффузно рассеивает свет, траектория луча на этой точке заканчивается. Если же поверхность объекта обладает свойством зеркального отражения и/или преломления, из точки строятся новые лучи, направления которых совершенно точно определяются законами отражения и преломления.
От источников излучения исходит по различным направлениям бесчисленное множество первичных лучей. Некоторые лучи уходят в свободное пространство, а некоторые (их также бесчисленное множество) попадают на другие объекты. Если луч попадает в прозрачный объект, то, преломляясь, он идет дальше, при этом некоторая часть световой энергии поглощается. Если же на пути луча встречается зеркально отражающая поверхность, то он также изменяет направление, а часть световой энергии поглощайся. Если объект зеркальный и одновременно прозрачный (например, обычное стекло), то будет уже два луча — в этом случае говорят, что луч расщепляется.
В результате действия на объекты первичных лучей возникают вторичные лучи. Бесчисленное множество вторичных лучей уходит в свободное пространство, а некоторые из них попадают на другие объекты. Так многократно отражаясь и преломляясь, отдельные световые лучи приходят в точку наблюдения — глаз человека. Очевидно, что в точку наблюдения может попасть и часть первичных, лучей непосредственно от источников излучения. Таким образом, изображение сцены формируется некоторым множеством световых лучей.
Цвет отдельных точек изображения определяется цветом и интенсивностью первичных лучей источников, а также интенсивностью и изменением световой энергии в объектах, встретившихся на пути этих лучей.
Но реализация такой лучевой модели формирования изображения является трудоемкой. Необходимо предусмотреть перебор всех первичных лучей и определить те из них, которые попадают в объекты и в камеру. Затем выполнить перебор всех вторичных лучей, и также учесть только те, которые попадают в объекты и в камеру. И так далее. Так работает прямая трассировка лучей. Практическая ценность такого метода вызывает сомнения, так как почти невозможно учесть бесконечное множество лучей, идущих во все стороны. Даже если каким-то образом свести это к конечному числу операций (например, разделить всю сферу представлений на угловые секторы и оперировать уже не бесконечно тонкими линиями, а секторами), всё равно остаётся главный недостаток метода — много лишних операций, связанных с расчётом лучей, которые затем не используются.