В этом разделе мы рассмотрим два метода вычисления теней; один из них основывается на «раскрашивании» теней, как если бы они были текстурой, а другой использует буфер глубины, применяемый для удаления невидимых поверхностей. В главе 14 мы увидим, что существует и третий метод, естественным образом возникающий при трассировке лучей. Существует еще много других технологий, подробный обзор которых дается в работах [Watt, 138, Crow, 52, Woo, 214, Bergeron, 17].
8.6. Добавление теней объектов
Рис. 8.64. Эффект теней
8.6.1. Тени как текстура Технология «наложения» теней как текстуры годится для теней, которые отбрасываются на плоскую поверхность точечным источником света. Задача заключается в правильном вычислении формы тени. На рис. 8.65, а показан параллелепипед, отбрасывающий тень на пол. Форма тени определяется проекциями каждой грани параллелепипеда на плоскость пола, когда источник света является центром проекций. В действительности тень является объединением1 проекций шести граней. Рисунок 8.65, б иллюстрирует суперпозицию проекций двух граней"images/tmp8E4A-595.png" alt="Вычисление формы тени">
Рис. 8.65. Вычисление формы тени Это дает ключ к рисованию тени. После того как плоскость нарисована с использованием фоновой, диффузной и зеркальной составляющих света, рисуются шесть проекций граней параллелепипеда на плоскость с использованием только фонового света. Тени, нарисованые по этой технологии, обладают правильной формой и цветом. Последним рисуется сам параллелепипед. (Если параллелепипед находится близко к плоскости, то он может частично заслонить тень.)
1 Мы имеем в виду теоретико-множественное объединение"opengl1_588.html">⇐ Предыдущая| |Следующая ⇒