КГ_4глава (Компьютерная графика), страница 5
Описание файла
Файл "КГ_4глава" внутри архива находится в папке "Компьютерная графика". Документ из архива "Компьютерная графика", который расположен в категории "". Всё это находится в предмете "инженерная графика" из 4 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "компьютерная графика" в общих файлах.
Онлайн просмотр документа "КГ_4глава"
Текст 5 страницы из документа "КГ_4глава"
где /— интенсивность излучения источника, Ks— коэффициент пропорциональности.
Диффузное отражение. Этот вид отражения присущ матовым поверхностям. Матовой можно считать такую поверхность, размер шероховатостей которой уже настолько велик, что падающий луч рассеивается равномерно во все стороны. Такой тип отражения характерен, например, для гипса, песка, бумаги. Диффузное отражение описывается законом Ламберта, согласно которому интенсивность отраженного света пропорциональна косинусу угла
между направлением на точечный источник света и нормалью к поверхности (рис. 4.30).
где I— интенсивность источника света, Kd— коэффициент, который учитывает свойства материала поверхности. Значение Кd находится в диапазоне от 0 до 1 [28]. Интенсивность отраженного света не зависит от расположения наблюдателя.
Рис. 4.30. Матовая поверхность
Матовая поверхность имеет свой цвет. Наблюдаемый цвет матовой поверхности определяется комбинацией собственного цвета поверхности и цвета излучения источника света.
При создании реалистичных изображений следует учитывать то, что в природе, вероятно, не существует идеально зеркальных или полностью матовых поверхностей. При изображении объектов средствами компьютерной графики обычно моделируют сочетание зеркальности и диффузного рассеивания в пропорции, характерной для конкретного материала. В этом случае модель отражения записывают в виде суммы диффузной и зеркальной компонент:
где константы Kd, Кs определяют отражательные свойства материала. Согласно этой формуле интенсивность отраженного света равна нулю для некоторых углов θ и а. Однако в реальных сценах обычно нет полностью затемненных объектов, следует учитывать фоновую подсветку, освещение рассеянным светом, отраженным от других объектов. В таком случае интенсивность может быть эмпирически выражена следующей формулой:
где /а — интенсивность рассеянного света, Ка — константа.
Можно еще усовершенствовать модель отражения, если учесть то, что энергия от точечного источника света уменьшается пропорционально квадрату
расстояния. Использование такого правила вызывает сложности, поэтому на практике часто реализуют модель, выражаемую эмпирической формулой [28|
где R — расстояние от центра проекции до поверхности, к — константа.
Как определить цвет закрашивания точек объектов в соответствии с данной моделью? Наиболее просто выполняется расчет в градациях серого цвета (например, для белого источника света и серых объектов). В данном случав интенсивность отраженного света соответствует яркости. Сложнее обстоит дело с цветными источниками света, освещающими цветные поверхности. Например, для модели RGB составляются три формулы расчета интенсивности отраженного света для различных цветовых компонент. Коэффициента Ка и Kd различны для разных компонент — они выражают собственный цвет поверхности. Поскольку цвет отраженного зеркального луча равен цвету источника, то коэффициент К, будет одинаковым для всех компонент цветовой модели. Цвет источника света выражается значениями интенсивности I для соответствующих цветовых компонент.
Алгебра векторов
Здесь уместно сделать небольшое отступление от темы. Рассмотрим элементы алгебры векторов. Вектором называется отрезок прямой, соединяющий некоторые точки пространства А и В. Направление вектора — от начальной точки А к конечной точке В. Радиус-вектор R — это вектор, с начальной точкой в центре координат. Координатами радиус-вектора являются координаты конечной точки (рис. 4.31). Длина радиус-вектора часто называется модулем, обозначается как |R| и Рис. 4.31. Радиус-вектор вычисляется следующим образом:
Единичный вектор — это вектор, длина которого равна единице. Перечислим основные операции над векторами.
1. Умножение вектора на число X = Va. Результат — вектор X, длина которого в а раз больше вектора V. Если число а положительно, то направление вектора X совпадает с вектором V. При о<0 вектор X имеет противоположное направление вектору V. Если V— это радиус-вектор, то координаты вектора результата будут (а *хv, а *уv, a *zv), то есть каждая координата вектора умножается на число а.
2. Сложение векторов С = А+В. Результат сложения — это вектор, соответствующий одной из диагоналей параллелограмма, сторонами которого являются векторы А и В (рис. 4.32). Все три вектора лежат в одной плоскости. Для радиус-векторов А и В координаты вектора результата определяются так:
Разность двух векторов С = А - В можно определить через операцию сложения С = А + (—В). Вектор разности соответствует другой диагонали параллелограмма, изображенного на рис. 4.32. При вычитании радиус-векторов соответствующие координаты вычитаются:
3. Скалярное произведение векторов с = АчВ. Результатом операции является число (скаляр), которое равно произведению длин векторов на косинус угла между ними:
Если А и В — это радиус-векторы, то результат можно вычислить через координаты следующим образом:
4. Векторное произведение векторов С = АхВ. Результатом операции является вектор, перпендикулярный к плоскости параллелограмма, образованного сторонами векторов А и В, а длина вектора равна площади этого параллелограмма — подобно тому, как изображено на рис. 4.33.
В случае, когда векторы А и В являются радиус-векторами, координаты вектора результата С вычисляются по формулам:
Обратите внимание на то, что АхВ = -ВхА.
Рис. 4.33. Векторное
Иными словами, порядок сомножителей оп- произведение
ределяет направление вектора результата.
В этом можно убедиться, если в формуле координат поменять местами координаты векторов А и В.
Кроме того, направление вектора результата операции АхВ зависит и от расположения координатных осей (система координат, изображенная на рис. 4.33, называется левой [16]). Назовите ось у осью х, а ось х — осью y (получится правая система), а также соответственно поменяйте местами координаты х и у векторов А и В в формуле векторного произведения. В результате такой перестановки координаты вектора С поменяют знак, то есть вектор будет иметь противоположное направление.
Вычисление нормалей и углов отражения
Вычисление координат вектора нормали. Рассматривая модели отражения света, вы, наверное, обратили внимание на то, что нормаль к поверхности является важным элементом. Определение вектора нормали к поверхности в заданной точке может быть выполнено различными способами. В значительной степени это определяется типом модели описания поверхности. Для поверхностей, заданных в аналитической форме, известны методы дифференциальной геометрии, которые основываются на вычислении частных производных функций описания [19]. Например, если поверхность задана параметрическими функциями
то координаты вектора нормали можно вычислить так [3]:
В случае описания поверхности векторно-полигональной моделью для определения нормалей можно использовать методы векторной алгебры.
Рис. 4.34. Одна грань поверхности Рис. 4.35. Радиус-векторы
Пусть в пространстве задана некоторая многогранная поверхность. Рассмотрим одну ее плоскую грань в виде треугольника (рис. 4.34). Для вычисления координат вектора нормали воспользуемся векторным произведением любых двух векторов, лежащих в плоскости грани. В качестве таких векторов могут служить и ребра грани, например, ребра 1-2 и 1-3. Однако формулы для векторного произведения были определены нами только для радиус-векторов. Чтобы перейти к радиус-векторам, введем новую систему координат, центр которой совпадает с вершиной 1, а оси параллельны осям прежней системы. Координаты вершин в новой системе:
Теперь назовем ребро (1-2) вектором А, а ребро (1-3) — вектором В, как показано на рис. 4.35. Таким образом, положение нормали к грани в пространстве будет описываться радиус-вектором N. Его координаты в системе (х1, у', z1) выразим формулами для векторного произведения:
Здесь использованы координаты вершин грани до переноса.
Плоская грань может изображаться в различных ракурсах. В каждой конкретной ситуации необходимо выбирать направление нормали, соответствующее видимой стороне грани. Если плоская грань может быть видна с обратной стороны, то тогда в расчетах отраженного света необходимо выбирать в качестве нормали обратный вектор, то есть (-N).
Если полигональная поверхность имеет не треугольные грани, а, например, плоские четырехугольные, то расчет нормали можно выполнять по любым: трем вершинам грани.
Диффузное отражение. Определим косинус угла между вектором нормали и направлением на источник света.
Первый пример (возможно, самый простой). Источник света располагается на оси z в бесконечности. Если расчеты производятся для видовой системы координат, то это означает, что источник света располагается на одной оси с камерой.