М. Ву, Т. Девис, Дж. Нейдер, Д. Шрайнер - OpenGL. Руководство по программированию (Библиотека программиста) (2006) (1124363), страница 43
Текст из файла (страница 43)
и меньше нли равно О, это говорит, что в вершине нет отра женной составляющей. (Если эта величина отрицательна, источник света нахо дится с другой стороны поверхности.) Если же отраженная составляющая прн сутствует, она зависит от следующего: ° нормали к вершине единичной длины (и„, и„, и,); ° суммы двух векторов единичной длины: вектора между вершиной и источнп ком света (положением или направлением) и вектора, соединяющего вершин и точку наблюдения (в случае если выбран режим 6С С16НТ НООЕС СОСАС Ч1ЕИЕР; если это не так, в качестве второго вектора суммы берется (О, О, 1)) Эта векторная сумма нормализуется (посредством деления каждого комле нента на длину получившегося вектора). В результате получаем з = (з„з„, з,); ° показателя степени эЬ!и!пезз для учета блеска (6С 5Н1Н1НЕ55); ° цвета зеРкального компонента источника света (6с 5РеспсАн,,„,м); ° цвета зеркального компонента материала (6С 5РЕСОСАН„,,„,„ы).
На основе приведенных выше определений Орепоь рассчитывает отраженну составляющую по следующей формуле: (шах (э и, О))'"'"'""' х зресп!аг„м х зресп!аг„„,„и„,|, Однако если с . и = О, отраженная составляющая также равна О. Все вместе Теперь, отталкиваясь от определений, сформулированных выше, запишем урав пение освещенности в режиме КОВА в окончательном виде: цвет вершины - еппзгйоп„,„.„„„+ ашЬ!епс„„м „,,„, х агиЬ|епс„,„,„„п е .-|( + ~~"! х (эрос!!яЬс ейесс), х (ашЪ!епсГви х ашЪ!епс,„„,„,ы + + (шах(с и, 0)) х с)!визе|ем х с)!Йпзе „„и,| + + (шах(э . и, 0))'и""""' х ереси!аг|вм х зресп!аг„„,„„„), Вторичный отраженный цвет Если для некоторой модели освещения цветовой режим установлен в значени 6С 5ЕРАНАТЕ 5РЕСОСАН СОСОН, то для каждой вершины вычисляются два цве (первичный и вторичный) в соответствии со следующими формулами: Освещение в режиме индексации цвета 195 первичный цвет - излучаемый свет материала вершины + общее фоновое освещение, умноженное на фоновую составляющую цвета материала вершины + фоновая и диффузная составляющие всех источников света, ослабленные соответствующим образом; вторичный цвет - отраженные составляющие всех источников света, ослабленные соответствующим образом.
Озедующие два уравнения применяются ОрепСЕ. для расчета первичного и вто- ззчвого цветов: пеРвичный цвет - еш(зз)оп„„,ы + ашЬ1епг|с„|с|„~вс х ашЬ)епс „и„,| + ( к (зро111яЬГ еЯесг)с х х (ашЪ|епгмм к ашЬ(епс„„„,л в (шах(Е и, 0)) к с(1Кцзез„м к с((базе,„„„„|1,; и-с 1 вторичный цвет = ")„(, ), к (зро111яЬг е((ест), я ,.О ссс +lг с(+ Е с(2 к 1(шах(з и, 0))'и"'""' х зресц1агмм х зресц1аг„„„с~, И процессе текстурирования с цветами текстуры комбинируется только первичвсй цвет.
После текстурирования вторичный цвет добавляется к комбинации прввчного цвета и цвета текстуры, Освещение в режиме индексации цвета И режиме индексации цвета параметры, задаваемые РСВА-величинами, либо не виывают влияния, либо интерпретируются особым образом. Поскольку в режи|с индексации цвета намного сложнее достигнуть определенных эффектов, свявнвых с освещением, следует применять режим РСВА везде, где зто возможно. Фа|тически в режиме индексированных цветов параметры источника света, мовцс освещения или свойств материала задаются тоже в форме РСВА-значений. Используемые параметры источника света — 6Е 01РЕ05Е и 6Е 5РЕЕОЕАК, а также звчевне блеска 6е 5н1н1ме55. С помощью параметров 6е 01ее05е и 61 11КОсс1К (с||с и з, соответственно) вычисляются интенсивности рассеянной и отрхевной составляющих (с(э и з,с): с(„= О,ЗОВ(сХс) + 0,59С(с1) + 0,11В(сгс); |„- О,ЗОВ(зс) ч 0,59С(зс) + 0,11В(зс), в|И(х), С(х) и В(х) представляют красный, зеленый и синий компоненты цвета х, тзетственно.
Весовые коэффициенты О.ЗО, 0.59 и 0.11 отражают степень воснятия компонентов цвета человеческим глазом — наши глаза наиболее чувсттьны к зеленому цвету и наименее восприимчивы к синему. е а задания цвета материала в режиме индексации цвета 61натег1а1'() вызысо специальным параметром 6Е СОЕОк 1МОЕХЕ5: 196 Глава 5 ° Освещение 6Си(1оаС ваС со1огвар() = ( 16.9, 47.9, 79.0 ); 61иагег(41!«(6С ЕаОНТ, 6С СОСОа 1МОЕХЕ5, ваС со1огвар), Три числа карты задают соответственно индексы фонового, рассеянного и отраженного цветов материала. Другими словами, ОрепСВ считает цвет с индексом, заданным в первом числе (в данном случае !0.0), — чистым фоновым цветом, цвет с индексом, заданным во втором числе (47.0), — чистым диффузным цветом, а цвет с индексом, заданным в третьем числе (79.0), — чистым отраженным цветом.
(По умолчанию фоновый цвет имеет индекс 0.0, а рассеянный и отраженный цвета — индекс 1.0. Заметим, что команда 61Со1огИасег ! а1() не работает в режиме индексирования цветов.) Во время рисования сцены ОрепСВ использует цвета, ассоциированные с индексами данного диапазона, для закраски объектов сцены. Таким образом, необходимо верно построить цветовую таблицу между этими индексами (в данном примере между 16 и 47 и затем между 47 и 79). Обычно цветовая карта строится из близких ВСВ-значений, но достижение определенных эффектов оправдывает и другие соображения. Далее приведен пример «плавной» цветовой карты, начинающейся с черного фонового цвета, на пути к белому отраженному цвету ми. нующей фиолетовый рассеянный цвет: Сог (1=9;!<32;(++)( 61эгзеССо1ог(16 + (, 1.0 * (!/32,0), 0.9, 1.0 ' (!/32.9)); 61и15еССа1ог(48 + (, 1.0, 1.0 ' (!/32.0), 1,0); ) Функция я1п с 5е сСо1о г () библиотеки СШТ принимает четыре аргумента.
Оиа ассоциирует индекс, задаваемый первым аргументом, с КСВ-тройкой, задаваемой вторым, третьим и четвертым аргументами. При ! - 0 цветовой индекс 16 связывается с черным )ССВ-цветом (О, О, О). Цвет в карте монотонно изменяется до рассеянного цвета материала с индексом 47 (при ! = 31), которому соответствует фиолетовый ВСВ-цвет (1.О, 0.0, 1.О). Вторая команда в теле цикла строит карту между фиолетовым рассеянным цветом и белым (1.О, ВО, 1,О) отраженным цветом (индекс 79).
Математика освещения в режиме индексации цвета Как и следовало ожидать, поскольку в режиме индексации цвета доступно другое подмножество параметров освещения, нежели в ВСВА-режиме, расчеты также производятся иначе. Так как в этом режиме исходящий от материала свет, а также фоновое освещение не задаются, здесь представляют интерес только диффузная и отраженная составляющие источников света. Но даже эти элементы рассчитываются иначе: так, как показано ниже. Начнем с диффузной и отраженной составляющих из ссСВА-уравнений.
В рассеЯиипй СОСтаВЛЯЮЩЕЙ ЗаМЕНИМ Й((цэсмда к П(1)ПЭЕ«а,„,а На С(,/, ВЫЧИСЛЕННОЕ В ПРЕДЫ- душем разделе для режима индексирования цветов. Аналогично, для отраженной составляющей вместо зресп)аг!„и к зресп)аг„„„,м подставим зн из предыдущего раздела. (Ослабление, эффект прожектора и другие компоненты вычисляются Освещение в режиме индексации цвета 197 пк же, как в КСВАрежиме) Назовем зти модифицированные злементы пи з со- етветственно. Теперь пусть з' = пнп(з, 1). Вычислим с = а. + е(1- з') (о — а ) + з'(з — а,), Еае а„, Ы, и з представляют собой индексы фонового, рассеянного и отраженного цветов материала, установленные командой а!маге г1 а1* () со значением аргу- аеата ЕЕ СОЕОР 1МРЕХЕ5.
Индекс результирующего цвета с' = пнп(с, з„), После того как расчет освещенности произведен, значения индексов преобразу- ется в формат с фиксированной запятой (с произвольным количеством битов справа от двоичной запятой). Далее целая часть индекса маскируется (с помо- звю побитового И) числом 2" — 1, где п — количество битов на цвет в индексном буфере. о .я Смешивание, сглаживание, туман и отклонение После прочтения этой главы вы сможете: ° Смешивать цвета для получения эффекта полупрозрачносги объекта ° Устранять ступенчатость линий и многоугольников ° Создавать сцены с реальными атмосферными эффектами ° Рисовать скругленные (сглаженные) точки с размером, зависящим от расстояния до точки наблюдения ° Рисовать объекты с заданной глубиной без дефектов изображения, возникающих по причине наложения объектов друг на друга Смешивание, сглаживание, туман и отклонение 199 В предыдуших главах мы учили вас создавать сцены компьютерной графики.
Значит, на этот момент вы умеете: ° рисовать геометрические объекты; ° преобразовывать их так, чтобы они выглядели правильно с любой точки обзора в нужной перспективе; ~ зздавать их цвет и вид раскраски; ~ добавлять источники света и определять нх воздействие на объекты в сцене. Теперь вы подготовлены для того, чтобы идти дальше.
Эта глава предлагает и рассмотрению пять технологий, позволяющие ввести дополнительные детали тсцеву и придать ей большую реалистичность. Все эти технологии довольно проон — фактически труднее их объяснить, чем программировать. Каждая из них шисывается в своем разделе; ~ Смешивание. Рассказывает, как определить функцию смешивания, которая комбинирует цвета приемника и получателя. В результате некоторые части сцены оказываются полупрозрачными. е Сглаживание. Описывает технологию незначительного изменения цвета (авт(айаяпд), за счет которой границы точек, линий и многоугольников кажутся более ровными, а не угловатыми и ступенчатыми, Более мощная технология мультивыборки (шц111затрйпя) предназначена для сглаживания любых примитивов в сцене. ~ Туман.
Объясняет, как создать иллюзию глубины, вычисляя значения цветов объекта на основе расстояния до точки обзора. Цель — добиться того, чтобы обьекты, находящиеся далеко, растворялись в фоне, как это происходит в резльной жизни. т Параметры точки. Рассматривает эффективную технологию рисования прииятива точки с размером н цветом, изменяющимися в зависимости от расстояния до наблюдателя. Параметры точки используются в системах частиц— при моделировании дождя, снега и прочего в графических программах.
~ При попытке рисования каркаса поверх закрашенного объекта по тем же вершинам могут возникнуть ненужные артефакты. Раздел «Отклонение многоугольников по глубине» показывает, как подогнать (отклонить) значения глубины так, чтобы векторный, тонированный объект был неотличим от прототипа. Взддержка девиации многоугольников появилась в ОрепО(. версии 1.1. 3 иерсию 1.2 была введена возможность выбора выражения смешивания (функтм 11В1елоесоаттоп О), константные цвета (В1В1епосо1ог О) и типы смешиЙния: 61 СОМ5ТАМТ СОСОМ, 61 ОМЕ М1М05 СОМ5ТАМТ СОСОЙ, 6С СОМ5ТАМТ яРНА и 61 ОМЕ И1М05 СОМ5ТАМТ АСРНА. В версиях 1.2 и 1.3 эти возможности ктцерживаются, только если реализация включает в себя расширение 1шая1пя 1т1вес Начиная с версии 1.4, наличие выражений смешивания, константных цвеЙз и факторов влияния стало обязательным.