Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Визуализация текстуры

Читайте также:
  1. Взаимодействие текстуры с объектом
  2. Визуализация
  3. Визуализация
  4. Визуализация
  5. ВИЗУАЛИЗАЦИЯ
  6. ВИЗУАЛИЗАЦИЯ ЧТЕНИЯ.

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

На рис. 11.6 показана камера, делающая снимок грани F с наклеенной на нее текстурой, а также сам процесс визуализации. Строка развертки y заполняется от точки xleft до точки xright. Для каждого значения x вдоль строки развертки необходимо правильно вычислить положение на грани (на рисунке оно обозначено P (x, y)) и уже из него получить нужные текстурные координаты (s*, t*).

Если определено отображение «текстура-объект», то нам известны текстурные координаты для каждой вершины области F, как показано на рис. 11.7. В таком случае естественно вычислить координаты (sleft, tleft) и (sright, tright) для каждой строки развертки быстрым инкрементным методом (методом приращений), а затем, двигаясь вдоль строки развертки, интерполировать между этими значениями. Однако следует быть внимательными: обычные приращения от sleft до sright при прохождении строки развертки у от xleft до xright использовать нельзя, поскольку равные шаги по спроецированной грани не соответствуют равным шагам по трехмерной грани.

Рис. 11.8 иллюстрирует эту задачу. На рис. 11.8, а показана грань F, рассматриваемая из такой точки, что ее левое ребро находится ближе к наблюдателю, чем правое. На рис. 11.8, б показана проекция этой грани F’ на экран. Отметим для строки развертки y = 120 равноотстоящие точки на проекции F’, подразумевая последовательные пиксели на грани. Соответствующее расположение этих отметок на текущей грани показано на 11.8, а. Видно, что на дальнем конце грани F эти отметки располагаются ближе друг к другу, что является следствием обычного перспективного укорачивания.

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

Рис. 11.8. Задание промежутков с помощью линейной интерполяции

Для решения этой задачи найдем соответствующие текстурные координаты (s, t) в каждой точке визуализируемой грани методом инкрементной визуализации изображений. На рис. 11.9 показана грань. Концевые точки левого ребра спроецированной грани равны a и b. Данная грань простирается от xleft до xright вдоль строки развертки y. Необходимо найти соответствующие текстурные координаты (sleft, tleft) и (sright, tright) для привязывания их соответственно к точкам от xleft до xright, которые затем можно интерполировать вдоль строки развертки.

Рассмотрим нахождение sleft (y) значения sleftt вдоль строки развертки y. Известно, что текстурная координата sA привязана к точке a, а sB – к точке b, поскольку эти величины передаются через графический конвейер вместе с вершинами A и B. Если строка развертки y является частью f расстояния между ybott и ytop, так что , то соответствующая текстурная координата равна:

.

Аналогично может быть получено выражение для tleft. Отметим, что sleft и tleft имеют один и тот же знаменатель: линейная интерполяция между значениями

и .

Числители являются линейными интерполяциями текстурных координат, деленных на и . Эту технику иногда называют «линейной рациональной» визуализацией или «гиперболической интерполяцией». Для эффективного вычисления координат (s, t) по мере роста f необходимо сохранять значения

; ; ; ; ; ,

так как они остаются постоянными от пикселя к пикселю. Числитель и знаменатель могут быть найдены в приращениях для каждого y. Однако для нахождения sleft и tleft нам все же придется выполнить явное деление каждого значения y.

Пара координат (sright, tright) вычисляется аналогично. Знаменатели этих двух компонентов содержат величины и , которые получаются из проецированных точек и .

После нахождения (sleft, tleft) и (sright, tright) данную строку развертки можно закрашивать. Для каждого x от xleft до xright находятся координаты s и t – снова посредством гиперболической интерполяции.

 


Дата добавления: 2015-07-10; просмотров: 140 | Нарушение авторских прав


Читайте в этой же книге: Наложение текстуры на грань | Генерация текстурных координат | Функции OpenGL для задания текстурного изображения | Функции OpenGL для установки параметров текстуры | Пример программы с применением текстурирования |
<== предыдущая страница | следующая страница ==>
Пример.| Взаимодействие текстуры с объектом

mybiblioteka.su - 2015-2024 год. (0.008 сек.)