Отображение нормалей

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

В компьютерной 3D-графике, normal mapping или Dot3 bump mapping - это отображение текстуры техника, используемая для имитации освещения неровностей и вмятин - реализация bump mapping. Он используется для добавления деталей без использования дополнительных полигонов. Обычно этот метод используется для значительного улучшения внешнего вида и деталей низкополигональной модели путем создания карты нормалей из высокополигональной модели или карты высот.

Карты нормалей обычно хранятся как обычные изображения RGB, где компоненты RGB соответствуют координатам X, Y и Z, соответственно, нормали поверхности .

Содержание

  • 1 История
  • 2 Метод
  • 3 Пробелы
  • 4 Расчет касательного пространства
  • 5 Нормальное отображение в видеоиграх
  • 6 См. Также
  • 7 Ссылки
  • 8 Внешние ссылки

История

В 1978 году Джеймс Блинн описал как можно изменить нормали поверхности, чтобы геометрически плоские грани имели детальный вид. Идея извлечения геометрических деталей из высокополигональной модели была представлена ​​в статье Кришнамурти и Левоя, Proc. «Подгонка гладких поверхностей к плотным многоугольным сеткам». SIGGRAPH 1996, где этот подход использовался для создания карт смещения поверх нурбов. В 1998 году были представлены две статьи с ключевыми идеями для переноса деталей с картами нормалей с высокополигональных сеток на низкополигональные: «Упрощение с сохранением внешнего вида» Коэна и др. SIGGRAPH 1998 и "Общий метод сохранения значений атрибутов на упрощенных сетках" Cignoni et al. IEEE Visualization '98. Первый представил идею хранения нормалей поверхности непосредственно в текстуре, а не смещений, хотя требовал, чтобы модель с низкой детализацией создавалась с помощью определенного алгоритма ограниченного упрощения. Последний представил более простой подход, который разделяет высокополигональную и низкополигональную сетку и позволяет воссоздать любые атрибуты модели с высокой детализацией (цвет, координаты текстуры, смещения и т. Д.) способом, который не зависит от того, как была создана модель с низкой детализацией. Комбинация хранения нормалей в текстуре с более общим процессом создания все еще используется большинством доступных в настоящее время инструментов.

Метод

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

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

Пространства

Пространственные измерения различаются в зависимости от пространства, в котором была закодирована карта нормалей. Простая реализация кодирует нормали в пространстве объекта, так что красный, зеленый и синий компоненты напрямую соответствуют координатам X, Y и Z. В объектном пространстве система координат постоянна.

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

Текстурная карта (слева). Соответствующее нормальное отображение в касательном пространстве (центр). Карта нормалей, примененная к сфере в пространстве объектов (справа).

Повторное использование карты нормалей стало возможным благодаря кодированию карт в касательном пространстве. Касательное пространство - это векторное пространство , которое касается поверхности модели. Система координат плавно изменяется (на основе производных положения относительно координат текстуры) по поверхности.

Графическое представление касательного пространства отдельной точки x {\ displaystyle x}xна сфере .

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

Расчет касательного пространства

Чтобы найти возмущение в нормали, необходимо правильно рассчитать касательное пространство. Чаще всего нормаль нарушается во фрагментном шейдере после применения матриц модели и вида. Обычно геометрия предусматривает нормаль и касательную. Касательная является частью касательной плоскости и может быть просто преобразована с помощью части матрицы linear (верхний 3x3). Однако нормаль необходимо преобразовать с помощью обратного транспонирования . Большинство приложений хотят, чтобы котангенс соответствовал преобразованной геометрии (и связанным с ней UV). Таким образом, вместо того, чтобы заставлять котангенс быть перпендикулярным касательной, обычно предпочтительнее преобразовывать котангенс так же, как и касательную. Пусть t - касательная, b - котангенс, n - нормаль, M 3x3 - линейная часть матрицы модели, а V 3x3 - линейная часть матрицы вида.

t ′ = t × M 3 x 3 × V 3 x 3 {\ displaystyle t '= t \ times M_ {3x3} \ times V_ {3x3}}t'=t\times M_{3x3}\times V_{3x3}
b ′ = b × M 3 x 3 × V 3 x 3 {\ displaystyle b '= b \ times M_ {3x3} \ times V_ {3x3}}b'=b\times M_{3x3}\times V_{3x3}
n ′ = n × (M 3 x 3 × V 3 x 3) - 1 T = n × M 3 x 3 - 1 T × V 3 x 3 - 1 T {\ displaystyle n '= n \ times (M_ {3x3} \ times V_ {3x3}) ^ {- 1T} = n \ times M_ {3x3} ^ { -1T} \ times V_ {3x3} ^ {- 1T}}n'=n\times (M_{3x3}\times V_{3x3})^{-1T}=n\times M_{3x3}^{-1T}\times V_{3x3}^{-1T}
Визуализация с отображением нормалей. Рендеринг с использованием техники отображения нормалей. Слева несколько сплошных сеток. Справа плоская поверхность с картой нормалей, вычисленной из сеток слева.

Отображение нормалей в видеоиграх

Изначально интерактивный рендеринг карты нормалей был возможен только на параллельном рендеринге машина построена в Университете Северной Каролины в Чапел-Хилл. Позже стало возможно выполнять отображение нормалей на высокопроизводительных рабочих станциях SGI с использованием многопроходного рендеринга и операций фреймбуфера или на аппаратном обеспечении ПК низкого уровня с некоторыми уловками с использованием палитр текстур. Однако с появлением шейдеров в персональных компьютерах и игровых консолях отображение нормалей стало широко использоваться в коммерческих видеоиграх, начиная с конца 2003 года. Популярность отображения нормалей для рендеринга в реальном времени объясняется с его хорошим соотношением качества и требований к обработке по сравнению с другими методами создания аналогичных эффектов. Большая часть этой эффективности стала возможной благодаря масштабированию деталей с индексированием расстояния, методике, которая выборочно уменьшает детализацию карты нормалей данной текстуры (см. mipmapping ), что означает, что больше удаленные поверхности требуют менее сложной имитации освещения. Многие конвейеры разработки используют модели высокого разрешения , запеченные в низкое / среднее разрешение в игровых моделях, дополненных картами нормалей.

Базовое отображение нормалей может быть реализовано на любом оборудовании, которое поддерживает текстуры с палитрой. Первой игровой консолью, оснащенной специализированным оборудованием для отображения нормалей, была Sega Dreamcast. Однако Microsoft Xbox была первой консолью, которая широко использовала этот эффект в розничных играх. Из консолей шестого поколения только GPU PlayStation 2 не имеет встроенной поддержки карт нормалей, хотя ее можно смоделировать с помощью оборудования PlayStation 2. векторные единицы. Игры для Xbox 360 и PlayStation 3 в значительной степени полагаются на отображение нормалей и были первым поколением игровых консолей, в которых использовалось отображение параллакса. Было показано, что Nintendo 3DS поддерживает отображение нормалей, что продемонстрировали Resident Evil: Revelations и Metal Gear Solid: Snake Eater.

См. Также

Ссылки

Внешние ссылки

На Викискладе есть материалы, связанные с Отображение нормалей.
Последняя правка сделана 2021-05-31 12:39:19
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте