Нормальное отображение текстурного отображения , используемый для имитации освещения выпуклостей и вмятин

Лекция



Привет, Вы узнаете о том , что такое нормальное отображение , Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое нормальное отображение , настоятельно рекомендую прочитать все из категории Компьютерная графика.

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

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

Нормальное отображение  текстурного отображения , используемый для имитации освещения выпуклостей и вмятин

Нормальное отображение используется для повторной детализации упрощенных сеток. Нормальное отображение (a) запекается из модели из 78 642 треугольников (b) в модель из 768 треугольников (c). Это приводит к рендерингу модели из 768 треугольников (d).

История

В 1978 году Джим Блинн описал, как нормали поверхности могут быть нарушены, чтобы геометрически плоские грани имели детальный вид. Идея взятия геометрических деталей из высокополигональной модели была представлена ​​в "Fitting Smooth Surfaces to Dense Polygon Meshes" Кришнамурти и Левоя, Proc. SIGGRAPH 1996, где этот подход использовался для создания карт смещения по NURBS . В 1998 году были представлены две статьи с ключевыми идеями для переноса деталей с помощью карт нормалей из высокополигональных в низкополигональные сетки: "Appearance Preserving Simplification" Коэна и др. SIGGRAPH 1998, и "A general method for conservation attribute values ​​on simplifying meshes" Чигнони и др. IEEE Visualization '98. Первый ввел идею хранения нормалей поверхности непосредственно в текстуре, а не смещений, хотя это требовало, чтобы модель с низкой степенью детализации была сгенерирована определенным алгоритмом ограниченного упрощения. Последний представил более простой подход, который разделяет высоко- и низкополигональную сетку и позволяет воссоздавать любые атрибуты модели с высокой степенью детализации (цвет, координаты текстуры , смещения и т. д.) способом, который не зависит от того, как была создана модель с низкой степенью детализации. Сочетание хранения нормалей в текстуре с более общим процессом создания все еще используется большинством доступных в настоящее время инструментов.

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

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

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

Нормальное отображение  текстурного отображения , используемый для имитации освещения выпуклостей и вмятин

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

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

Нормальное отображение  текстурного отображения , используемый для имитации освещения выпуклостей и вмятин

Графическое изображение касательного пространства одной точки Нормальное отображение  текстурного отображения , используемый для имитации освещения выпуклостей и вмятинна сфере

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

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

Нормальное отображение  текстурного отображения , используемый для имитации освещения выпуклостей и вмятин

Графика, иллюстрирующая, как вектор нормали определяет отражение луча.

Для каждого касательного пространства поверхности в трехмерном пространстве есть два вектора, которые перпендикулярны каждому вектору касательного пространства. Об этом говорит сайт https://intellect.icu . Эти векторы называются нормальными векторами , и выбор между этими двумя векторами дает описание того, как поверхность ориентирована в этой точке, поскольку световая информация зависит от угла падения между лучомгНормальное отображение  текстурного отображения , используемый для имитации освещения выпуклостей и вмятини нормальный векторнНормальное отображение  текстурного отображения , используемый для имитации освещения выпуклостей и вмятин, и свет будет виден только если Нормальное отображение  текстурного отображения , используемый для имитации освещения выпуклостей и вмятин. В таком случае отражениесНормальное отображение  текстурного отображения , используемый для имитации освещения выпуклостей и вмятинлуча с направлениемг Нормальное отображение  текстурного отображения , используемый для имитации освещения выпуклостей и вмятин вдоль нормального векторанНормальное отображение  текстурного отображения , используемый для имитации освещения выпуклостей и вмятиндается

Нормальное отображение  текстурного отображения , используемый для имитации освещения выпуклостей и вмятин

Интуитивно это просто означает, что вы можете видеть только внешнюю сторону объекта, если смотрите снаружи, и только внутреннюю сторону, если смотрите изнутри. Обратите внимание, что световая информация локальна, и поэтому поверхность не обязательно должна быть ориентируемой как целое. Вот почему, хотя такие пространства, как лента Мебиуса и бутылка Клейна , неориентируемы, их все равно можно визуализировать.

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

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

Чтобы найти возмущение в нормали, необходимо правильно рассчитать касательное пространство. Чаще всего нормаль возмущается во фрагментном шейдере после применения матриц модели и вида Обычно геометрия предоставляет нормаль и касательную. Касательная является частью касательной плоскости и может быть преобразована просто с помощью линейной части матрицы (верхней 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} будут переотображены в значения ( Нормальное отображение  текстурного отображения , используемый для имитации освещения выпуклостей и вмятин). Знак z-координаты (синий канал) должен быть перевернут, чтобы сопоставить нормальный вектор карты нормалей с нормальным вектором глаза (точки обзора или камеры) или вектором освещения. Поскольку отрицательные значения z означают, что вершина находится перед камерой (а не за камерой), это соглашение гарантирует, что поверхность будет светиться с максимальной силой именно тогда, когда вектор освещения и вектор освещения совпадают.

Нормальное отображение в видеоиграх

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

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

Вау!! 😲 Ты еще не читал? Это зря!

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

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

создано: 2025-01-16
обновлено: 2025-01-16
27



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Компьютерная графика

Термины: Компьютерная графика