Авторы доступно излагают основные принципы, требуемые для разработки приложений, использующих OpenGL. Текст написан понятно, четко и без лишних отступлений; материал иллюстрируется с помощью прекрасных примеров. Книга удачно структурирована, ее удобно использовать и как учебник, и как справочник; каждая глава завершается справочным разделом, в котором конспективно представлены все функции OpenGL, имеющие отношение к рассмотренной теме. Много внимания уделено тому, чтобы рекомендуемый код не просто работал, но работал эффективно, быстро надежно и на всех основных платформах.
Параметры же нашей модели освещения позволяют легко определять, освеща. Подробнее все параметры описаны в справочном разделе в конце главы. Глава . Цвет, материалы и освещениеосновы . Первый — использовать функцию . Рассмотрим следующий фрагмент кода. Второй параметр указывает, какие свойства устанавливаются. Последним параметром является массив, содержащий . Ко всем примитивам, заданным по. В большинстве случаев рассеянный и диффузный компоненты одинаковы, и если не требуются эффекты зеркального отражения . Но даже в этом случае требуется кропотливая работа по определению массива для каждого цвета объекта и вызов функции . Теперь мы готовы рассмотреть второй . При согласовании цветов вы указываете . Чтобы активизировать согласование цветов, вызывается функция . . Подход, который рассмотрен ниже, выглядит более громоздким, но в действи. Результат выполнения завершенной программы . Кроме того, мы изменили цвета самолета, чтобы разные цвета имели не все многоугольники, а все участки поверхности. Конечный результат выполнения программы, показанный на рис. Тем не менее, если вполовину уменьшить рас. Данная возможность полезна при моделировании сцен, на кото. Листинг . Настройка условий рассеянного освещения . В данном случае устанавливается . Цвет, материалы и освещение. Помимо интенсивности и цвета эти источники характе. Отметим, что размещение таких источ. . Классический Орелв. Наблюдатель Рис. Свет отражается от объектов под определенным углом ОрепОЬ поддерживает использование по крайней мере восьми независимых ис. Вы также можете поместить источник света в бесконечности, сделав его лучи параллельными, или заставить близлежащий источник света излучать во все сторо. Кроме того, можно установить точечный источник света, излучающий в пределах заданного конуса света, и приписать ему любые характеристики. Часто источник света излучает во всех направлениях . В любом случае, какой бы объект вы ни рисовали, лучи света от любого источника . Разумеется, если речь идет о направленном свете, не обязательно все поверхности всех многоугольников будут освещены. Отметим, что для расчета эффектов затенения на поверхности многоугольников ОрепОЬ требуется информация, на основании которой можно рассчитать угол. На рис. Луч образует угол А с плоскостью, на которую он падает. Затем свет отражается под углом В в сторону наблюдателя . Эти углы используются вместе с параметрами освещения и материалов . Так получилось, что положения, используемые ОрепОЬ, являются вершинами многоугольника. Поскольку ОрепОЬ рассчитывает кажущиеся цвета всех вершин, а затем создает между ними плавные переходы, создается иллюзия освещения. Каждый многоугольник создается как набор вершин, представляющих собой просто точки. После этого на каждую вершину под определенным углом падает луч света. Каким же образом вы . Следовательно, с каждой вершиной нужно соотнести определенную информацию, сообщающую направление . Глава . Цвет, материалы и освещение. Двухи трехмерные векторы нормали Нормали к поверхности Линия, идущая под прямым углом от вершины в направлении . Вектор — это линия, указывающая в определенном направлении, а словом нормаль всякие умники заменяют слово . Возможно, у вас уже возник вопрос, почему мы должны задавать вектор нор. Почему мы не можем просто задать нормаль для всего многоугольника и использовать ее для каждой вершины. Однако иногда невыгодно, чтобы все нормали были перпендикулярны поверхности многоугольника. Возможно, вы заметили, что многие поверхности не являются плоскими. Позже мы обсудим технику, позволяющую с по. Задание нормали Чтобы понять, как мы задаем нормаль для вершины, рассмотрим рис. Обратите внимание на линию, проходящую через вершину . Данная договоренность также использует. Вектор нормали, перпендикулярный поверхности направлены вверх и от передней поверхности. Видно, что эта вторая точка характеризуется числом единиц по положительным направлениям осей х, у и . Вместо того чтобы задавать две точки для каждого вектора нормали, мы можем вычесть вершину из второй точки нормали и получить тройку координат, обозначающую расстояния по осям х,у и . В нашем примере получаем такие три величины. Вектор — это направленная величина, сообщающая . В нашем примере нормали ко всем трем вершинам имеют оди. Это простой пример, поскольку треугольник целиком лежит на плоскости . Позже вы увидите, что часто для всех вершин требуется задавать разные нормали. Глава . Цвет, материалы и освещение. Новый транслированный вектор нормали Перспектива задания нормали для каждой вершины каждого многоугольника, ко. ОБХОД МНОГОУГОЛЬНИКА Обратите особое внимание на порядок вершин в треугольниках самолета. Если вы наблюдаете рисование этого треугольника с направления, в котором указывает вектор нормали, вершины кажутся расположенными вокруг треугольника против часовой стрелки. Это называется обходом многоугольника. По умолчанию передняя грань многоугольника определяется как сторона, вершины которой обходятся против ча. Единичные нормали Если дать ОрепОЬ применить свою магию, все нормали к поверхности будут пре. Единичным называется вектор нормали, длина которого равна . Длина нормали на рис. Чтобы найти длину нормали, нужно возвести в квадрат все ее компоненты, сложить их и извлечь из суммы квад. Если поделить каждый компонент нормали на ее длину, получится вектор, указывающий в том же направлении, но имеющий единичную длину.