Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Обработка h при непосредственном синтезе изображения





1. 1. Инициализируем поля V, H = 0. Очищаем поле V (например, делаем его черным). В H записываем минимальное значение, т. е. заполняем его нулями. Минимальные значения соответствуют максимальной удаленности.

 

 

 

2. Для пространственного многоугольника определяем точки с координатами (X,Y,Z,S). Для плоскости изображения используются координаты (x,y,h,v), где v – это яркость в точке.

 

3. Используем алгоритм построчного сканирования.

 

h и v – линейно интерполируем

 

 

 
 

Обработка текущей точки:

 

а) точка вдали

;

б) точка в близи

 

 

Пример:

Пусть,

а) точка в дали

 

ошибка по глубине

б) точка вблизи

При малоразрядном буфере отношение Smin и Smax уменьшается.

Значение h – нелинейно зависимое разрешение по глубине от дальности.

 

Если записывать в G значение S, то нельзя линейно интерполировать.


Формула нелинейной интерполяции величины S:

 

Недостатки:

- - Большие вычислительные затраты на каждую текущую точку;

- - S имеет равномерную (т. е. постоянную) разрешающую способность по глубине;

- - Вместо линейной - нелинейная интерполяция.

 

 

 

4.3. Синтез изображения с помощью Y-буфера.

Рассмотрим частный случай:

Синтез каркасных изображений с удалением невидимых элементов этого


изображения.

 


Изображать элементы надо начиная с ближнего плана.

 


Запоминаются y координаты изображения и записываются в используемый Y-буфер (одномерный массив = ширине изображения).

 

В Y-буфере будет отслеживаться y максимальное.

При записи второго сечения Y-буфер обнуляется и информация в нём обновляется.

 

Существует проблема видимости ненужных частей рельефа.

 

 
 

Для решения этой проблемы используется анализ текущей точки:

 

Используемый принцип:

От ближнего плана к дальнему.

Примечание:

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

с закраской вертикальными линиями с учётом линейной интерполяции области

между двумя соседними сечениями.

 

 

4.4. Алгоритм отсечения по пирамиде видимости.

 

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

Поскольку камера видит только то, что перед ней находится, все те точки, для которых Smin > z > Smax, рисовать не надо. То есть, каждую грань надо обрезать плоскостями z = Smin и z = Smax.

 

 

 

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

 


Алгоритм:


Пусть имеется пространственный многоугольник с вершинами i = 1…n. Для каждой вершины вычисляем значения Si, X¢i и Y¢i, которые будут исходными данными

 

 

5.2. Проективные текстуры

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

 

Рис5.1

 

 

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

Всего мы имеем дело с четырьмя координатными системами.

 

1. Наблюдательская система ("clip" или "projection") - является обычным для графики 4-х координатным представлением 3-х мерного (объемного) пространства. Координаты зовутся x, y, z, w. Начало этой координатной системы лежит в точке наблюдения.

2. Экранная система ("screen") - 2-х мерный экран, который и видит наблюдатель. Эти координаты получаются из наблюдательской системы путём деления x и y на w – x5 = x / w, y5 = y / w, (индекс "s" у получающихся координат обозначает экранную систему).

3. Система источника света ("light") - это вторая объемная система координат (xt, yt, zt и wt,). В начале этой системы координат находится источник света.

4. Текстурная система (texture) - координаты на плоскости проецируемой текстуры (тот слайд, сквозь который светит воображаемый источник света). Текстурные координаты получаются как xt = xt / wt, yt = yt / wt (также можно вычислить zt = zt / wt, если мы решили не ограничиваться плоской текстурой).

 

Наша задача: имея точку (x5, y5) на экране, нам необходимо найти соответствующую ей точку (xt, yt) на текстуре.


 

 

 

На рис. 5.2 показан сегмент линии в нашем трехмерном пространстве и его проекция на 2-х мерный экран. Этот сегмент - горизонтальная полоса сканирования на экране, расположенная между двумя рёбрами полигона. Координаты его концов в наблюдательской системе:

 

 

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

 

и решим относительно t. Для тех, кому интересно, приведем все рассуждения:


Вычисление t:

Зададим a и b, таким образом, что 1 – t5 = a / (a + b) и t5 = b / (a + b).

Зададим A и B так, что t = A / (A + B) и t = B / (A + B).

Тогда:

Легко проверить, что A = aw1 и B = bw2 удовлетворяют этому уравнению, позволяя нам получить искомый параметр t, и, далее, координаты Q.

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

 

 

Уравнение (6) выражает координаты на поверхности текстуры, соответствующие любой точке сегмента выбираемой (линейно интерполируемой) параметром в экранных координатах.

Для того, чтобы получить координаты, мы должны линейно интерполировать xt/w, yt/w, wt/w.

Для каждого пикселя:

Если wt постоянна на всём полигоне, то уравнение (7) приобретает вид

откуда мы имеем s = xt/wt, t = yt/wt. Здесь (s,t) - текстурные координаты, синонимы (xt, yt).

 

Уравнение (8) и определяет текстурные координаты, которые можно привязать к вершинам передаваемого на ускоритель полигона. В более общем сложном случае проективной текстуры, выражаемом уравнением (7), требуется деление на wt/w, а не на 1/w.

 

5.3. Рельефные текстуры.

 

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

 

Теперь рассмотрим мировую систему координат, в которой мы имеем следую

 
 

щий треугольник (имеет рельефную текстуру):

 

S – источник света;

,

где - координаты связанные с рельефным полем (поле нормалей).

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

 

 
 

Где:

 

Воспользуемся следующими формулами:

 

 

 
 

Используем относительные координаты точки в пределах треугольника:

Относительные координаты:

точка (x,y) будет характеризоваться:

Для любой точки принадлежащей этому треугольнику:

 

При обратном пересчёте:

 

Определим для точки относительные координаты через её пространственные

координаты:

 

 

Координаты точки в рельефной системе:

 

Алгоритм прорисовки:

1) 1) пересчёт координаты в рельефном поле;

2) 2) при закраске интерполяция (нелинейная) рельефных координат.

 

По рельефным координатам просчитываем нормаль, плюс имея расстояние до S

высчитываем угол между векторами и , следовательно имеем яркость то-

чки.

 

Учёт освещения:

 

Date: 2015-07-17; view: 486; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию