OpenGL. Руководство по программированию (Библиотека программиста) (2006). Ву М., Девис Т., Нейдер Дж., Шрайнер Д (1124475), страница 41
Текст из файла (страница 41)
(Для получения полной информации о значениях альфаюйпонентов см. раздел «Смешивание» главы 6.) Кроме того, КОВА-свойства маэеряааов неприменимы в режиме индексации цвета. (См, раздел «Освещение режиме индексации цвета»). Иссеянное и фоновое отражение Параметры 6С 01 ЕЕ 0 5Е и 61 АМВ[ЕЙТ, устанавливаемые комацдой а(Мате г! а!» О, т на цвета рассеянного и фонового света, отражаемого объектом. Рассеянэое отражение играет наиболее важную роль в восприятии цвета наблюдателем.
Папаш глазомер оказывают влияние цвет падающего рассеянного света и угол у этим светом и вектором нормали к поверхности. (Диффузное отражение более заметно, если рассеянный свет падает перпендикулярно поверхности.) ожение точки обзора вообще никак не чувствуется на диффузном отражении. новое отражение одинаково воздействует на все цвета объекта.
Рассеянное отние наиболее заметно на непосредственно освещаемых частях объекта, в то Йя как фоновое более проявляется в местах, которые напрямую не освещают- Суммарное фоновое отражение объекта складывается из общего фонового осения и фонового света, излучаемого конкретными источниками. Так же как рассеянное, фоновое отражение не зависит от точки обзора. объектов реального мира рассеянное и фоновое отражение от одного и того ' объекта, как правило, имеет одинаковый цвет. По этой причине Орепо(. преавляет упрощенный способ для задания обоих параметров материала в кое а!Матег(а!» О; (1»а( аае ать 01(( [3=( О.1, О. 5, О.В, 1.0 ) 1аа1ег! а1(ч(6( ГВОЙТ АЙ0 ВАСК, 6( АМВ1ЕЙТ АЙ0 01ГЕ05Е, ааг ааЬ О(ГО; этом примере КСВА-цвет (0.1, 0.5, 0.8, [.0) — темно-синий — залается в качесттекущих цветов фонового и рассеянного отражения для лицевых и обратных рхностей многоугольников.
188 Глава 5 ° Освещение На цветном рисунке 16 первый ряд сфер не имеет общего отражения (0.0, 0.0, 0.0, 0.0), а во втором ряду оно отчетливо выражено (0.7, 0.7, 0.7, 1.0). Зеркальное отражение Зеркальное отражение от объекта производит блики. В отличие от фонового н рассеянного отражения, то, что видит наблюдатель здесь, зависит от положения точки обзора. Представим, что вы смотрите на металлический шарик под солнечным светом. При движении головы блик, создаваемый солнечным светом на шарике, до некоторой степени будет передвигаться вместе с вами. Однако если вы слишком далеко закинете голову, блик вообще исчезнет. Орепб1 позволяет управлять воздействием, оказываемым материалом на отраженный свет (с помощью параметра 6С 5РЕС 0 САН), и контролировать площадь и яркость блика (с помошью параметра 61 5Н1М1йЕ55).
Параметр 6С 5Н1М1МЕ55 принимает значения в диапазоне [0.0, 128.0~: чем больше значение, тем меньше и ярче (более сфокусирован) зеркальный блик. (Для получения более подробной информации см. раздел «Математика освещения» этой главы.) На цветном рисунке 16 сферы в первом столбце не имеют зеркального отражения. Во втором столбце для параметров 6С 5РЕСНСАН и 61 5Н1М1йЕ55 заданы следуюгцие значения; 6(г]оаг еаг »реса]аг[] = ( 1.е, 1.8, 1.в, 1.е >; 6гг]оас ]он »П(п1'пеза[] = ( 5.0 ); а]нагег1а]Г»(6С Рапйт, 6с 5РЕСВСАа, аат »реса]аг>; а]йа(ег(а]Г»<6С гасят, 6С 5Н]й]МЕ55, >пи аь>п>паза>; В третьем столбце значение параметра 61 5Н1М1МЕ55 увеличено до 100.0.
Излучение Задавая ВОВА-цвет для параметра 6С ЕН15510М,можно изобразить объект так, как будто он испускает свет данного цвета. Поскольку большинство реальных объектов (помимо источников света) сами не излучают свет, этот эффект используется в основном для имитации ламп и других источников света.
На цветном рисунке 16 сферам в четвертом столбце посредством параметра 6С ЕН15510М придан красновато-серый цвет: 6гг>еаг ааг еа1»аьрп(] = (о.з, в.г. е.г, о.о>; а]на(ег!а]Г»(6С ЕКОМТ, 6С ЕН15510й, аа[ еа>аа>рп); Хотя кажется, что сферы несколько светятся, на самом деле они не действуют как источники света. Для того чтобы это было так, необходимо создать источник света и поместить его в то же место, что и сферу. Изменение свойств материала В примере, приведенном в листинге 5.1, используются одни и те же свойства материала для всех вершин единственного объекта сцены (сферы).
В других ситуациях может потребоваться ассоциировать различные свойства материала с раз- Задание свойств материала 187 зачными вершинами одного и того же объекта. Более вероятно, что сцена будет скомпонована нз нескольких объектов с различными свойствами материала. Например, зто может быть такое изображение, как на цветном рисунке 16. На рисунке представлены 12 различных объектов (все являются сферами), каждый — с собстмнными свойствами.
Листинг 5.8 содержит часть кода подпрограммы б! 5р1ау (). Листинг 5.8. Различные свойства материала: гпасепа].с 611!оаС по еаС[] = ( 0.9, О.В, 8.0, 1.9 ); 6С11оаС еаС аепнеоС[] = ( 0.7, 8.7, 9.7, 1.8 ); 611!оат еаС аеотепС со!от[] = ( В.В, 9.8, О.г, 1,0 ); 6111оаС еаС О!11изе[] = ( 0.1, 8.5, 0.8, 1.0 6111оат еаС зреси1аг[1 = ( 1.9, 1.9, 1.8, 1.9 ); бспоас по зеип!пезз[] = ( 9.0 ); 6111оаС 1он злгп!пезз[] = ( 5.8 6111оаС Птбн зл!п(пезз[) = ( 180.0 ); 611[па! еаС ее!аз!оп[] = (0.3, 0.2, 0.2. 0.8): П!С1еаг(6С СОСОР ВОРРЕР 81Т ] 61 ОЕРТН ВОРРЕР 81Т); Р Рисуем сферу на пересечении первого столбца и первого ряда с рассеянным диффузным цветом, без фонового ипи зеркального цвета н 81РизПМатг!х(); П!Тгапз]ате1(-3.75, 3.0, 9.0); П!Натег!а11ч(61 РРОМТ, 6С АН81ЕМТ, по еаС); и!Масегта11ч(61 РРОйт, бс 01РР05е, еас д! 1!иве); П!Матегта!1ч(61 РРОйт, 6С 5РЕСОСАР, по еат); и!Масег(а11ч(61 РРОит.
61 5н!й1йе55, по зп(птпезз); П!Натегта! гч(6С РРОйт, 6С ЕН]55!Ой, по еат>; П1и15о1!О5рлеге(1.0. 16, 16); 81РорМатгтх(); Рисуем сферу на пересечении первого ряда и второго столбца с диффузным и зеркальным цветом, с небольшим блеском, без фонового цвета 81РизПИаеггх(); б!тгапз!атег(- 1.25, 3.8, 0.8); 31йа(ег!а11ч(61 РРОМТ, 61 АИВ1ЕМТ, по еаС); П!Наеег ! а[ тч (6С РРОйт, 61 011105Е, еас о! 1!иве); П!Наеегта]тч(бь РРОйт, 61 5РЕСОСАР, еаС ереси!аг); П!Натег!а!1ч(61 РРОИТ, 6С 5Н1И1МЕ55, ]он зь!и!пезз); 31йатег(а11ч(61 РРОМТ, 6С ЕМ15510И, по еаС); П1и15о1ти5рьеге(1.0, 16, 1б): 81РорИатг!х(); (); (1.25.
3.0, 0.0); (6!. РРОМТ, 6С АМВ1ЕйТ, по еаС); (6С РРОМТ, 61 01РР05Е, еат СМ 11изе); (6С РРОИТ, 6С 5РЕСОСАР, еаС зреси1аг); (6С РРОИТ, 6С 5Н1И1МЕ55, ГИВП зь!и!пезз); продолжение их Л Рисуем сферу с рассеянным и 31Ризьнатгтх 51Тгапз1ате1 П!НаСег!а11ч П]йатег!а11ч 31Матег!а11ч 51Матегта ]1ч на пересечении первого ряда и третьего столбца и зеркальным светом, ярким блеском, без фонового цвета 188 Глава 5 ° Освещение Листинг В.в (продолжение) 6!Мвтег!а!Гч(6( РКОМТ, 61 ЕМ!5510М, по ваС); 61цС5о11О5рпеге(1.0, 16, 16); 61РорИвтгсх(); /" Рисуем сферу нв пересечении первого ряда и четвертого столбца с диффузным светом, излучением, без фонового и зеркального цвета */ 6!Розлив!с!х(); 6!Тгвпз!втег(3.75. 3.0, 0.0); 6!Мвтег!а! 1ч(6( РКОМТ, 61 АМВ1ЕМТ, по ввС); 61ивтег!а!Гч(6( РКОМТ, 61 01РР05Е, ввС О! !созе); 61нвтегсв!гч(6( РКОМТ, 61 5РЕСОСАК, по ваС); 6!Матег!з!1ч(6( РКОМТ, 6( 5Н1М1МЕ55, по зь!пспезв); 6!Мвтег!в!Сч(6( РКОМТ, 6( ЕМ15510М, ввС ев!зз!оп); 6!цт5о1!О5рлеге(1,9, 16, 16); 61РорМвтгсх(); Как видно, функция к1Иатегса1'() вызывается несколько раз для установки требуемого свойства материала для каждой сферы.
Заметьте, что эту функцию необходимо вызывать только для тех параметров, которые изменяются. Вторая, третья и четвертая сферы рисуются с одинаковыми «фоновым» и «рассеянным» свойствами материала, так что нет смысла их переопределять. Поскольку существуют некоторые временные затраты на выполнение функции к1Иатег ! а1' (), пример в листинге 5.8 может быть переписан для минимизации изменения свойств материала. Пособие от Нэйта Робинса по свойствам материала Если у вас есть набор обучающих программ от Нэйта Робинса, запустите пособие по свойствам материала. Используя пособие можно экспериментировать со свойствами материала, включая фоновый, рассеянный и отраженный цвета и блеск. Режим цвета материала Другая техника снижения затрат производительности заключается в использова- нии для изменения свойств материала функции к1601огиатег!а1().
чосс( 616 010 г И а Се г1а!(61епшп ~асе, СЕ епцпс тос/е); Заставляет свойство (или свойства) материала, заданное аргументом тог(е, при обработке поверхности (или поверхностей), заданной аргументом /асе, ! все время принимать значение текущего цвета. При изменении текущего цвета (командой к!6010 г" () ) указанные свойства материала также незамедлительно меняются. Аргумент /асе может принимать значения 61 ЕКОМТ, 61 ВАСК или 6Е РКОМТ АМО ВАСК (по умолчанию). Аргумент глот/е выбирается из списка 61 АИВ1ЕМТ, 61 01ЕРО5Е, 61 5РЕСОЕАК, 61 АИВ1ЕМТ АМО 01РЕО5Е (по умолчанию) или 61 ЕИ1551ОМ.
В каждый момент времени активным является только один из режимов. Функция к1601огМатег! а1() не работает при использовании освещения в режиме индексирования цветов, ! Заметим, что функция к1601огМасегса! О задает две независимые величиньс первая определяет, какие поверхности изменяются с изменением текущего цвета, а вторая — какие свойства материала или поверхности изменяются. Однако ОрепбЕ не поддерживает отдельные значения тес(е для каждой поверхности! Задание свойств материала 189 Если по завершении работы й1СО1огИа1егт а!() вызвать функцию й)Епаб)е() о)значением аргумента 6Е СОЕОР ИАТЕК1АЕ, это позволит в последующем изме- нять текущий цвет команпой я!СО!о г' () (а также другие свойства материала ко- йандой я!Нате г ! а!ь () ) в соответствии с потребностями рисования; 11(паше(6( СО!Ой НАТЕМ)А!); !!Со!огнатег!а!(6( Рйонт, 6! 01РР05Е); р теперь функция й1Со1ог* изменяет диффузный цвет '/ Е!Со!огЗГ(О.2, О.5.
О.В); /' здесь рисуем объекты '/ 1!Са1огнвтег!а1(6( РМОМТ, 6( 5РЕСОЕАй); Р функция й1Со1ог' больше не меняет диффузный цвет, ' теперь она изменяет отраженный цвет '/ 1!Са1огзт(0.9, В.О, 0.2); Р здесь рисуем другие обьекты "/ ЕИ!ваше(6!.
СО!.Ой МАТЕй!АИ; Используйте функцию я1СО1огиа1ег! а1 () в тех случаях, когда для большинст- м вершин на сцене требуется подстраивать значение лишь одного параметра ма- призла. Если изменяемых параметров несколько, как это было в случае с цвет- ймч рисунком 16, применяйте функцию я1Иатегза1*().
При исчерпании потребности в функционачьности й1СО1огнатегта1() обязательно убедитесь, ето данный механизм отключен командой й10 ! 5 аь1е () . Тем самым вы избежите дзменений свойств материала «по неустановленным причинам», а также снизите птраты в плане производительности. Быстродействие приложения при работе с механизмом й1СО)огИатег ! а1() зависит от реализации Орепб!.. Некоторые зезлнзации могут оптимизировать обработку вершин с целью ускоренного изме- нения свойств материала на основе текущего цвета.