{ OpenGL Лекция 3 (08.10.2012). float ambient[4] = {0.0, 0.0, 0.0, 1.0}; glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient); // RGBA интенсивность всей сцены.

Презентация:



Advertisements
Похожие презентации
Освещение и текстурирование в OpenGL Астана 2004 Лекция 10.
Advertisements

OpenGL API Алексей Игнатенко (MSU Graphics & Media Lab) Алексей Игнатенко (MSU Graphics & Media Lab)
Компьютерная графика. Лекция 5 Моделирование трехмерных поверхностей. Закрашивание.
OpenGL Лекция 2.. Преобразование координат Преобразования координат.
Фильтрация текстур. Пиксельные операции. Астана 2004 Лекция 11.
GPU vs. CPU 302 млн. транзисторов Тактовая частота 550Mhz 1GB 850x2 MHz памяти 380 млн. транзисторов Тактовая частота 650Mhz 1GB 775x2 MHz памяти Тактовая.
void glBlendFunc( GLenum srcfactor, GLenum destfactor );
Текстуры. Композиты Лекция 11 Алексей Игнатенко. На прошлой лекции Удаление невидимых поверхностей Удаление нелицевых граней Алгоритм художника Двоичное.
Излучательность. Трассировка лучей. Фотонные карты. Андрей Татаринов Глобальные модели освещения.
Лекция 13 Метод трассировки лучей Астана Трассировка лучей через сферическую каплю воды Луч 7 -- луч Декарта [1637]
Растеризация Текстуры Композиты. На лекции 4-е задание Задача растеризации Текстурирование Определение Текстурные отображения для сферы, тора, цилиндра.
OpenGL Лекция 4 ( ). void glVertexPointer( GLint size, GLenum type, GLsizei stride, void *ptr ) size определяет число координат вершины (2, 3,
Компьютерная визуализация Лекция 3 СПбГУ ИТМО 2004.
Лекция 1 ( ). Основные возможности OpenGL Набор базовых примитивов: точки, линии, многоугольники и т.п. Видовые и координатные преобразования.
Локальные и глобальные модели освещения. Фролов Владимир. 25 сентября 2006г.
RTIlluminate Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 1 Трассировка лучей. Модели освещения. URL:
Астана ( )Компьютерная графика (лекция 6) ВВЕДЕНИЕ В OPENGL Лекция 6.
OpenGL Лекция 3. Построение тени Проективные тени Объемные тени Карты теней Мягкие тени.
ТРЕХМЕРНАЯ ГРАФИКА Компьютерная графика. Геометрические примитивы.
Лекция 5 ( ). GLfloat fogColor[4]= {0.5f, 0.5f, 0.5f, 1.0f}; // Цвет тумана glClearColor(0.5f,0.5f,0.5f,1.0f); // Будем очищать экран, заполняя.
Транксрипт:

{ OpenGL Лекция 3 ( )

float ambient[4] = {0.0, 0.0, 0.0, 1.0}; glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient); // RGBA интенсивность всей сцены glLightModelf(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_FALSE); // Способ вычисления углов зеркального отражения glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE); // Выбор между односторонним и двухсторонним освещением Модель освещения

glDepthFunc(GL_LESS);glEnable(GL_DEPTH_TEST); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); glEnable(GL_LIGHTING);glDisable(GL_LIGHTING); glEnable(GL_LIGHT0); … glEnable(GL_LIGHT7); glDisable(GL_LIGHT0); … glDisable(GL_LIGHT7); Включение освещения

glShadeModel(GL_SMOOTH); // Освещение и цвет рассчитываются для каждой вершины и интерполируются (Default) glShadeModel(GL_FLAT); // Вся грань закрашивается с использованием цвета и освещенности, рассчитанных для ее первой вершины Тип расчета освещения

glEnable(GL_NORMALIZE);glBegin(GL_QUADS); glNormal3f(0, 0, +1); glVertex3f(-1, -1, -1); glVertex3f(-1, +1, -1); glVertex3f(+1, +1, -1); glVertex3f(+1, -1, -1); glEnd(); Нормаль к поверхности

float light_position[] = {0.0, 0.0, 0.0, 1.0}; glLightfv(GL_LIGHT1, GL_POSITION, light_position); // Положение источника света (x, y, z, w) float light_direction[] = {1.0, 0.0, 0.0}; glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, light_direction); // Направление света прожектора (x, y, z) Положение лампы и направление света

glLightf(GL_LIGHT1, GL_SPOT_EXPONENT, 64); // Экспонента яркости от центра до края конуса glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 90); // Угловая ширина светового луча Параметры прожектора

float light_ambient[] = {0.04, 0.04, 0.04, 1.0}; glLightfv(GL_LIGHT1, GL_AMBIENT, light_ambient); // Интенсивность фонового света float light_diffuse[] = {1.0, 0.85, 0.85, 1.0}; glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse); // Интенсивность диффузного света float light_specular[] = {0.5, 0.45, 0.45, 1.0}; glLightfv(GL_LIGHT1, GL_SPECULAR, light_specular); // Интенсивность зеркального света Интенсивность света

glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.0); glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.3); glLightf(GL_LIGHT1, GL_QUADRATIC_ATTENUATION, 0.0); Fatt = 1 / (Kc + Kl * d + Kq * (d * d)) где: d расстояние между позицией источника света и экраном, Kc GL_CONSTANT_ATTENUATION (постоянный фактор ослабления), Kl GL_LINEAR_ATTENUATION (линейный фактор ослабления), Kq GL_QUADRATIC_ATTENUATION (квадратичный фактор ослабления). Ослабление света

glEnable (GL_COLOR_MATERIAL); // Учитывать цвет примитивов Материал может рассеивать, отражать и излучать свет. Свойства материала устанавливаются при помощи функции glMaterialfv(GLenum face, GLenum pname, GLtype* params) Первый параметр определяет грань, для которой устанавливаются свойства. Он может принимать одно из следующих значений: GL_BACK задняя грань GL_BACK задняя грань GL_FONT передняя грань GL_FONT передняя грань GL_FRONT_AND_BACK обе грани GL_FRONT_AND_BACK обе грани Свойства материала

Второй параметр функции glMaterialfv определяет свойство материала, которое будет установлено, и может принимать следующие значения. GL_AMBIENT рассеянный свет GL_AMBIENT рассеянный свет GL_DIFFUSE тоже рассеянный свет GL_DIFFUSE тоже рассеянный свет GL_SPECULAR отраженный свет GL_SPECULAR отраженный свет GL_EMISSION излучаемый свет GL_EMISSION излучаемый свет GL_SHININESS степень отраженного света GL_SHININESS степень отраженного света GL_AMBIENT_AND_DIFFUSE оба рассеянных света GL_AMBIENT_AND_DIFFUSE оба рассеянных света Ambient и diffuse переводятся на русский как "рассеянный". Разница между ними не очень понятна. Третий параметр определяет цвет соответствующего света, кроме случая GL_SHININESS. Цвет задается в виде массива из четырех элементов - RGBA. В случае GL_SHININESS params указывает на число типа float, которое должно быть в диапазоне от 0 до 128. Свойства материала

glEnable(GL_ALPHA_TEST);glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // glBlendFunc(GL_SRC_ALPHA, GL_ONE); glColor4f(1, 1, 1, 0.75); Прозрачность

void glBlendFunc(GLenum sfactor, GLenum dfactor); sfactor Specifies how the red, green, blue, and alpha source blending factors are computed. The following symbolic constants are accepted: Specifies how the red, green, blue, and alpha source blending factors are computed. The following symbolic constants are accepted: GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR, GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA, and GL_SRC_ALPHA_SATURATE. GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR, GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA, and GL_SRC_ALPHA_SATURATE. The initial value is GL_ONE. The initial value is GL_ONE.dfactor Specifies how the red, green, blue, and alpha destination blending factors are computed. The following symbolic constants are accepted: Specifies how the red, green, blue, and alpha destination blending factors are computed. The following symbolic constants are accepted: GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA. GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR, GL_CONSTANT_ALPHA, and GL_ONE_MINUS_CONSTANT_ALPHA. GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA. GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR, GL_CONSTANT_ALPHA, and GL_ONE_MINUS_CONSTANT_ALPHA. The initial value is GL_ZERO. The initial value is GL_ZERO. glBlendFunc