М. Ву, Т. Девис, Дж. Нейдер, Д. Шрайнер - OpenGL. Руководство по программированию (Библиотека программиста) (2006) (1124363), страница 37
Текст из файла (страница 37)
В таких условиях результаты не~колько менее реалистичны, поскольку не принимаются во внимание углы между ючхой обзора и каждым объектом. Если наблюдатель находится рядом со сцемй знание этих углов необходимо, что значительно увеличивает сложность вывкхеннй. Так как в приведенной программе задняя поверхность сферы никогда и видна (как бы находится внутри сферы), одностороннего освещения вполне вьтаточно. (См. раздел «Выбор модели освещения» для получения подробной ххформации). ~а е. .е ы У 5Вдание свойств материала для объектов в сцене ся на »е- Йойства материала объекта определяют характер рассеивания света, то есть— и какого материала этот объект «изготовлен».
Поскольку взаимодействие между В листинге 5.1 используется только один, белый, источник света — 61 116НТЕОь Его положение определяется функцией я \ Е)квтг» (), и соответственно вычисляются рассеивание и отражение. Если нужен другой цвет источника света, изменихе значения аргументов к1Е1 квт ' () . В сцене может присутствовать до восьми различных источников света произюльвого цвета. (Некоторые реализации Орепоь поддерживают более восьми источников света.) По умолчанию цвет источников, отличных от 6Е Е16НТОь— хервый. Источники можно размещать там, где это необходимо: рядом со сценой (например, настольная лампа) или бесконечно далеко (имитация солнца).
Кроме юго, можно управлять толщиной луча — делать его сфокусированным или широхвн. Помните, что добавление даже одного источника света требует значительних вычислений при рисовании, то есть сказывается на производительности. (См, раздел «Создание источников света» для получения дополнительной информации о том, как создать источники света с заданными свойствами.) После определения свойств эти источники света необходимо включить с помощью функции я1Епав1е(). Кроме того, чтобы Орепоь принимал освещение во нввнание, нужно вызвать функцию к1Епэо(е() со значением аргумента 6Е (!6НТ1Н6.
(См. раздел «Включение источников света» для получения дополнитаьной информации.) 170 Глава 5 ° Освещение поверхностью объекта и падающим светом довольно сложно, правильное задание свойств материала, дающих нужный результат, — целое искусство.
В вашем распоряжении не только фоновый, рассеянный и отраженный пвета материала, но и блеск, то есть насколько хорошо материал отполирован, В обсуждаемом примере явно, с помощью функции к1масег1э1тч (), определяются лишь два свойства— отражение и блеск. (Для получения информации обо всех свойствах материала и примерах их использования см, раздел «Задание свойств материала» этой главы). Замечания на память При написании собственной программы с использованием освещения учтите, что для одних параметров в самый раз будут значения по умолчанию, а для других их потребуется изменить. Кроме того, не забудьте включить источники света, которые вы определили, и вычисление освещенности.
Наконец, помните, что при изменении условий освещенности увеличить эффективность помогают списки отображения. (См. раздел «с))илософия проектирования списков отображения« главы 7.) Создание источников света Источники света характеризуются набором свойств, включая цвет, положение в ! ориентацию. Ниже описывается, как управлять этими параметрами и каким окажется результирующий свет. Свойства источников света устанавливаются функЦИЕй В111КНС«().
чоЫ к111кпс(Щ(С).епшп ййЬГ, С) епшп Рпате, ТУРЕ ригпт)' чу к111кпс(1()ч(01епп1п ййЫ, С|епшп рпате, ТУРЕ рагат) Создает нумерованный источник света ЙНЬГ, в диапазоне 61 116НТОь 61 116НТХ, ..., 61 116НТТ. Свойство источника сне~а указывается символическии ~ именем рпите, согласно табл. 5.1.
Аргумент рогат — зто собственно значение 1 какого-то одного свойства рлате или указатель на набор значений — в вектор- ) ной версии. ) Использование функции к11(кпг" () продемонстрировано в листинге 5.2. Листинг 5.2. Задание цвета и положения источников света 61(1паг 11ВП( аиьнепт() = ( В.О, В.О, В.О, Х.В ); 61(1рас 11ВП( ОХ((пае() = ( Х.В, Х,О. Х.В, Х.О 61(1раг 1(ВП( «реса)аг() = ( Х.О, Х.В, Х.О, Х.О ), 6(г)паг 11хьт рпз)1)пп() = ( Х.О, Х.О, Х.О, О.О ): В111ВП1(ч(6С 116НТВ. 61 АНВХЕМТ, 1! ВП( аввнепс); В11)аьгтч(61 щбатО, 6Е ОХРРВ5Е, 11ВП1 ОХ((чае); ВХШВПТ(ч(61 116НТВ. 6( 5РЕСВ(АВ, 11аьт «реса)аг); В1ШВЫ(ч(61 СХ6НТО, 61 РО5ХТХОН, 11ВП1 роз)1)оп); Создание источников света 171 Таблица 5.1.
Значения по умолчанию для аргумента рпагпе функции О~ВОЩ»П Значения по умолчанию Описание Параметр Цвет фонового освещения Цвет рассеянного освещения 61 АМ81ЕМТ 6! 01ГЕ05Е Цвет отраженного света 6! 5РЕСОСАР 6! Р051Т!ОМ б! 5РОТ 01РЕСТ1ОМ 61 5РОТ ЕХРОМЕМТ 0.0 Я. 5РОТ СОТОГЕ 6! СОМ5ТАМТ АТТЕМОАТ10М 180.0 1.0 61 (ТМЕАР АТТЕМЦАТ10М 0.0 Квадратичное затухание света 6! ООАОЙАТ1С АТТЕМОАТ10М 0.0 Видно, что значения параметров помещены в массивы, а функция 81С(ВПттн() называется несколько раз. В этом примере первые три вызова являются лишни- иа, так как устанавливаемые ими значения 6С АНВ1ЕМТ, 6С 01ЕЕО5Е и 6С 5РЕСОСАР совпадают с предопределенными неявно.
ПРИМЕЧАНИЕ Лопните, что каждый источник света необходимо включить с помощью команды 0)ЕпаЫе(). (Для получения более подробной информации о том, как зто сделать, см. раздел «Включение источников света».) В следующих разделах описываются все аргументы функции 81!(ВПС» () и их квиожные значения. Они связаны с моделью освещения сцены и свойствами маириалов объектов.
(См. разлслы «Выбор модели освещения» и «Задание свойств взтериала» для получения дополнительной информации по этим двум вопросам Рмдельно н раздел «Математика освещения» на предмет их взаимосвязи.) ОрепЯ. позволяет ассоциировать с каждым источником света три различных па(виетра цвета; 6С АМВ1ЕМТ, 6С ОТЕЕО5Е и 6( 5РЕСОСАР. Параметр 6С АМВ1ЕМТ вгрзжает интенсивность фонового т»СВА-освещения, которое привносит в сцену (О.О, 0.0, 0.0, 1.0) (1.0, 1.0, 1.0, 1.0) для С16НТΠ— белый или (0.0, 0.0, 0.0, 1.0) для остальных (1.0, 1.0, 1.0, 1.0) для 116НТΠ— белый или (0.0, 0.0, 0.0, 1.0) для остальных (0.0, 0.0, 1.0, 0.0) (0.0, 0.0, - 1.0) Координаты (х,у, а н) источника света Направление (х у, г) распространения света Распределение интенсивности светового пучка по экспоненте Угол разброса световых лучей Ослабление интенсивности света, вне зависимости от направления и расстояния Линейное ослабление интенсивности света 172 Глава 5 ь Освещение какой-то источник света.
Как видно из табл. 5.1, по умолчанию фоновое освещение источника отключено — 61 АН81ЕНТ равно (0.0, 0.0, 0.0, 1.0). Это значение использовалось в листинге 5.1. Если в программу добавить синее общее освещение: 61(1оат 1)8П! авьпепт() = ( 8.0, 8.8. 1.8, 1.8); 81ь(хнгтт(61 116НТ8, 6ь АН81ЕНТ, 1)вы ааь)епг); получится изображение, показанное на цветном рисунке 13.
Параметр 6Е 01РР05Е приближен по значению к обычному естественному «цвету света». Он определяет КСВА-цвет рассеянного освегцения, вносимого в сцену некоторым источником света. По умолчанию значение 61 01РГ05Е равно (1.0, 1.0, 1.0, 1.0) для 6Е 116НТ8, что соответствует яркому белому свету, как показано на цветном рисунке 13. Для всех прочих источников света (61 116НТ1, ..., 61 116НТТ) значение по умолчанию равно (0.0, 0.0, 0.0, 0.0).
Параметр 61 5РЕСОЕАР задает цвет отраженного света объекта. Обычно реальные объекты, такие как стеклянная бутылка, в своей наиболее освещенной части выдают блик, то есть имеют цвет отражаюгцегося от них света (часто это белый цвет). Поэтому при создании реалистичных сцен 61 5РЕСШАН приравнивается 6Е 01РЕ05Е.
По умолчанию значение 6Е 5РЕСОЕАР равно (1.0, 1.0, 1.0, 1.0) для 61 116НТ8 и (0.0, 0.0, 0.0, 0.0) для всех остальных источников света. ПРИМЕЧАНИЕ Альфа-компонент не используется до тек пор, пока не включено смешивание (см. главу б). До этого момента его можно смело игнорировать. Положение и ослабление Как было сказано ранее, можно выбирать между источником света, который бесконечно удален от сцены, и между источником, расположенным рядом с ней. Источник первого типа называют направленным.