Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по компьютерной графике [по вопросам].doc
Скачиваний:
84
Добавлен:
02.05.2014
Размер:
783.36 Кб
Скачать

Вопрос 41

Построение реалистических изображений: вычисление векторов нормалей, модели закраски (однотонная, Гуро и Фонга), реализация закрашивания в OpenGL .

Существует три основных способа закраски многоугольников: однотонная закраска, закраска с интерполяцией интенсивности и закраска с интерполяцией векторов нормали.

При однотонной закраске предполагается, что и источник света и наблюдатель находятся в бесконечности, поэтому произведения L·N и R·V постоянны. На изображении могут быть хорошо заметны резкие перепады интенсивности между различно закрашенными многоугольниками. Если многоугольники представляют собой результат аппроксимации криволинейной поверхности, то изображение недостаточно реалистично.

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

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

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

  • возникает классический оптический эффект (Mach banding): на границах четырехугольников человеческий глаз усиливает переходы и границы.

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

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

Недостатки метода Фонга:

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

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

Вопрос 42

Построение реалистических изображений: прозрачность, тени, текстурирование, Mip-mapping.

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

где 0  k  1 - характеризует прозрачность ближнего многоугольника. Если k = 1, то он непрозрачен. Если же k = 0, то ближний многоугольник полностью прозрачен; Iб - интенсивность для пикселя ближнего многоугольника, Iд - дальнего.

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

Те объекты, которые невидимы из источника освещения, но видимы из точки зрения находятся в тени. На первом шаге в алгоритме с учетом тени определяются все многоугольники, видимые из точки освещения. Затем выполняется удаление поверхностей невидимых из точки зрения. При выполнении закраски многоугольника проверяется не закрыт ли он многоугольником, видимым из источника освещения. Если да, то в модели освещения учитываются (если надо) все три компоненты - диффузное и зеркальное отражения и рассеянный свет. Если же перекрытия нет, то закрашиваемый многоугольник находится в тени и надо учитывать только рассеянный свет.

Фактура (текстурирование) В машинной графике фактурой называется детализация строения поверхности. Обычно рассматриваются два вида детализации:

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

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

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