stringtranslate.com

Нормальное отображение

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

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

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

История

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

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

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

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

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

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

Наглядное изображение касательного пространства отдельной точки на сфере.

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

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

Нормали используются в компьютерной графике в первую очередь для освещения. Нормаль — это вектор, указывающий направление, в котором обращена поверхность. Чтобы знать, как должна быть освещена поверхность, программное обеспечение должно знать, как она ориентирована, поскольку то, как ориентирована поверхность, сильно влияет на то, как от нее отражается свет. Нормали могут быть заданы с использованием различных систем координат. В компьютерной графике полезно вычислять нормали относительно касательной плоскости поверхности. Это полезно, поскольку поверхности в видеоиграх и других приложениях перед окончательной визуализацией подвергаются множеству преобразований, поэтому требуется система координат, определяющая ориентацию поверхности. Скелетная анимация детально детализированного персонажа является конкретным примером этого. Если рука персонажа согнута, карты нормалей должны быть в состоянии отразить новую ориентацию без дорогостоящих вычислительных обновлений данных текстуры в преобразовании.


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

Рендеринг с использованием техники отображения нормалей. Слева несколько сплошных сеток. Справа: плоская поверхность с картой нормалей, рассчитанной на основе сеток слева.

Расчет

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

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

Векторы единичных нормалей, соответствующие текстурным координатам u,v, отображаются на карты нормалей. Присутствуют только векторы, направленные к зрителю (z: от 0 до -1 для левосторонней ориентации ), поскольку векторы на геометриях, направленные от зрителя, никогда не отображаются. Отображение выглядит следующим образом:

 X: от -1 до +1: Красный: от 0 до 255. Y: от -1 до +1: Зеленый: от 0 до 255 Z: от 0 до -1: Синий: от 128 до 255
 светло-зеленый светло-желтый темно-голубой светло-синий светло-красный  темно-синий темно-пурпурный

Поскольку при вычислении скалярного произведения для расчета рассеянного освещения будет использоваться нормаль , мы видим, что {0, 0, –1} будут переназначены на значения {128, 128, 255}, давая такой небесно-голубой цвет. цвет, видимый на картах нормалей (синяя координата (z) — это координата перспективы (глубины), а плоские координаты RG-xy на экране). {0,3, 0,4, –0,866} будет пересопоставлено в ({0,3, 0,4, –0,866}/2+{0,5, 0,5, 0,5})*255={0,15+0,5, 0,2+0,5, -0,433+0,5} *255={0,65, 0,7, 0,067}*255={166, 179, 17} значений ( ). Знак координаты Z (синий канал) должен быть перевернут, чтобы соответствовать вектору нормали карты нормалей с вектором нормали глаза (точки обзора или камеры) или вектора света. Поскольку отрицательные значения z означают, что вершина находится перед камерой (а не за камерой), это соглашение гарантирует, что поверхность светится с максимальной силой именно тогда, когда вектор света и вектор нормали совпадают. [6]

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

Интерактивный рендеринг карт нормалей изначально был возможен только на PixelFlow, машине параллельного рендеринга , созданной в Университете Северной Каролины в Чапел-Хилл . [ нужна цитация ] Позже стало возможным выполнять отображение нормалей на высокопроизводительных рабочих станциях SGI с использованием многопроходного рендеринга и операций с кадровым буфером [7] или на низкопроизводительном оборудовании ПК с некоторыми трюками, используя текстуры с палитрой. Однако с появлением шейдеров на персональных компьютерах и игровых консолях отображение нормалей получило широкое распространение в начале 2000-х годов, причем одними из первых игр, реализовавших его, были Evolva (2000), Giants: Citizen Kabuto и Virtua Fighter 4 (2001). . [8] [9] Популярность карт нормалей для рендеринга в реальном времени объясняется их хорошим соотношением качества и требований к обработке по сравнению с другими методами создания подобных эффектов. Большая часть этой эффективности становится возможной благодаря индексированному по расстоянию масштабированию деталей — методу, который выборочно уменьшает детализацию карты нормалей данной текстуры (см. mipmapping ), а это означает, что более удаленные поверхности требуют менее сложной симуляции освещения. Многие конвейеры разработки используют модели высокого разрешения, встроенные в игровые модели низкого/среднего разрешения, дополненные картами нормалей.

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

Смотрите также

Рекомендации

  1. ^ Блинн. Моделирование морщинистых поверхностей , Siggraph, 1978 г.
  2. ^ Кришнамурти и Левой, Подгонка гладких поверхностей к плотным полигональным сеткам , SIGGRAPH 1996
  3. ^ Коэн и др., Упрощение с сохранением внешнего вида, SIGGRAPH 1998 (PDF)
  4. ^ Чиньони и др., Общий метод сохранения значений атрибутов в упрощенных сетках, IEEE Visualization 1998 (PDF)
  5. ^ Миккельсен, Возвращение к моделированию морщинистых поверхностей, 2008 г. (PDF)
  6. ^ «LearnOpenGL — Отображение нормалей» . Learnopengl.com . Проверено 19 октября 2021 г.
  7. ^ Хайдрих и Зайдель, Реалистичное затенение и освещение с аппаратным ускорением. Архивировано 29 января 2005 г. в Wayback Machine , SIGGRAPH 1999 ( PDF ).
  8. ^ "Виртуа Файтер 4" . Сега Ретро . 2023-11-30 . Проверено 3 марта 2024 г.
  9. ^ "Графические технологии в играх" . Меристация (на испанском языке). 18 апреля 2012 г. Проверено 3 марта 2024 г.

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