Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Построение реалистических изображений. Закраска методом Гуро.

Поиск

Метод закраски, который основан на интерполяции интенсивности и известен как метод Гуро (по имени его разработчика), позволяет устранить дискретность изменения интен­сивности. Процесс закраски по методу Гуро осуществляется в четыре этапа.

1. Вычисляются нормали ко всем полигонам;

2. Определяются нормали в вершинах путем усреднения нормалей по всем по­лигональным граням, которым принадлежит вершина (Рис 5.3).

3. Используя нормали в вершинах и применяя произвольный метод закраски, вычисляются значения интенсивно­сти в вершинах.

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

Интерполяция вдоль ребер легко объединяется с алгоритмом удаления скрытых по­верхностей, построенным на принципе построчного сканирования. Для всех ребер запо­минается начальная интенсивность, а также изменение интенсивности при каждом еди­ничном шаге по координате y, Заполнение видимого интервала на сканирующей строке производится путем интерполяции между значениями интенсивности на двух ребрах, ог­раничивающих интервал (Рис 6.4.).

I a = I 1 + I 2

I b = I 1 + I 3

I p = I a + Ib

Для цветных объектов отдельно интерполируется каждая из компонент цвета.

Построение реалистических изображений. Закраска методом Фонга.

В методе закраски, разработанном Фонгом, используется интерполяция вектора нор­мали к поверхности вдоль видимого интервала на сканирующей строке внутри много­угольника, а не интерполяция интенсивности. Интерполяция выполняется между началь­ной и конечной нормалями, которые сами тоже являются результатами интерполяции вдоль ребер многоугольника между нормалями в вершинах. Нормали в вершинах в свою очередь вычисляются так же, как в методе закраски, построенном на основе интерполя­ции интенсивности. Как и выше, интерполяцию вдоль ребер можно выполнить поэтапно, вычисляя все три компоненты вектора нормали при пе­реходе от каждой сканирующей Рис. 22.

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

Чтобы закрасить куски бикубической поверхности, для каждого пиксела, исходя из уравнений поверхности, вы­числяется нормаль к поверхности. Этот процесс тоже доста­точно дорогой. Затем с помощью любой модели за­краски определяется значение интен­сивности. Однако прежде чем применить метод закраски к плоским или би­кубическим поверхностям, необходимо иметь информацию о том, какие источники света (если они имеются) в действительности освещают точку. Поэтому мы должны рассматривать также и тени.

Построение реалистических трехмерных изображений. Удаление невидимых линий и поверхностей.

Современное программирование трехмерной графики в OpenGL (теоретический вопрос).

Найти и объяснить в выданном тексте программы следующие функции:

1. Инициализация пакета OpenGL:

Контекст устройства,

Перед созданием контекста воспроизведения необходимо установить формат пикселей. Для установки формата пикселей используется функция Windows GDI

int ChoosePixelFormat(HDC, const PIXELFORMATDESCRIPTOR),

выбирающая наиболее подходящий формат исходя из информации, переданной в полях структуры PIXELFORMATDESCRIPTOR.

После того как найден подходящий формат пикселей, следует установить его в контексте устройства при по­мощи функции

BOOL SetPixelFormat(HDC hDC, inl pixelFormat, const PIXELFORMATDESCRIPTOR).

Для работы с контекстом воспроизведения в Windows существуют функции

HGLRC wglCreateContext(HDC hDC) и

BOOL wglMakeCurrent(HDC hDC, HGLRC hGLRC).



Поделиться:


Последнее изменение этой страницы: 2016-07-16; просмотров: 280; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.226.82.90 (0.006 с.)