Для визуализации сцены, изображенной на рис. 10.70, использовалась схема буфера света, являющаяся разновидностью пространственного деления. На рисунке в каждой точке источника света центрирован куб, и каждая сторона куба делится с использованием квадратной сетки. Затем для ускорения обработки лучей тени записывается упорядоченный список объектов, на которые падает свет через каждый квадрат. Для определения эффектов освещенности поверхности вычисляется квадрат каждого луча тени, и далее луч тени обрабатывается со списком объектов для этого квадрата.

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

Комнатная сцена, освещенная 5 источниками света (панель а), визуализированная с использованием метода светового буфера и построением хода лучей для обработки лучей тени. Крупный план (панель б) части комнаты, показанной на панели а, иллюстрирует глобальные эффекты освещенности. Комната смоделирована с использованием 1 298 многоугольников, 4 сфер, 76 цилиндров и 35 поверхностей второго порядка. Время визуализации - 246 минут на машине VAX 11/780 по сравнению с 602 минутами без использования буферов света (перепечатано с разрешения Эрика Хайнса (Eric Haines) и Дональда П. Гринберга (Donald P. Greenberg), Program of Computer Graphics, Университет Корнелла)

Рис. 10.70. Комнатная сцена, освещенная 5 источниками света (панель а), визуализированная с использованием метода светового буфера и построением хода лучей для обработки лучей тени. Крупный план (панель б) части комнаты, показанной на панели а, иллюстрирует глобальные эффекты освещенности. Комната смоделирована с использованием 1 298 многоугольников, 4 сфер, 76 цилиндров и 35 поверхностей второго порядка. Время визуализации - 246 минут на машине VAX 11/780 по сравнению с 602 минутами без использования буферов света (перепечатано с разрешения Эрика Хайнса (Eric Haines) и Дональда П. Гринберга (Donald P. Greenberg), Program of Computer Graphics, Университет Корнелла)

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

Рис. 10.71. Направленное деление пространства. Для лучей пикселей в указанном секторе в порядке глубины выполняются проверки пересечения с поверхностями, лежащими в секторе ПОСТРОЕНИЕ ЛУЧЕЙ БЕЗ НАЛОЖЕНИЯ

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

Передискретизация с четырьмя лучами на пиксель, по одному на каждый угол

Рис. 10.74. Передискретизация с четырьмя лучами на пиксель, по одному на каждый угол

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

Рис. 10.75. Деление пикселя на девять подпикселей с использованием по одному лучу на каждый угол подпикселя дискретизации применяются неравномерно размещенные лучи в некоторых областях пикселя. Например, чтобы лучше оценить интенсивность пикселей, возле краев объекта можно использовать больше лучей. (Другой метод дискретизации - случайным образом распределить лучи по области пикселя. Данный подход будет рассмотрен в следующем разделе.) При использовании нескольких лучей на пиксель интенсивность лучей, исходящих из пикселей, усредняется и дает общую интенсивность пикселя.

Простая процедура передискретизации иллюстрируется на рис. 10.74. Здесь генерируется по одному лучу на каждый угол пикселя. Если интенсивности, вычисленные для четырех лучей, не равны (приблизительно), или если некоторый небольшой объект лежит между четырьмя лучами, область пикселя делится на подпиксели, и процесс повторяется. Например, пиксель на рис. 10.75 делится на девять подпикселей, и далее используются 16 лучей, по одному на каждый угол подпикселя. Затем применяется адаптивная дискретизация, и подпиксели, накрывающие малый объект или не имеющие лучей с приблизительно равной интенсивностью, снова разбиваются на элементы. Данный процесс деления может продолжаться, пока лучи подпикселей не будут иметь приблизительно равные интенсивности, или пока не будет достигнут верхний предел (скажем, 256) числа лучей на пиксель.


⇐ вернуться назад | | далее ⇒