Создание проекционных экстентов Есть сильное искушение использовать для CSG-объектов проекционные экстенты ввиду низкой стоимости трассировки лучей для таких экстентов. Проекционный экстент можно было бы построить для каждого узла CSG-объекта тем же способом, как мы строили прямоугольные экстенты: проекционный экстент узла формируется как комбинация проекционных экстентов левого и правого подобъектов. Обозначим через P(pbject) проекционный экстент объекта object, после чего, в соответствии с вышеизложенными правилами, получим:
P(LuR) = P(P(L)uP(R)), P(LnR) = P(L)nP(R), P(L-R) = P(L).
Как и прежде, у каждого класса имеется свой метод makeProjection.Exten.tO.
14.13. Резюме Трассировка лучей представляет собой концептуально простой и единообразный метод создания в высшей степени реалистичных изображений. Осуществляется трассировка (отслеживание) большого количества нужных лучей света для сцены, составленной из различных объектов, каждый из которых анализируется на предмет того, сколько света он возвращает в глаз наблюдателя. В результате использования этого механизма становятся возможными многие визуальные эффекты. В дополнение к обычной имитации фонового, диффузного и зеркального компонентов света трассировка лучей позволяет относительно легко имитировать тени, отражения от зеркальных поверхностей, а также прохождение преломленного света сквозь прозрачные объекты. Трассировка лучей предоставляет также естественный способ наложения на объекты как дву-, так и трехмерных текстур.
Ядром применения метода трассировки лучей является подпрограмма, определяющая пересечения между лучом и объектом. Для создания изображения с высоким разрешением испускается огромное количество лучей, причем многие из этих лучей порождают вторичные лучи, вследствие чего на нахождение пересечений тратится много компьютерного времени. Поскольку каждый луч тестируется относительно каждого объекта сцены, время, необходимое для трассировки лучей, возрастает приблизительно пропорционально сложности этой сцены. При разумном использовании экстентов удается добиться множества «досрочных выходов», что освобождает от необходимости проводить для многих объектов более полный тест на пересечение и значительно убыстряет процесс трассировки лучей.