Компьютерная графика. Лекция 5

Post on 05-Jan-2016

115 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Компьютерная графика. Лекция 5. Моделирование трехмерных поверхностей . Закрашивание. Моделирование поверхностей. Компьютерная графика. Лекция 5. Результатом решения задачи моделирования является множество вершин, однозначно определяющих набор геометрических объектов. - PowerPoint PPT Presentation

TRANSCRIPT

Компьютерная графика. Лекция 5

Моделирование трехмерных поверхностей.Закрашивание.

Моделирование поверхностей

Результатом решения задачи моделирования является множество вершин, однозначно определяющих набор геометрических объектов.

Компьютерная графика. Лекция 5

Компьютерная графика. Лекция 5

Полигональные сетки (Polygonal meshes)

Полигональные сетки – набор полигонов (граней), которые в совокупности формируют оболочку объекта

– Это стандартный способ визуального представления широкого класса объемных фигур

– Многие системы визуализации основаны на изображении объектов посредством рисования последовательности полигонов

Компьютерная графика. Лекция 5

Достоинства полигональных сеток

Основаны на простоте использования полигонов:

Легко представлять и преобразовыватьОбладают простыми свойствами

единственный вектор нормаличетко определенные внутренняя и

внешняя областиПростота рисования

подпрограмма закрашивания полигонов или наложения текстуры на плоскую грань

Полигональные сетки позволяют представлять трехмерные объекты практически любой степени сложности

Компьютерная графика. Лекция 5

Примеры

Компьютерная графика. Лекция 5

Монолитные объекты и тонкие оболочки

Полигональные сетки позволяют задавать объекты двух типов:Монолитные (solid) объекты

– полигональные грани плотно примыкают друг к другу и ограничивают некоторое пространство

Примеры: куб, сфераТонкие оболочки

– Полигональные грани примыкают друг к другу без ограничения пространства, представляя собой поверхность бесконечно малой толщины

Пример: график функции z=f(x,y)

Компьютерная графика. Лекция 5

Примеры

Компьютерная графика. Лекция 5

Вершины полигона

Каждый полигон определяется путем перечисления его вершин

Вершина задается при помощи перечисления ее координат в пространстве

Компьютерная графика. Лекция 5

Пример представления вершины полигональной сетки

struct Vertex{

GLfloatx;GLfloaty;GLfloatz;

};

Компьютерная графика. Лекция 5

Нормаль к полигону

Вектор нормали задает направление перпендикуляра грани

При рисовании объекта эта информация используется для определения того, сколько света рассеивается на данной грани

Компьютерная графика. Лекция 5

Пример представления нормали полигона

struct Normal{

GLfloatx;GLfloaty;GLfloatz;

};

НОРМАЛИ В ВЕРШИНАХ И НОРМАЛИ В ПОВЕРХНОСТЯХ Использование нормалей к грани плохо

подходит для визуализации гладких поверхностей, например, сферы

Удобнее оказывается связывать вектор нормали с каждой вершиной грани Такой способ упрощает процесс отсечения и

процесс закрашивания гладких криволинейных форм

Компьютерная графика. Лекция 5

Компьютерная графика. Лекция 5

Нормали в вершинах и нормали в поверхностях

В OpenGL нормаль является атрибутом вершины

– С т.з. быстродействия выгоднее хранить отдельную копию вектора нормали для каждой вершины

Одна и та же вершина может входить в состав нескольких смежных граней

– Вывод: лучше хранить все вершины сетки (с их атрибутами) в отдельном массиве

– При задании граней указывать индексы используемых вершин

Компьютерная графика. Лекция 5

Пример структур данных для хранения сеток

struct Vector3d{

GLfloat x, y, z;};

struct Mesh{

GLuint numVertices;Vertex *pVertices;

GLuint numFaces;Face *pFaces;

};

struct Vertex{

Vector3d position;Vector3d normal;// …

};

struct Face{

GLushort v0;GLushort v1;GLushort v2;

};

Компьютерная графика. Лекция 5

Возможные вариации

Если полигональная сетка задается при помощи однотипных примитивов, например, треугольников, то можно представить грани в виде массива индексов вершин.

Необходимо выбирать структуры данных, наиболее подходящих для решения конкретной задачи

Компьютерная графика. Лекция 5

Примерstruct Vector3d{

GLfloat x, y, z;};

struct Mesh{

GLuint numVertices;Vertex *pVertices;

GLenum primitiveType;GLuint numIndices;GLushort *pIndices;

};

struct Vertex{

Vector3d position;Vector3d normal;// …

};

void DrawMesh(Mesh *pMesh){

glBegin(pMesh->primitiveType);for (GLuint i = 0; i < pMesh.numIndices; ++i){

GLushort v = pIndices[i];glNormalfv(&(pMesh->pVertices[v].normal.x));glVertex3fv(&(pMesh->pVertices[v].position.x));

}glEnd();

}

Компьютерная графика. Лекция 5

Лицевые и нелицевые стороны граней

Каждая плоская грань (полигон) имеет две стороны:

– лицевую (видна извне объекта)– нелицевую (видна изнутри объекта)– В один момент времени с заданной точки

видна только одна сторона граниснаружи монолитного объекта видны

только лицевые грани– OpenGL позволяет эффективно отбрасывать

лицевые или нелицевые грани, что ускоряет процесс рисования

Компьютерная графика. Лекция 5

Определение видимой стороны грани

Для определения стороны грани, повернутой к наблюдателю, OpenGL использует направление

обхода вершин грани после проецирования– OpenGL позволят выбрать направление

обхода вершин лицевых гранейНаправление обхода нелицевых вершин

будет противоположным– Вершины всех граней сетки необходимо

перечислять в одном и том направлении обхода, если смотреть на лицевую сторону граней

Компьютерная графика. Лекция 5

Обход сторон куба против часовой стрелки

Компьютерная графика. Лекция 5

Команда glFrontFace

Задает направление обхода вершин грани, соответствующее ее лицевой стороне (Front

face):– void glFrontFace(GLenum mode)

где mode:GL_CW – по часовой стрелке (Clockwise) GL_CCW – против часовой стрелки

(Counter clockwise), это значение по умолчанию

Компьютерная графика. Лекция 5

Режим отбраковки граней (Face culling)

После того, как направление обхода вершин грани установлено, OpenGL может произвести ее отбраковку

Для этого необходимо включить режим отбраковки граней и указать какие из граней должны быть отбракованы

Компьютерная графика. Лекция 5

Управление режимом отбраковки граней

• glEnable(GL_CULL_FACE)• glDisable(GL_CULL_FACE)• void glCullFace(GLenum mode)

где mode:– GL_FRONT– GL_BACK– GL_FRONT_AND_BACK

Компьютерная графика. Лекция 5

Нахождение нормальных векторов (нормалей)

Координаты нормалей для каждой вершины можно задавать:

– вручную (в процессе моделирования)– вычислять аналитически (перпендикуляр к

криволинейной поверхности, описываемой функционально)

– вычислять на основе полигональной сетки

Компьютерная графика. Лекция 5

Задание нормалей вручную

Позволяет задать нормали к поверхности способом, лучшим с точки зрения дизайнера

Основной недостаток – он очень утомителен и во многих случаях может быть заменен на методы автоматического генерирования нормалей

Компьютерная графика. Лекция 5

Редактирование нормалей в программе 3D Studio Max

Компьютерная графика. Лекция 5

Аналитический метод нахождения нормалей

Для функционально заданных поверхностей вектор нормали по направлению совпадает с вектором антиградиента в точке поверхностиНахождение градиента:

– Нахождение вектора частных производных– Численное дифференцирование

z

F

y

F

x

F

dz

dF

dy

dF

dx

dFzyxF

zyxzyxF

,,

),,( 22

Компьютерная графика. Лекция 5

Пример

Пусть необходимо найти градиент в точке (1,1) к поверхности:

– Z = x2 + y2

Решение:

122)2,1,1()11,1,1()1,1(

122,,

),,(

22

22

FFF

yxzyxF

zyxzyxF

Для формирования нормали необходимо нормализовать данный вектор (привести его к единичной длине)

Компьютерная графика. Лекция 5

Вычисление нормалей для плоских граней полигональной сетки

Для плоских граней сетки достаточно вычислить перпендикуляр к каждой грани и связать его с каждой из вершин этой грани

– использование векторного произведения векторов, соединяющих соседние вершины граней

Проблемы:– большие погрешности вычисления в случае

выбора почти параллельных векторов– проблемы с гранями, имеющими больше 3

вершин

Компьютерная графика. Лекция 5

Метод Ньюэла для нахождения нормали к плоской грани

Разработан Мартином Ньюэллом, решает указанные проблемы простого способа

Njjnext

yyxxn

xxzzn

zzyyn

N

iinextiinextiz

N

iinextiinextiy

N

iinextiinextix

mod)1()(

;))((

,))((

,))((

1

0)()(

1

0)()(

1

0)()(

Компьютерная графика. Лекция 5

Нахождение нормали к вершинам сетки, описывающим криволинейную поверхность

Грани сетки, описывающей криволинейную поверхность, могут иметь общие вершины

За вектор нормали в таких вершинах можно принять среднее арифметическое нормалей прилегающих граней

Компьютерная графика. Лекция 5

Свойства сеток

МонолитностьСовокупность грани сетки заключает в себе

некоторое пространство Связность

Между любыми двумя вершинами сетки существует непрерывный путь вдоль ребер полигонов

ПростотаСетка является монолитной и не содержит отверстий

ПлоскостностьКаждая грань сетки является плоским полигоном

ВыпуклостьОтрезок прямой, соединяющий любые две

внутренние точки объекта целиком лежит внутри него

Компьютерная графика. Лекция 5

Моделирование поверхностей вращенияПоверхность вращения образуется посредством

вращательной развертки с заметанием профильной кривой C вокруг некоторой оси

– Тор– Пешка– Сфера– Купол церкви– Рюмки, тарелки– Колба лампы накаливания

Компьютерная графика. Лекция 5

Создание поверхности вращения

Компьютерная графика. Лекция 5

Поверхности на базе функций двух переменных

Некоторые поверхности однозначны в одном измерении, поэтому могут быть явно выражены функции двух независимых переменныхТакие функции еще называют полем высот и задают в виде формулы следующего типа:

– y=f(x, z)Для визуализации таких поверхностей обычно вычисляют значение y в узлах равномерной сетки вдоль осей x и z, а затем рисуют последовательность ячеек полученной сетки

Компьютерная графика. Лекция 5

Пример поверхности заданной, функцией sinc с круговой симметрией

22

22 )sin(

zx

zxy

Компьютерная графика. Лекция 5

Равномерно разбиваем отображаемую область функции вдоль осей x и y

x

y

Компьютерная графика. Лекция 5

Вычисляем значение координаты z и нормалей в узлах сетки

Компьютерная графика. Лекция 5

Рисуем сетку с помощью лент из треугольников

x

y

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

Компьютерная графика. Лекция 5

Или даже с помощью одной ленты

0

1

2

3

4

5

6

7

8

9

1413121110

0-1-2-3-4-5-6-7-8-9-(9-14)-

14-9-13-7-12-5-11-3-10-1-(10-10)-

19 20 21 22

10-19-11-20-12-21-13-22-14-23-...

23

Компьютерная графика. Лекция 5

Результат

ЗАКРАШИВАНИЕ

Компьютерная графика. Лекция 5

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

Отражение света от поверхности зависит: от физических свойств материала, из

которого она изготовлена от характера и расположения источника

света.

Компьютерная графика. Лекция 5

Закрашивание

Компьютерная графика. Лекция 5

Типы источников света

Источники света, в зависимости от характера освещения можно разделить на: точечные источники; прожекторы; удаленные источники.

Точечный источник света

Идеальный точечный источник света излучает свет одинаково во всех направлениях. Использование точечных источников в большинстве приложений определяется скорее простотой работы с ними, чем желанием точно передать характеристики реальных физических осветительных приборов.

Компьютерная графика. Лекция 5

Прожектор

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

Компьютерная графика. Лекция 5

Удалённый источник света

Характерной особенностью удалённого источника света является то, что все испускаемые им лучи можно считать параллельными. Использование такого источника в сцене избавляет о необходимости рассчитывать направления лучей, освещающих разные точки отображаемой поверхности, а значит, существенно повышает скорость формирования изображения. Прекрасным примером такого источника является солнце.

Компьютерная графика. Лекция 5

Компьютерная графика. Лекция 5

Свойства освещения

Световая энергия может: излучаться поверхностью отражаться от поверхности проходить сквозь поверхность

Яркость (или интенсивность) освещения зависит от энергии светового потока, которая обуславливается:

1. мощностью источника света2. отражающими и пропускающими

свойствами объекта

Можно выделить три основных типа характера взаимодействия света и материала

поверхности:1. диффузное отражение;2. зеркальное отражение;3. преломление.

Компьютерная графика. Лекция 5

Взаимодействие света и поверхности

Диффузное отражение Диффузное отражение

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

Компьютерная графика. Лекция 5

Такой тип взаимодействия характерен для поверхности равномерно окрашенной стены или поверхности Земли, как она представляется пилоту самолета или космического летательного аппарата.

Компьютерная графика. Лекция 5

Диффузное отражение

Освещение точечным источником

Свет точечного источника отражается от поверхности рассеивателя по закону Ламберта: интенсивность отражения пропорциональна косинусу угла между внешней нормалью к поверхности и направлением к источнику света

Компьютерная графика. Лекция 5

Диффузное отражение

Если - интенсивность источника света, - угол между вектором внешней нормали к поверхности и направлением к источнику света, то интенсивность отраженного света определяется формулой

При таком расчете интенсивности получится очень контрастная картина, т.к. участки поверхности, на которые лучи от источника не попадают напрямую, останутся абсолютно черными.

Компьютерная графика. Лекция 5

Диффузное отражение

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

 где - коэффициент диффузного отражения рассеянного света, - коэффициент диффузного отражения падающего света,

Компьютерная графика. Лекция 5

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

 где - расстояние до центра проекции, а - произвольная постоянная.

Диффузное отражение

Зеркальное отражениеЗеркальное отражение

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

Зеркало - это идеально отражающая поверхность. Хотя небольшая часть энергии падающего луча и поглощается, остальной свет отражается под одним углом, причем этот угол равен углу падения луча.

Компьютерная графика. Лекция 5

Компьютерная графика. Лекция 5

Свойства зеркального отражения

• Зеркальное отражение является направленным

• Идеальное зеркало отражает лучи по принципу "отраженный и падающий лучи лежат в одной плоскости, причем угол падения равен углу отражения"

• Если поверхность не идеально зеркальная, то лучи отражаются в различных направлениях, но с разной интенсивностью, а функция изменения интенсивности имеет четко выраженный максимум

• Поскольку физические свойства зеркального отражения довольно сложны, то в компьютерной графике используется эмпирическая модель Фонга

Компьютерная графика. Лекция 5

Модель Фонга

Для глаза наблюдателя интенсивность зеркально отраженного луча зависит от угла между идеально отраженным лучом и направлением к наблюдателю, а также от длины волны.

Компьютерная графика. Лекция 5

Модель ФонгаМодель Фонга описывается соотношением

где - функция отражения, - длина волны. Степень, в которую возводится косинус угла, влияет на размеры светового блика, наблюдаемого зрителем.

Преломление

Луч света, падающий на поверхность, преломляется и проникает в среду объекта под другим углом. Этот процесс рефракции характерен для стекла и воды. Как правило, при этом отражается часть падающего света.

Компьютерная графика. Лекция 5

Компьютерная графика. Лекция 5

Алгоритмы моделирования освещения условно можно разделить на две группы: алгоритмы локального освещения и алгоритмы глобального освещения.

Алгоритмы локального освещения - самые простые способы расчета освещенности поверхностей, рассматривают отражение или пропускание света для каждой поверхности 3D сцены независимо от других поверхностей, принимая во внимание только первичные источники света (задача Lighting/Shading: интенсивность, цвет, направление распространения отражённого и преломленного света).

Глобальное и локальное освещение

Компьютерная графика. Лекция 5

Простая (локальная) модель освещенностиМодель освещенности, учитывающую зеркальное и диффузное отражения, можно описать формулой

 Учитывая, что , где - направление к источнику, - внешняя нормаль, а отраженный вектор , где , получаем формулу

Компьютерная графика. Лекция 5

Более сложные модели освещенностиВозникает необходимость использовать

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

Компьютерная графика. Лекция 5

Более сложные модели освещенности

Пропускание света может быть диффузным (если часть энергии света рассеивается средой) или направленным: • в первом случае мы имеем дело с

полупрозрачными телами, которые изменяют окраску видимых сквозь них объектов.

• во втором случае тело является прозрачным, и оно визуально обнаруживается только благодаря искажениям объектов за счет преломления лучей.

Компьютерная графика. Лекция 5

Более сложные модели освещенности

Преломление в призме

При наличии в пространственной сцене прозрачных или полупрозрачных объектов надо учитывать, что изображение других объектов будет отличаться от обычной проекции на картинную плоскость

Компьютерная графика. Лекция 5

Эффекты восприятия изображения

Глаз адаптируется к средней яркости рассматриваемой сцены, поэтому при смене фона изменяется восприятие сцены. Однородно окрашенная область на более темном фоне будет казаться более яркой, чем на светлом. Кроме того, она будет восприниматься как более обширная

Компьютерная графика. Лекция 5

Плоское закрашивание

Если предположить, что источник света находится на бесконечности, то лучи света, падающие на поверхность, параллельны между собой. Если наблюдатель находится в бесконечно удаленной точке, то эффектом ослабления света с увеличением расстояния от источника можно пренебречь. Векторы, направленные от разных точек поверхности к наблюдателю, также будут параллельны. При выполнении всех этих условий, плоская грань во всех точках имеет одинаковую интенсивность освещения, поэтому она закрашивается одним цветом. Такое закрашивание называется плоским.

Компьютерная графика. Лекция 5

Закраска методом Гуро

• Используются не нормали к плоским граням, а нормали к аппроксимируемой поверхности, построенные в вершинах многогранника.

• Вычисляются интенсивности в вершинах, а затем во всех внутренних точках многоугольника выполняется билинейная интерполяция интенсивности.

Компьютерная графика. Лекция 5

Закраска методом Гуро

Метод сочетается с алгоритмом построчного сканирования• для каждой сканирующей строки

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

Компьютерная графика. Лекция 5

Интерполяция интенсивности

Пусть - интенсивности в вершинах A,B,C, , - горизонтальные координаты этих точек. Тогда в точках пересечения сканирующей строки с ребрами многоугольника интенсивности можно вычислить по формулам интерполяции:

 После этого интенсивность в точке получаем путем интерполяции значений на концах отрезка:

Компьютерная графика. Лекция 5

Недостатки метода Гуро

Хорошо работает только с диффузной моделью отражения

• форма бликов на поверхности и их расположение не могут быть адекватно воспроизведены при интерполяции на многоугольниках.

Есть проблема построения нормалей к поверхности

• В алгоритме Гуро нормаль в вершине многогранника вычисляется путем усреднения нормалей к граням, примыкающим к этой вершине. Такое построение сильно зависит от характера разбиения.

Компьютерная графика. Лекция 5

Закраска методом Фонга

• Вместо интерполяции интенсивностей производится интерполяция вектора нормали к поверхности на сканирующей строке

• Нормали к поверхности в вершинах многогранника вычисляются так же, как и в методе Гуро. Затем выполняется билинейная интерполяция в сочетании с построчным сканированием. После построения вектора нормали в очередной точке вычисляется интенсивность.

Компьютерная графика. Лекция 5

Сравнение методов закрашивания

Стандартная поддержка освещенности в OpenGL

Максимум – 8 источников света Значение цвета примитива вычисляется

для каждой его вершины. Полученные цветовые значения линейно

интерполируются (освещение по Гуро)

Компьютерная графика. Лекция 5

Параметры, влияющие на освещенность в OpenGL

Текущий вектор нормали Свойства материала Параметры источников света Параметры модели освещения

Компьютерная графика. Лекция 5

Свойства материалаРазличные материалы по разному

отражают светНекоторые материалы сами излучают

свет, например, фосфорВ OpenGL материал обладает

следующими свойствами:Рассеянный цвет (GL_AMBIENT)Диффузный цвет (GL_DIFFUSE)Цвет зеркального отражения (GL_SPECULAR)Излучаемый цвет (GL_EMISSION)Степень зеркального отражения (GL_SHININESS)

Компьютерная графика. Лекция 5

Задание свойств материала в OpenGL

Для определения вышеупомянутых свойств материала используется команда glMaterial: glMaterial[f i](GLenum face, GLenum pname,

type param)glMaterial[f i]v(GLenum face, GLenum pname, const type *params)

face – GL_FRONT, GL_BACK или GL_FRONT_AND_BACK

pname – GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_EMISSION, GL_SHININESS

Компьютерная графика. Лекция 5

Установка цвета материала при помощи glColorПри включенном освещении текущий

цвет вершины не используетсявместо него используются цветовые

характеристики материалаОднако использование команды glMaterial*

для изменения цвета отдельных вершин может показаться громоздким

Команда glColorMaterial позволяет задавать параметры отдельных вершин с использованием команды glColor при включенном освещенииДля включения данной функции надо

выполнить:glEnable(GL_COLOR_MATERIAL)

Компьютерная графика. Лекция 5

glColorMaterial

Позволяет определить какие параметры материала изменяются при помощи команды glColor

glColorMaterial(GLenum face, GLenum mode) face – GL_FRONT, GL_BACK,

GL_FRONT_AND_BACK mode – GL_AMBIENT, GL_DIFFUSE,

GL_SPECULAR, GL_EMISSION, GL_AMBIENT_AND_DIFFUSE

Компьютерная графика. Лекция 5

Пример

void SetCubeMaterial(){

glEnable(GL_COLOR_MATERIAL);glColorMaterial(GL_FRONT,

GL_AMBIENT_AND_DIFFUSE);float specular[4] = {0.7f, 0.7f, 0.7f, 1};glMaterialfv(GL_FRONT, GL_SPECULAR, specular);glMaterialf(GL_FRONT, GL_SHININESS, 10);

}

Компьютерная графика. Лекция 5

Источники света в OpenGL

Включение режима освещения: glEnable(GL_LIGHTING)

Включение источника света: glEnable(GL_LIGHTi), где i – число от 0 до

GL_MAX_LIGHTS (не может быть больше 8) Задание параметров источника

света: glLight[i f](GLenum light, GLenum pname, type

param) glLight[i f]v(GLenum light, GLenum pname, const

type* params)

Компьютерная графика. Лекция 5

Скалярные параметры источника освещения

GL_SPOT_EXPONENT Распределение интенсивности света (от 0 до 128).

Увеличение данного параметра делает источник света более сфокусированным

GL_SPOT_CUTOFF максимальный угол разброса источника света [0, 90]

или 180 для точечных источников GL_CONSTANT_ATTENUATION,

GL_LINEAR_ATTENUATION, GL_QUADRATIC_ATTENUATION Постоянный, линейный и квадратичный факторы

ослабления света с расстоянием от источника света до вершины:

1/(k0 + k1*S + k2*S2)

Компьютерная графика. Лекция 5

Конический источник света

GL_SPOT_CUTOFF

Компьютерная графика. Лекция 5

Векторные параметры источника освещения

GL_AMBIENT – интенсивность фонового освещения GL_DIFFUSE – интенсивность диффузного

освещения GL_SPECULAR – интенсивность зеркального

отражения GL_POSITION – позиция источника света в

однородных координатах объекта Если компонент w равен 0, то источник света

рассматривается как направленный и бесконечно удаленный. Диффузное и зеркальное освещение рассчитываются исходя из направления на источник. Ослабление света при этом не действует.

GL_SPOT_DIRECTION – параметр params задает трехкомпонентный вектор направления конического источника света

Компьютерная графика. Лекция 5

Пример установки источника света

void SetLights(){

glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);

const float diffuseColor[4] = {0.8f, 0.8f, 0.8f, 1};const float ambientColor[4] = {0.2f, 0.2f, 0.2f, 1};const float specularColor[4] = {1.2f, 1.2f, 1.2f, 1};const float lightDirection[4] = {0.0f, 0.0f, 1.0f, 0};glLightfv(GL_LIGHT0, GL_AMBIENT, ambientColor);glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseColor);glLightfv(GL_LIGHT0, GL_POSITION, lightDirection);

}

Компьютерная графика. Лекция 5

Влияние освещения на реалистичность изображения

Компьютерная графика. Лекция 5

top related