Мегаобучалка Главная | О нас | Обратная связь


Комбинированные преобразования



2019-08-13 258 Обсуждений (0)
Комбинированные преобразования 0.00 из 5.00 0 оценок




· M =Mproj * Mview * Mmodel

· Pproj = M * P

Т.е. можно посчитать матрицу M и применить ее ко всем точкам объекта

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

 

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

(xM, yM, zM, 1)T =M * (x, y, z, 1)T

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

void glTranslate[f d](GLtype x, GLtype y, GLtype z)

void glRotate[f d](GLtype angle, GLtype x, GLtype y, GLtype z)

void glScale[f d](GLtype x, GLtype y, GLtype z)

glTranlsate..() производит перенос объекта, прибавляя к координатам его вершин значения своих параметров.

glRotate..() производит поворот объекта против часовой стрелки на угол angle (измеряется в градусах) вокруг вектора ( x,y,z ).

glScale..() производит масштабирование объекта (сжатие или растяжение), домножая соответствующие координаты его вершин на значения своих параметров.

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

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

void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz)

где точка ( eyex,eyey,eyez ) определяет точку наблюдения, ( centerx, centery, centerz ) задает центр сцены, который будет проектироваться в центр области вывода, а вектор ( upx,upy,upz ) задает положительное направление оси у, определяя поворот камеры. Если, например, камеру не надо поворачивать, то задается значение (0,1,0), а со значением (0,-1,0) сцена будет перевернута.

Фактически, эта команда совершает перенос и поворот объектов сцены, но в таком виде задавать параметры бывает удобнее.

 

НАЗАД

 

15. Понятие растрового алгоритма. Понятие связности. Основные требования, предъявляемые к растровым алгоритмам.

 

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

Большинство графических библиотек содержат достаточное количество простейших растровых алгоритмов, таких как:

· переведение идеального объекта (отрезка, окружности и др.) в его растровые образы;

· обработка растровых изображений.

Тем не менее, иногда возникает необходимость явного построения растровых алгоритмов, а для эффективной реализации требуется знать особенности этих алгоритмов (ресурсы, случаи применения, дефекты изображений).

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

Используется два понятия связности:

4-связность - пиксели считаются соседними, если либо их х-координаты, либо у-координаты отличаются на единицу:

8-связность - пиксели считаются соседними, если их х- и у-координаты отличаются не более чем на единицу:


Понятие 4-связности является более сильным, чем 8-связность: любые два 4-связных пикселя являются и 8-связными, но не наоборот.

Поскольку экран растрового дисплея с электронно-лучевой трубкой (ЭЛТ) можно рассматривать как матрицу дискретных элементов (пикселей), каждый из которых может быть подсвечен, то нельзя провести непрерывный отрезок прямой линии из одной точки экрана в другую. Можно только подсветить ближайшие к “теоретической” прямой пиксели. Процесс определения пикселей, наилучшим образом аппроксимирующих заданный отрезок, называется разложением отрезка в растр.

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

При «проведении» растровых отрезков они должны удовлетворять следующим требованиям:

1. Отрезки должны выглядеть прямыми, начинаться и заканчиваться в заданных точках.

2. Яркость вдоль отрезка должна быть постоянной и не зависеть от длины и наклона.

3. Алгоритмы рисования должны быть простыми, т.е. отрезок рисоваться должен быстро.

При достаточно высоком разрешении дисплея можно получить приемлемую аппроксимацию прямой линии.

Простейшим алгоритмом разложения отрезка в растр является алгоритм, построенный по методу цифрового дифференциального анализатора (ЦДА). Данный алгоритм пригоден для проведения отрезков во всех квадрантах декартовой системы координат.

Недостатки алгоритма разложения отрезка в растр, основанного на методе ЦДА:

1) использует вещественную арифметику, что приводит к значительным затратам вычислительных ресурсов;

2) может быть активизирован пиксель, стоящий за концом отрезка, и если рисуется ломаная, то данный пиксель будет высвечиваться 2 раза;

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

В 1965 году Брезенхеймом был предложен простой целочисленный алгоритм для растрового построения отрезка, первоначально предназначенный для использования в графопостроителях.

Идея алгоритма состоит в том, что в процессе построения отрезка одна из координат – либо х, либо y (в зависимости от углового коэффициента) – изменяется на единицу. Изменение другой координаты (либо на нуль, либо на единицу) зависит от расстояния между “теоретическим” координатами сетки (такое расстояние в алгоритме называется “ошибкой”).

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

 

НАЗАД

 

 

16. Построение реалистических изображений: глобальная и локальная модели освещения (модель Фонга).

 

Алгоритмы моделирования освещения условно можно разделить на две группы: алгоритмы локального освещения и алгоритмы глобального освещения.

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

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

 

Можно выделить три основных типа взаимодействия света и материала поверхности:

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

2. Диффузное отражение. При диффузном отражении падающий свет рассеивается во все стороны с одинаковой интенсивностью. Такой тип взаимодействия характерен для равномерно окрашенной поверхности.

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

 

Локальная модель Фонга (Phong), в которой найден компромисс между физической корректностью и объёмом необходимых вычислений. В этой модели анализируются только световые лучи, испускаемые светоизлучающими поверхностями -источниками, и их взаимодействие с поверхностями сцены. В отличии от метода трассировки лучей здесь учитывается только одно отражение. Еще одно упрощение, которое уменьшает объём вычислений, заключается в том, что анализируются только те лучи источника, которые попадают в порт вывода.

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

Диффузное освещение: имитирует воздействие на объект направленного источника света. Это наиболее визуально значимый компонент модели освещения. Чем большая часть поверхности объекта обращена к источнику света, тем ярче он будет освещен.

Освещение зеркальных бликов: имитирует яркое пятно света (блик), которое появляется на блестящих объектах. По цвету зеркальные блики часто ближе к цвету источника света, чем к цвету объекта.

 

НАЗАД

 

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

 

Вектор нормали — это (единичный) вектор, перпендикулярный поверхности, построенной на данной вершине.

В случае описания поверхности векторно-полигональной моделью для определения нормалей можно использовать методы векторной алгебры.

Пусть в пространстве задана некоторая многогранная поверхность. Рассмотрим одну ее плоскую грань, имеющую вид треугольника (рис. 8.4). Для вычисления координат вектора нормали воспользуемся векторным произведением любых двух векторов, которые лежат в плоскости грани. Такими векторами могут служить и ребра грани, например, ребра 1-2 и 1-3. Однако формулы для векторного произведения были определены нами только для радиус-векторов. Чтобы перейти к радиус-векторам, введем новую систему координат, центр которой совпадает с вершиной 1, а оси — параллельны осям бывшей системы. Координаты вершин в новой системе:

Рис. 8.4. Одна грань поверхности Радиус-векторы

Теперь назовем ребро (1-2) вектором А, а ребро (1-3) — вектором В, как показано на рис. 8.4. Таким образом, положение нормали к грани в пространстве будет описываться радиус-вектором N. Его координаты в системе (х', у', г') выразим формулами для векторного произведения

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

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

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

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

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

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

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

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

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

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

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

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

 

НАЗАД

 

18. Построение реалистических изображений: прозрачность, текстурирование, фильтрация, anti-aliasing.

 

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

I = k Iб + (1− k) Iд ,

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

Наложение текстуры или текстурирование – это метод, посредством которого на поверхность объекта накладывается некоторое изображение, называемое изображением текстуры.

Переход на фильтрацию и antialiasing.

 

НАЗАД

 

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

 

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

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

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

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

Базовый метод анализа излучательности предполагает, что вся сцена разбивается на большое число многоугольников малого размера— фрагментов (patches), причем каждый из фрагментов можно считать идеальным диффузным рассеивателем, который можно закрашивать равномерно. Остается только найти, в какой именно цвет нужно окрасить фрагмент. Это делается в два этапа. Сначала необходимо рассмотреть пары фрагментов и определить коэффициенты формы (form factors), которые описывают взаимное расположение фрагментов каждой пары и их влияние друг на друга. После вычисления всех коэффициентов формы общее уравнение тонирования, которое первоначально имеет форму интегрального, упрощается и принимает форму системы линейных уравнений для излучательности граней, в частности вследствие отражения. Хотя для определения коэффициентов формы требуется довольно много вычислений – порядка O(N2) для N фрагментов, – полученные значения излучательности не зависят от положения наблюдателя, и для статических элементов сцены их можно не пересчитывать при изменении положения наблюдателя, если, конечно, все фрагменты позволительно с приемлемой точностью считать идеально рассеивающими. В результате оказывается, что при перемещении камеры по сцене тонирование изображения выполняется практически с той же скоростью, что и при использовании локальной модели.

 

НАЗАД

 

20. Интерактивные системы машинной графики. Виды графических языков. Графические языки высокого уровня. Синтаксические расширения языков программирования высокого уровня. Процедурные графические языки (API – Application Program Interface).

 

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



2019-08-13 258 Обсуждений (0)
Комбинированные преобразования 0.00 из 5.00 0 оценок









Обсуждение в статье: Комбинированные преобразования

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

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



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (258)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.014 сек.)