Конспект лекций по компьютерной графике. Конспект лекций по дисциплине Компьютерная графика
Скачать 16.3 Mb.
|
Глава 8. Реалистическое представление сценОсновные направления реалистического представления сцен трехмерной графики определяются как: синтез реалистичных изображений, реалистическое оживление синтезированных объектов (анимация). В этом разделе будут рассмотрены только некоторые базовые методы синтеза реалистических изображений: Модели освещения Модели закраски Трассировка лучей Имитация микрорельефа Механизмы отражения света Другие методы синтеза – прозрачность, тени, задание фактуры, излучательность и т.д. выносятся на самостоятельное изучение. 8.1 Закрашивание поверхностейВ этом разделе мы рассмотрим методы, которые позволяют получить более-менее реалистичное изображение для объектов, которые моделируются многогранниками и полигональными сетками. 8.1.1 Модели отражения светаРассмотрим, как можно определить цвет пикселов изображения поверхности в соответствии с интенсивностью отраженного света при учете взаимного расположения поверхности, источника света и наблюдателя. Зеркальное отражение света. Угол между нормалью и падающим лучом равняется углу между нормалью и отраженным лучом. Падающий луч, отраженный луч и нормаль располагаются в одной плоскости (рис. 8.1). Рис. 8.1. Зеркальное отражение света Поверхность считается идеально зеркальной, если на ней отсутствуют какие-либо неровности, шероховатости. Собственный цвет у такой поверхности не наблюдается. Световая энергия падающего луча отражается только по линии отраженного луча. Любое рассеивание в стороны от этой линии отсутствует. В природе, вероятно, нет идеально гладких поверхностей, поэтому полагают следующее: если глубина шероховатостей существенно меньше длины волны излучения, то рассеивание не наблюдается. Для видимого спектра можно принять, что глубина шероховатости поверхности зеркала должна быть меньше 0.5 мкм. Если поверхность зеркала отполирована неидеально, то наблюдается зависимость интенсивности отраженного света от длины волны — чем больше длина волны, тем лучшее отражение. Например, красные лучи отражаются сильнее, чем синие. При наличии шероховатости есть зависимость интенсивности отраженного света от угла падения. Отражение света максимально для углов Э, близких к 90 градусам. Рис. 8.2. Примры для разных значений показателя p модели Фонга Падающий луч, попадая на шероховатую поверхность реального зеркала, порождает не один отраженный луч, а несколько лучей, которые рассеиваются в разных направлениях. Зона рассеивания зависит от качества полировки и может быть описана некоторым законом распределения. Как правило, форма зоны рассеивания симметрична относительно линии идеального зеркально отраженного луча. К числу простейших, но довольно часто используемых, относится эмпирическая модель Фонга, соответственно которой интенсивность зеркально отраженного излучения пропорциональна (cosa) где а — угол отклонения от линии идеально отраженного луча. Показатель находится в диапазоне от 1 до 1000 и зависит от качества полировки. Запишем это таким образом: Is = I cos p , где I - интенсивность излучения источника Диффузное отражение. Этот вид отражения присущ матовым поверхностям. Матовой можно считать такую поверхность, размер шероховатостей которой уже настолько большой, что падающий луч рассеивается равномерно во все стороны. Такой тип отражения характерен, например, для гипса, песка, бумаги. Диффузное отражение описывается законом Ламберта, согласно которому интенсивность отраженного света пропорциональна косинусу угла между направлением на точечный источник света и нормалью к поверхности: Id = I cos, где I— интенсивность источника света. При создании реалистических изображений следует учитывать то, что в природе, вероятно, не существуют идеально зеркальные или идеально матовые поверхности. При изображении объектов средствами компьютерной графики обычно моделируют сочетание зеркальности и диффузного рассеивания в пропорции, характерной для конкретного материала. В этом случае модель отражения записывают в виде взвешенной суммы диффузной и зеркальной составляющих: где константы Kd и Кс определяют отражательные свойства определенного материала. Константы Kd и Кс обычно принимают значения в диапазоне от 0 до 1, причем Kd + Кс = 1. Соответственно этой формуле интенсивность отраженного света равняется нулю для некоторых углов и . Однако в реальных сценах обычно нет абсолютно затемненных объектов, следует учитывать фоновое подсвечивание — освещение рассеянным светом, отраженным от других объектов (рис. 8.3). Рис. 8.3. Модель отражения света и три ее составляющие В таком случае интенсивность может быть эмпирически выражена следующей формулой: Iрез = IaKa + IdKd + IsKs = IaKa + I (Kd cos +Ks cos p ) где Ia - интенсивность рассеянного света, Ка— константа. Можно еще усовершенствовать модель отражения, если учесть то, что энергия от источника света уменьшается соответственно расстоянию до него где R- расстояние от источника света до поверхности, F(R) — функция ослабления. Для точечного источника света энергия излучения уменьшается пропорционально квадрату расстояния. На практике обычно используют линейную аппроксимацию функции ослабления. Для нескольких источников света диффузную и зеркальную составляющую рассчитывают в отдельности для каждого источника, а результат — сумма всех составляющих: 8.1.2 Вычисление нормалей и углов отраженияВычисление координат вектора нормали. Рассматривая модели отражения света, вы, наверное, обратили внимание на то, что нормаль к поверхности — важный элемент. Определение вектора нормали к поверхности в заданной точке может быть выполнено разными способами. В значительной степени это определяется типом модели описания поверхности. Для поверхностей, заданных в аналитической форме, известны методы дифференциальной геометрии, которые основываются на вычислении частных производных функций описания. Например, если поверхность задана параметрическими функциями тогда координаты вектора нормали можно вычислить так: В случае описания поверхности векторно-полигональной моделью для определения нормалей можно использовать методы векторной алгебры. Пусть в пространстве задана некоторая многогранная поверхность. Рассмотрим одну ее плоскую грань, имеющую вид треугольника (рис. 8.4). Для вычисления координат вектора нормали воспользуемся векторным произведением любых двух векторов, которые лежат в плоскости грани. Такими векторами могут служить и ребра грани, например, ребра 1-2 и 1-3. Однако формулы для векторного произведения были определены нами только для радиус-векторов. Чтобы перейти к радиус-векторам, введем новую систему координат, центр которой совпадает с вершиной 1, а оси — параллельны осям бывшей системы. Координаты вершин в новой системе: Рис. 8.4. Одна грань поверхности Радиус-векторы Теперь назовем ребро (1-2) вектором А, а ребро (1-3) — вектором В, как показано на рис. 8.4. Таким образом, положение нормали к грани в пространстве будет описываться радиус-вектором N. Его координаты в системе (х', у', г') выразим формулами для векторного произведения Плоская грань может быть изображена в разных ракурсах. В каждой конкретной ситуации необходимо выбирать направление нормали, которое соответствует видимой стороне грани. Если плоская грань может быть видна с обратной стороны, то тогда в расчетах отраженного света необходимо выбирать для нормали обратный вектор, то есть (-N). Если полигональная поверхность имеет не треугольные грани, а, например, плоские четырехугольные, то расчет нормали можно выполнять по любым трем вершинам грани. Диффузное отражение. Рассчитаем косинус угла между вектором нормали и направлением на источник света. Это можно выполнить таким способом. Сначала необходимо определить радиус-вектор, направленный на источник света. Обозначим его как S. Потом для вычисления косинуса угла между радиус-векторами S и N воспользуемся формулами скалярного произведения векторов. Поскольку а также то получим Для упрощения вычислений целесообразно использовать векторы S и N единичной длины, то есть |S|*|N| = 1. Использование скалярного произведения здесь можно считать универсальным методом, который можно использовать для любого расположения точечного источника света. В отдельных случаях можно рассчитать косинус угла падения по-иному. Например, если источник света располагается на оси Zвидовых координат в бесконечности позади камеры, тогда косинус угла нормали к грани с осью Zравняется отношению координаты г и длины радиус-вектора нормали Зеркальное отражение. Будем считать, что задан радиус-вектор S, направленный на источник света, а также известен радиус-вектор нормали N. Нужно найти косинус угла между отраженным лучом и направлением камеры. Сначала необходимо вычислить радиус-вектор отраженного луча. Обозначим его как R. Выполним некоторые геометрические построения, как показано на рис. 8.5. Рис. 8.5. Векторы R1, S1 и N1 –единичной длины Для решения нашей задачи сначала рассмотрим единичные векторы R1, S1, и N1. Поскольку векторы нормали, падающего луча и отраженного луча находятся в одной плоскости, то можно записать R1 + S1 = N1, где N1 — это вектор, который соответствует диагонали ромба и совпадает по yаправлению с нормалью. Длина вектора N1 равняется 2cos. Поскольку вектор N1 по направлению совпадает с N1, то или Отсюда находится единичный вектор отраженного луча: Найдем cos. Для этого используем скалярное произведение векторов N и S: Подставим это значение в выражение для R1: Полагая, что искомый вектор отраженного луча будет иметь такую же длину, что и вектор падающего луча, т.е. R = SR1 , получим: Это решение в векторной форме. Запишем координаты вектора R: Теперь осталось найти косинус угла между отраженным лучом и направлением камеры. Пусть K – радиус-вектор, направленный на камеру. Найдем искомый косинус угла: Для упрощения вычислений целесообразно задавать векторы S, N и Rединичной длины (тогда и Rбудет единичным). |