14.10. Добавление теней для большей реалистичности Практические упражнения 14.9.8. Нахождение проекции точки Докажите правильность равенств (14.41) и (14.42). Для этого «инвертируйте» уравнение (14.3), которое задает направление луча, проходящего через /с-пиксел: по заданному направлению выведите значения г и с. Луч, идущий из глаза через точку р, имеет направление К(р - eye), где К - некоторый масштабный коэффициент. Это направление должно совпадать с вектором dir из уравнения (14.3). Для выделения некоторых членов умножим скалярно обе части выражений на вектор и:

K(p-eye)-u = W

( 2с ^

nCols
-1

При последующем скалярном умножении на векторы V и п можно получить еще два уравнения, одно из которых определяет значение К через известные величины. Покажите, что из этого равенства следует, что т =1_ 2с

WP„ nCols

откуда можно выразить с и получить один из результатов уравнения (14.41). Аналогично выведите второй результат.

14.9.9. Объединенные экстенты для дальнейшей экономии времени Некоторые сцены содержаг-оольшие области, на которых виден только фон и отсутствуют какие-либо объекты. С целью дополнительной экономии времени во время трассировки лучей можно создать объединенный экстент (union extent), то есть наименьший выровненный прямоугольник, охватывающий все индивидуальные экстенты объектов на сцене. Каждый луч в первую очередь тестируется с этим экстентом. Если луч лежит вне экстента, то ему незамедлительно присваивается цвет фона. В противном случае, как обычно, будет просматриваться весь список объектов. Покажите, как сформировать объединенный экстент и как применять его в вашем трассировщике лучей.

14.9.10. Списки для кластеров объектов Значительно сократить вычисления может еще одно усовершенствование - в тех случаях, когда оно применимо. Когда объекты на сцене образуют в достаточной степени изолированные группы - «кластеры», то каждый такой кластер объектов можно поместить в отдельный список объектов - назовем его кластерным списком (cluster list). Для каждого кластера вычисляется объединенный экстент. В этом случае список объектов превращается в список кластерных списков. Во время трассировки лучей каждый луч тестируется относительно объединенного экстента каждого кластерного списка, и только в случае прохождения этоТо теста луч тестируется относительно отдельных объектов кластера. Покажите, как следует организовать типы данных и сам алгоритм трассировки лучей, чтобы реализовать этот подход.


⇐ Предыдущая| |Следующая ⇒