Визуализация граней для усиления реалистичности
Построение «спроецированной» грани Для создания новой грани F из исходной F мы проецируем каждую вершину грани F на рассматриваемую плоскость. Нам нужен метод вычисления координат этих вершин на плоскости. Допустим, что, как на рис. 8.65, а, плоскость проходит через точку А и имеет нормальный вектор п. Рассмотрим проецирование вершины V, в результате чего образуется точка У. Математическая сторона этого процесса хорошо знакома: V - это та точка, в которой луч от источника света 5, проходящий через точку V, пересекает плоскость. Как показано в упражнениях, эта точка задается формулой:
V' = S + (V-S)n'[A~Sl. (8.24)
В упражнениях показано, как записать это уравнение в однородных координатах в виде произведения Уна матрицу, применяемую в машинах визуализации типа OpenGL, который поддерживает умножение нужных матриц.
Практические упражнения
8.6.1. Формы теней Предположим, что куб парит над плоскостью. Какую форму имеет тень этого куба, если точечный источник света находится: О непосредственно над верхней гранью; О в направлении главной диагонали куба (как при изометрической проекции)? Нарисуйте тени для сферы и для цилиндра, парящих над плоскостью, при различных положениях источника света.
8.6.2. Создание «теневой» грани О Покажите, что луч, идущий от точечного источника света S через вершину V, соударяется с плоскостью п (Р - А) - 0 в точке г* - [п (А - 5)]/[п (У- 5)].
О Покажите, что выражение, полученное согласно первому пункту, определяет точку V, удовлетворяющую уравнению (8.24).
8.6.3. Эквивалент умножению матриц
О Покажите, что выражение для V в уравнении (8.24) может быть записано в форме матричного умножения: У = М( Vx, V, Уг, 1)г, где M - матрица размерностью четыре на четыре.
О Выразите элементы матрицы M в терминах A, Sun.
8.6.2. Создание теней с помощью буфера теней В другом методе рисования теней, радикально отличающемся от рассмотренного, используется буфер глубины, предназначенный для удаления невидимых поверхностей. В рамках этого метода для каждого источника света создается второй (дополнительный) буфер глубины, именуемый буфером теней (shadow buffer). Этот подход требует большого количества памяти, однако он не ограничивается тенями, отбрасываемыми на плоские поверхности.