![]() Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
![]() Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
![]() |
Обработка h при непосредственном синтезе изображения ⇐ ПредыдущаяСтр 10 из 10
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-буфер обнуляется и информация в нём обновляется.
Существует проблема видимости ненужных частей рельефа.
Для решения этой проблемы используется анализ текущей точки:
Используемый принцип: От ближнего плана к дальнему. Примечание: Для полутоновых изображений так же можно использовать этот алгоритм, но с закраской вертикальными линиями с учётом линейной интерполяции области между двумя соседними сечениями.
4.4. Алгоритм отсечения по пирамиде видимости.
Необходимость в этой процедуре возникает, когда, в конце концов, оказывается, что надо нарисовать грань, у которой часть вершин лежит перед камерой, а часть – за камерой. То есть грань, пересекающуюся с экраном. Сама по себе она правильно не нарисуется. Поскольку камера видит только то, что перед ней находится, все те точки, для которых Smin > z > Smax, рисовать не надо. То есть, каждую грань надо обрезать плоскостями z = Smin и z = Smax.
В плоскость изображения попадают только те точки, которые находятся внутри ПВ.
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: 531; Нарушение авторских прав |