Студопедия — Освещение. 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; просмотров: 433. Нарушение авторских прав; Мы поможем в написании вашей работы!



Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

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

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

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

Весы настольные циферблатные Весы настольные циферблатные РН-10Ц13 (рис.3.1) выпускаются с наибольшими пределами взвешивания 2...

Хронометражно-табличная методика определения суточного расхода энергии студента Цель: познакомиться с хронометражно-табличным методом опреде­ления суточного расхода энергии...

ОЧАГОВЫЕ ТЕНИ В ЛЕГКОМ Очаговыми легочными инфильтратами проявляют себя различные по этиологии заболевания, в основе которых лежит бронхо-нодулярный процесс, который при рентгенологическом исследовании дает очагового характера тень, размерами не более 1 см в диаметре...

Ваготомия. Дренирующие операции Ваготомия – денервация зон желудка, секретирующих соляную кислоту, путем пересечения блуждающих нервов или их ветвей...

Билиодигестивные анастомозы Показания для наложения билиодигестивных анастомозов: 1. нарушения проходимости терминального отдела холедоха при доброкачественной патологии (стенозы и стриктуры холедоха) 2. опухоли большого дуоденального сосочка...

Сосудистый шов (ручной Карреля, механический шов). Операции при ранениях крупных сосудов 1912 г., Каррель – впервые предложил методику сосудистого шва. Сосудистый шов применяется для восстановления магистрального кровотока при лечении...

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