Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Book_Sidenko.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
6.28 Mб
Скачать

13.4. Тени.

Изображение с построенными тенями выглядит гораздо реалистичнее, и, кроме того, тени очень важны для моделирования. Например, особо интересующий нас участок может оказаться невидимым из-за того, что он попадает в тень. А в строительстве, при разработке космических аппаратов тени влияют на расчет падающей солнечной энергии, обогрев и кондиционирование воздуха. Если положение наблюдателя и источника света совпадают, то теней не видно, но они появляются, когда наблюдатель перемещается в любую другую точку. Тень стоит из 2-ух частей: полутени и полной тени. Полная тень – центральная, темная, резко очерченная часть, а полутень – окружающая ее более светлая часть. Распределенные источники света создают как тень, так и полутень: в полной тени свет вообще отсутствует, а полутень освещается частью распределенного источника.

Точечные источники создают только полную тень. Из-за больших вычислительных затрат рассматривается только полная тень, образуемая точечным источником света.

Легче всего, когда источник находится в бесконечности, тогда тени определяются с помощью ортогонального проецирования. Если источник расположен на конечном расстоянии, то используется перспективная проекция.

Рассмотрим рисунок. В этом случае тени образуются двояко:

  1. собственно тень на объекте;

  2. проекционная тень.

Собственная тень получается тогда, когда сам объект препятствует попаданию света на некоторые его грани. Алгоритм затенения в этом случае идентичен алгоритму удаления скрытых поверхностей. В алгоритме удаления скрытых поверхностей определяются поверхности, которые можно увидеть из точки зрения, а в алгоритме затенения – поверхности, которые можно “увидеть” из источника света. Поверхности, видимые из источника света и из точки зрения, не лежат в тени. Поверхности, видимые из точки зрения, но невидимые из источника света, находятся в тени. Поэтому удобно использовать 1 алгоритм, последовательно применяя его к точке зрения и к каждому из точечных источников света.

Рис. 13.14

Если один объект препятствует попаданию света на другой, то получается проекционной тень (горизонтальная плоскость на рис.). Чтобы найти такие тени, надо построить проекции граней на сцену. Центр проекции – в источнике света. Т.о. находятся теневые многоугольники для всех граней и заносятся в структуру данных. Чтобы не вносить в нее слишком много многоугольников, можно проецировать контур каждого объекта, а не отдельные грани.

Для создания различных видов из разных точек зрения не надо вычислять тени заново, т.к. они зависят только от положения источника света и не зависят от положения наблюдателя.

Источник на бесконечности

Рис. 13.15

В случае бесконечно удаленного источника света мы предполагаем, что лучи света, приходящие к объекту, полностью параллельны. Это позволит нам решить уравнение проекции только раз и применять полученное решение ко всем вершинам объекта.

Общая постановка задачи:

Имея точку источника света и вершину объекта , мы хотим получить проекцию вершины объекта на плоскость z=o, т.е. точку тени .

Из подобных треугольников получаем:

(1.1)

Решая это уравнение относительно , получаем:

(1.2)

Если принять, что L это вектор из точки P к источнику света, то точку S можно выразить как:

(1.3)

Т.к. мы производим проекцию на плоскость z=0, то уравнение (1.3) можно переписать в следующем виде:

(1.4)

или

(1.5).

Решая (1.3) относительно и , получаем

(1.6)

или в матричной форме:

(1.7)

Теперь имея координаты точки P в мировом координатном пространстве, можно получить ее проекцию на плоскость z=0 просто путем умножения на матрицу

(1.8).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]