Тем не менее этим методам присущи и определенные недостатки: в некоторых случаях они способны давать некорректный результат, зависящий от положения наблюдателя. Рассмотрим грань, приведенную на рис. 11.2.
Грань является квадратом. Цифрами обозначены значения освещенности в вершинах. Найдем значение освещенности в середине квадрата.
При той ориентации, которая приведена на рис. 11.2, я), это значение равно единице, однако если повернуть грань вокруг вектора нормали на 90° (рис. 11.2, б), то оно станет равным нулю. Тем самым мы получаем, что освещенность квадрата зависит от его ориентации.
Замечание. Методы Гуро и Фонга используют пТолько векторы нормали, заданные в вершинах грани.
Обычно для нахождения вектора нормали в вершине используют нормированную взвешенную сумму векторов нормали граней, которым эта вершина принадлежит:
Упражнения
1. Напишите процедуру закраски треугольной грани методом Гуро. Переделайте программу построения изображения тора из гл. 9 для построения изображения методом Гуро. Сравните результаты.
2. Напишите процедуру закраски треугольной грани методом Фонга, считая, что источник света и наблюдатель находятся в бесконечно удаленных точках (векторы / и V не зависят от точки на грани).
Глава 12
; РАБОТА С БИБЛИОТЕКОЙ OpenGL
На данный момент в Windows существует два стандарта для работы с трехмерной графикой: OpenGL, являющийся стандартом де-факто для всех графических рабочих станций, и Direct3D - стандарт, предложенный фирмой Microsoft. Здесь мы рассмотрим только стандарт OpenGL, так как, по мнению авторов (и не только авторов, аналогичного мнения придерживается один из основателей фирмы id,Software Джон Кармак, считающий стандарт Direct 3D крайне неудобным для практического применения), он является намного более продуманным и удобным, нежели постоянно изменяющийся Direct 3D.
Существенным достоинством OpenGL является его широкая распространенность - он является стандартом в мире графических рабочих станций типа Sun, Silicon Graphics и др.
Стандарт OpenGL был разработан и утвержден в 1992 г. девятью'ведущими фирмами, среди которых Digital Equipment Corparation, Evans & Sutherland, Hewlett Packard Co., IBM Corp., Intel Corp., Intergraph Corp., Silicon Graphics Inc., Sun Microsystems и Microsoft. В основу стандарта была положена библиотека IRIS GL, разработанная фирмой Silicon Graphics Inc.