Компьютерная графика. Лекция 5 Моделирование трехмерных поверхностей. Закрашивание.

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



Advertisements
Похожие презентации
{ OpenGL Лекция 3 ( ). float ambient[4] = {0.0, 0.0, 0.0, 1.0}; glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient); // RGBA интенсивность всей сцены.
Advertisements

Освещение и текстурирование в OpenGL Астана 2004 Лекция 10.
Лекция 13 Метод трассировки лучей Астана Трассировка лучей через сферическую каплю воды Луч 7 -- луч Декарта [1637]
Лекции по физике. Оптика Геометрическая оптика. 2 Основные законы оптики 1. Закон прямолинейного распространения света (в однородной среде) 2. Закон независимости.
Геометрическая оптика. Тема урока: «Прямолинейное распространение света. Законы отражения и преломления света».
Геометрическая оптика Мясникова Г.И. Учитель физики.
ГЕОМЕТРИЧЕСКАЯ ОПТИКА. Геометрическая оптика- раздел оптики, в котором законы распространения света рассматриваются на основе представления о световых.
Геометрическое моделирование трехмерных объектов..
Обобщающий урок по главе «Оптические явления» Цель урока: закрепление знаний и умений полученных учащимися, при изучении темы «Оптические явления», а также.
ГЛАВА 3 ЭЛЕМЕНТЫ АНАЛИТИЧЕСКОЙ ГЕОМЕТРИИ. §1. Прямая на плоскости. Различные виды уравнений прямой на плоскости. Пусть имеется прямоугольная система координат.
Геометрическая оптика. Тема урока: «Прямолинейное распространение света. Закон отражения света».
Параметрическое представление плоских и пространственных кривых При параметрическом задании кривая представляется векторной функцией r 1, r 2, r 3 - радиус.
Лекции по физике. Оптика Геометрическая оптикаЛекции по физике. Оптика Геометрическая оптика.
Корпускулярная Изучением данной теории занимался Ньютон Свет – это поток частиц, идущих от источника во все стороны (перенос вещества ) Затруднения: Почему.
Оптика – раздел физики, изучающий свойства и физическую природу света, а также его взаимодействие с веществом. Учение о свете принято делить на три части.
ТРЕХМЕРНАЯ ГРАФИКА Компьютерная графика. Геометрические примитивы.
1 Отражение и преломление света на границе раздела двух сред 1. Основные положения геометрической оптики Закон преломления: падающий луч, преломленные.
Интерференция в тонких пленках. Плоскопараллельная пластинка. Пусть на плоскопараллельную пластину падает параллельный пучок света. Пластина отбросит.
Способы построения поверхностей Поверхности, составные поверхности Аналитические- квадратичные поверхности Построенные на базе точек Построенные на базе.
Кафедра физики Общая физика. «Магнитостатика» 9 февраля 2004 г. ЛЕКЦИЯ 1. ПЛАН ЛЕКЦИИ 1.Введение в магнитостатику. Сила Лоренца. 2.Взаимодействие токов.
Транксрипт:

Компьютерная графика. Лекция 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

Нормали в вершинах и нормали в поверхностях В OpenGL нормаль является атрибутом вершины –С т.з. быстродействия выгоднее хранить отдельную копию вектора нормали для каждой вершины Одна и та же вершина может входить в состав нескольких смежных граней –Вывод: лучше хранить все вершины сетки (с их атрибутами) в отдельном массиве –При задании граней указывать индексы используемых вершин

Компьютерная графика. Лекция 5 Пример структур данных для хранения сеток struct Vector3d { GLfloat x, y, z; }; struct Mesh { GLuint numVertices; Vertex *pVertices; GLuint numFaces; Face *pFaces; }; struct Vertex { Vector3d position; Vector3dnormal; // … }; struct Face { GLushort v0; GLushortv1; GLushortv2; };

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

Компьютерная графика. Лекция 5 Пример struct Vector3d { GLfloat x, y, z; }; struct Mesh { GLuint numVertices; Vertex *pVertices; GLenum primitiveType; GLuint numIndices; GLushort *pIndices; }; struct Vertex { Vector3dposition; Vector3dnormal; // … }; 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 Аналитический метод нахождения нормалей Для функционально заданных поверхностей вектор нормали по направлению совпадает с вектором антиградиента в точке поверхности Нахождение градиента: –Нахождение вектора частных производных –Численное дифференцирование

Компьютерная графика. Лекция 5 Пример Пусть необходимо найти градиент в точке (1,1) к поверхности: –Z = x 2 + y 2 Решение: Для формирования нормали необходимо нормализовать данный вектор (привести его к единичной длине)

Компьютерная графика. Лекция 5 Вычисление нормалей для плоских граней полигональной сетки Для плоских граней сетки достаточно вычислить перпендикуляр к каждой грани и связать его с каждой из вершин этой грани –использование векторного произведения векторов, соединяющих соседние вершины граней Проблемы: –большие погрешности вычисления в случае выбора почти параллельных векторов –проблемы с гранями, имеющими больше 3 вершин

Компьютерная графика. Лекция 5 Метод Ньюэла для нахождения нормали к плоской грани Разработан Мартином Ньюэллом, решает указанные проблемы простого способа

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

Компьютерная графика. Лекция 5 Свойства сеток Монолитность Совокупность грани сетки заключает в себе некоторое пространство Связность Между любыми двумя вершинами сетки существует непрерывный путь вдоль ребер полигонов Простота Сетка является монолитной и не содержит отверстий Плоскостность Каждая грань сетки является плоским полигоном Выпуклость Отрезок прямой, соединяющий любые две внутренние точки объекта целиком лежит внутри него

Компьютерная графика. Лекция 5 Моделирование поверхностей вращения Поверхность вращения образуется посредством вращательной развертки с заметанием профильной кривой C вокруг некоторой оси –Тор –Пешка –Сфера –Купол церкви –Рюмки, тарелки –Колба лампы накаливания

Компьютерная графика. Лекция 5 Создание поверхности вращения

Компьютерная графика. Лекция 5 Поверхности на базе функций двух переменных Некоторые поверхности однозначны в одном измерении, поэтому могут быть явно выражены функции двух независимых переменных Такие функции еще называют полем высот и задают в виде формулы следующего типа: –y=f(x, z) Для визуализации таких поверхностей обычно вычисляют значение y в узлах равномерной сетки вдоль осей x и z, а затем рисуют последовательность ячеек полученной сетки

Компьютерная графика. Лекция 5 Пример поверхности заданной, функцией sinc с круговой симметрией

Компьютерная графика. Лекция 5 Равномерно разбиваем отображаемую область функции вдоль осей x и y

Компьютерная графика. Лекция 5 Вычисляем значение координаты z и нормалей в узлах сетки

Компьютерная графика. Лекция 5 Рисуем сетку с помощью лент из треугольников

Компьютерная графика. Лекция 5 Или даже с помощью одной ленты

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

З АКРАШИВАНИЕ Компьютерная графика. Лекция 5

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

Компьютерная графика. Лекция 5 Типы источников света Источники света, в зависимости от характера освещения можно разделить на: точечные источники; прожекторы; удаленные источники.

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

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

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

Свойства освещения Световая энергия может: излучаться поверхностью отражаться от поверхности проходить сквозь поверхность Яркость (или интенсивность) освещения зависит от энергии светового потока, которая обуславливается: 1. мощностью источника света 2. отражающими и пропускающими свойствами объекта

Можно выделить три основных типа характера взаимодействия света и материала поверхности: 1. диффузное отражение; 2. зеркальное отражение; 3. преломление. Компьютерная графика. Лекция 5 Взаимодействие света и поверхности

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

Компьютерная графика. Лекция 5 Диффузное отражение Освещение точечным источником Свет точечного источника отражается от поверхности рассеивателя по закону Ламберта: интенсивность отражения пропорциональна косинусу угла между внешней нормалью к поверхности и направлением к источнику света

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

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

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

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

Свойства зеркального отражения Зеркальное отражение является направленным Идеальное зеркало отражает лучи по принципу "отраженный и падающий лучи лежат в одной плоскости, причем угол падения равен углу отражения" Если поверхность не идеально зеркальная, то лучи отражаются в различных направлениях, но с разной интенсивностью, а функция изменения интенсивности имеет четко выраженный максимум Поскольку физические свойства зеркального отражения довольно сложны, то в компьютерной графике используется эмпирическая модель Фонга

Компьютерная графика. Лекция 5 Модель Фонга Для глаза наблюдателя интенсивность зеркально отраженного луча зависит от угла между идеально отраженным лучом и направлением к наблюдателю, а также от длины волны.

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

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

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

Компьютерная графика. Лекция 5 Простая (локальная) модель освещенности

Компьютерная графика. Лекция 5 Более сложные модели освещенности

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

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

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

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

Компьютерная графика. Лекция 5 Закраска методом Гуро Используются не нормали к плоским граням, а нормали к аппроксимируемой поверхности, построенные в вершинах многогранника. Вычисляются интенсивности в вершинах, а затем во всех внутренних точках многоугольника выполняется билинейная интерполяция интенсивности.

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

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

Компьютерная графика. Лекция 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/(k 0 + k 1 *S + k 2 *S 2 ) Компьютерная графика. Лекция 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