Jump to content

Проективное наложение текстур

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

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

Конвейерный подход с фиксированными функциями

[ редактировать ]

Исторически [1] , используя проективное наложение текстур, предполагающее рассмотрение особой формы генерации координат линейной текстуры глаза. [2] Transform ( tcGen сокращенно ). Затем это преобразование было умножено на другую матрицу, представляющую свойства проектора, которые были сохранены в матрице преобразования координат текстуры. [3] . Полученная объединенная матрица в основном зависела как от свойств проектора, так и от положения глаз вершин.

Ключевым моментом этого подхода является то, что линейный tcGen глаза является функцией координат вершины глаза, которая является результатом как свойств глаза, так и координат вершин пространства объекта (более конкретно, положение вершины пространства объекта преобразуется с помощью модели-представления-проекции матрица). По этой причине соответствующая текстурная матрица может использоваться для «смещения» свойств глаза, поэтому объединенный результат будет таким же, как при использовании линейного tcGen для глаза с точки зрения, которая может отличаться от точки зрения наблюдателя.

Программируемый конвейерный подход

[ редактировать ]

Менее сложный метод вычисления этого подхода стал возможным благодаря вершинным шейдерам .

Затем предыдущий алгоритм можно переформулировать, просто рассмотрев две матрицы модель-представление-проекция: одну с точки зрения глаза, а другую с точки зрения проектора.

В этом случае матрица модель-вид-проекция проектора по сути представляет собой вышеупомянутую конкатенацию глазо-линейного tcGen с предполагаемой функцией сдвига проектора. При использовании этих двух матриц достаточно нескольких инструкций для вывода преобразованного положения вершины пространства глаза и координат проективной текстуры. Эта координата просто получается путем рассмотрения матрицы модель-вид-проекция проектора: другими словами, это положение вершины в пространстве глаз, если бы рассматриваемый проектор был бы наблюдателем.

Предостережения

[ редактировать ]

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

Определение свойств этих пространств выходит за рамки этой статьи, но хорошо известно, что к текстурам обычно следует обращаться в диапазоне [0..1], а к координатам пространства глаз — в диапазоне [-1..1]. В зависимости от используемого режима наложения текстуры могут возникать различные артефакты, но очевидно, что операция сдвига и масштабирования определенно необходима для получения ожидаемого результата.

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

  1. ^ Оригинальный документ с веб-сайта nVIDIA содержит всю необходимую документацию по этому вопросу. На этом же сайте есть и дополнительные подсказки .
  2. ^ Генерация координат текстуры описана в разделе 2.11.4 «Генерация координат текстуры» спецификации OpenGL 2.0 . Генерация линейных координат текстуры глаза представляет собой особый случай.
  3. ^ Матрица текстур представлена ​​в разделе 2.11.2 «Матрицы» спецификации OpenGL 2.0 .
[ редактировать ]
  • http://www.3dkingdoms.com/weekly/weekly.php?a=20 Учебное пособие, показывающее, как реализовать проективное текстурирование с использованием подхода программируемого конвейера в OpenGL.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: c0e19c3448de0e53d266fa9dcb4e2e05__1668100860
URL1:https://arc.ask3.ru/arc/aa/c0/05/c0e19c3448de0e53d266fa9dcb4e2e05.html
Заголовок, (Title) документа по адресу, URL1:
Projective texture mapping - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)