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

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

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

История [ править ]

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

Метод [ править ]

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

Пробелы [ править ]

Пространственные размеры различаются в зависимости от пространства, в котором была закодирована карта нормалей. Простая реализация кодирует нормали в пространстве объекта, так что красный, зеленый и синий компоненты напрямую соответствуют координатам 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). Следовательно, части объекта, прямо обращенные к зрителю, имеют голубой цвет. Самый распространенный цвет на карте нормалей.
  • Нормаль, указывающая на верхний правый угол текстуры (1,1,0), отображается в (255,255,128). Следовательно, верхний правый угол объекта обычно светло-желтый. Самая яркая часть цветовой карты.
  • Нормаль, указывающая вправо от текстуры (1,0,0), отображается в (255,128,128). Следовательно, правый край объекта обычно светло-красный.
  • Нормаль, указывающая на верх текстуры (0,1,0), отображается в (128,255,128). Следовательно, верхний край объекта обычно светло-зеленый.
  • Нормаль, указывающая слева от текстуры (-1,0,0), отображается в (0,128,128). Следовательно, левый край объекта обычно темно-голубой.
  • Нормаль, указывающая на нижнюю часть текстуры (0, -1,0), отображается в (128,0,128). Следовательно, нижний край объекта обычно темно-пурпурный.
  • Нормаль, указывающая на нижний левый угол текстуры (-1, -1,0), отображается в (0,0,128). Следовательно, нижний левый угол объекта обычно темно-синий. Самая темная часть цветовой карты.

Поскольку нормаль будет использоваться в вычислении скалярного произведения для вычисления рассеянного освещения, мы видим, что {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 означают, что вершина находится перед камерой (а не за камерой), это соглашение гарантирует, что поверхность будет сиять с максимальной силой именно тогда, когда вектор света и вектор нормали совпадают.

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

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

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

См. Также [ править ]

  • Отражение (физика)
  • Окклюзия окружающей среды
  • Карта глубины
  • Выпечка (компьютерная графика)
  • Тесселяция (компьютерная графика)

Ссылки [ править ]

  1. ^ Блинн. Моделирование морщинистых поверхностей , Siggraph 1978
  2. ^ Кришнамурти и Левой, Подгонка гладких поверхностей к плотным многоугольным сеткам , SIGGRAPH 1996
  3. ^ Коэн и др., Упрощение с сохранением внешнего вида , SIGGRAPH 1998 (PDF)
  4. ^ Cignoni et al., Общий метод сохранения значений атрибутов на упрощенных сетках , IEEE Visualization 1998 (PDF)
  5. ^ Миккельсен, Повторное моделирование морщинистых поверхностей , 2008 (PDF)
  6. ^ Гейдрих и Сайдел, Реалистичный, Аппаратное ускорение затенение и освещение архивации 2005-01-29 в Wayback Machine , SIGGRAPH 1999 ( PDF )

Внешние ссылки [ править ]

  • Учебное пособие по карте нормалей Попиксельная логика, лежащая в основе карты нормалей Dot3
  • Бесплатный генератор NormalMap-Online в браузере
  • Нормальное отображение на sunandblackcat.com
  • Отображение нормалей в Blender
  • Отображение нормалей с палитрой текстур с использованием старых расширений OpenGL.
  • Фотография карты нормалей Создание карт нормалей вручную путем наложения цифровых фотографий
  • Объяснение нормального сопоставления
  • Генератор карт нормалей с открытым исходным кодом Simple Normal Mapper