Студопедия — Освещение. OpenGL использует модель освещённости, в которой свет приходит из нескольких ис­точников, каждый из кото­рых может быть включён или выключен
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Освещение. OpenGL использует модель освещённости, в которой свет приходит из нескольких ис­точников, каждый из кото­рых может быть включён или выключен






OpenGL использует модель освещённости, в которой свет приходит из нескольких ис­точников, каждый из кото­рых может быть включён или выключен. Кроме того, существует еще общее фоновое (ambient) освещение.

Для правильного освещения объектов необходимо для каждой грани задать материал, обладающий определенными свойствами. Материал может испускать свой собственный свет, рассеивать падающий свет во всех направлениях (диффузное отражение) или по­добно зеркалу отражать свет в определенных направлениях.

Пользователь может определить до восьми источников света и их свойства, такие, как цвет, положение и на­правление. Для задания этих свойств служит процедура

gllight{i f}[v](GLenum light, GLenum pname, TYPE param),

которая задаёт параметры для источника света light, принимающего значения GL_LIGHT0, GL_LIGHT1,..., GL_LIGHT7. Параметр pname определяет характеристику источника света, которая задается последним парамет­ром.

Для использования источников света расчёт освещенности следует разрешить командой glEnable(GL_LGHTING), а применение соответствующего источника света разрешить (включить) командой glEnable, например: glEnable(GL_LIGHT0).

Источник света можно рассматривать как имеющий вполне определенные координаты и светящий во всех на­правлениях или как направленный источник, находящийся в бес­конечно удаленной точке и светящий в заданном направлении (х, у, z).

Если параметр w в команде GL_POSITION равен нулю, то соответствующий источник света – направленный и светит в направлении (х, у, z). Если же w отлично от нуля, то это позиционный источник света, находящийся в точке с координатами (x/w, y/w, z/w).

Заданием параметров GL_SPOT_CUTOFF и GL_SPOT_DIRECTION можно создавать источники света, которые будут иметь коническую направленность. По умолчанию зна­чение параметра GL_SPOT_CUTOFF равно 180°, т. е. источник светит во всех направлениях с равной интенсивностью. Параметр GL_SPOT_CUTOFF определяет мак­симальный угол от направления источника, в котором распространяется свет от него. Он может принимать значение 180° (не конический источник) или от 0 до 90°.

Интенсивность источника с расстоянием, вообще говоря, убывает (параметры этого убывания задаются при по­мощи параметров GL_CONSTANT_ATTENUATION, GL_LINEAR_ATTENUATION и GL_QUADRATIC_ATTENUATION). Только собственное свечение материала и глобальная фоновая освещенность с расстоянием не ослабевают.

Глобальное фоновое освещение можно задать при помощи команды

gtLightModel{i f} [v] (GL_LIGHT_MODEL_AMBIENT, ambientColor).

Местонахождение наблюдателя оказывает влияние на блики на объектах. По умолчанию при расчётах освещён­ности считается, что наблюдатель находится в беско­нечно удалённой точке, т. е. направление на наблюдателя по­стоянно для любой вершины. Можно включить более реалистическое освещение, когда направление на на­блюда­теля будет вычисляться для каждой вершины отдельно. Для этого служит команда

glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE).

Для задания освещения как лицевых, так и нелицевых граней (для нелицевых граней вектор нормали переворачивается) служит следующая команда:

glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE).

Причём существует возможность отдельного задания свойств материала для каждой из сторон.

Свойства материала, из которого сделан объект, задаются при помощи процедуры

glMaterial{i f}[v](GLenum face, GLenum pname, TYPE param).

Параметр face указывает, для какой из сторон грани задается свойство, и принимает одно из следующих значе­ний: GL_BACK, GL_FRONT_AND_BACK, GL_FRONT.

Параметр pname указывает, какое именно свойство материала задается.

Расчёт освещённости в OpenGL не учитывает затенения одних объектов другими.

1.6. Полупрозрачность. Использование α-канала

До сих пор не рассматривался α-канал (в RGBA-представлении цвета) и значение соот­ветствующей компоненты во всех примерах всегда равнялось единице. Задавая значения, отличные от единицы, можно смешивать цвет вы­водимого пикселя с цветом пикселя, уже находящегося в соответствующем месте на экране, создавая тем самым эффект про­зрачности.

При этом наиболее естественно думать об этом, считая что RGB-компоненты задают цвет фрагмента, а-значе­ние – его непрозрачность (степень поглощения фрагментом про­ходящего через него света). Так, если у стекла ус­тановить значение, равное 0.2, то в ре­зультате вывода цвет получившегося фрагмента будет на 20% состоять из собственного цвета стекла и на 80% – из цвета фрагмента под ним.

Для использования α-канала необходимо сначала разрешить режим прозрачности и смешения цветов командой gEnable(GL_BLEND).

В процессе смешения цветов цветовые компоненты выводимого фрагмента RsGsBsAs смешиваются с цветовыми компонентами уже выведенного фрагмента RdGdBdAd по фор­муле:

(RsSr+RdDr, GsSg+GdDg, BsSb+BdDb, AsSa+AdDa),

где (Sr, Sg, Sb, Sa) и (Dr, Dg, Db, Da) – коэффициенты смешения.

Для задания связи этих коэффициентов с α-значениями используется следующая функ­ция:

glBlendFunc(GLenum sfactor, GLenum dfactor).

Здесь параметр sfactor задаёт то, как нужно вычислять коэффииенты (Sr, Sg, Sb, Sa), а па­раметр dfactor – коэффи­циенты (Dr, Dg, Db, Da).







Дата добавления: 2015-10-19; просмотров: 430. Нарушение авторских прав; Мы поможем в написании вашей работы!



Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Методика обучения письму и письменной речи на иностранном языке в средней школе. Различают письмо и письменную речь. Письмо – объект овладения графической и орфографической системами иностранного языка для фиксации языкового и речевого материала...

Классификация холодных блюд и закусок. Урок №2 Тема: Холодные блюда и закуски. Значение холодных блюд и закусок. Классификация холодных блюд и закусок. Кулинарная обработка продуктов...

ТЕРМОДИНАМИКА БИОЛОГИЧЕСКИХ СИСТЕМ. 1. Особенности термодинамического метода изучения биологических систем. Основные понятия термодинамики. Термодинамикой называется раздел физики...

Разновидности сальников для насосов и правильный уход за ними   Сальники, используемые в насосном оборудовании, служат для герметизации пространства образованного кожухом и рабочим валом, выходящим через корпус наружу...

Дренирование желчных протоков Показаниями к дренированию желчных протоков являются декомпрессия на фоне внутрипротоковой гипертензии, интраоперационная холангиография, контроль за динамикой восстановления пассажа желчи в 12-перстную кишку...

Деятельность сестер милосердия общин Красного Креста ярко проявилась в период Тритоны – интервалы, в которых содержится три тона. К тритонам относятся увеличенная кварта (ув.4) и уменьшенная квинта (ум.5). Их можно построить на ступенях натурального и гармонического мажора и минора.  ...

Studopedia.info - Студопедия - 2014-2024 год . (0.008 сек.) русская версия | украинская версия