Лекция
Привет, Вы узнаете о том , что такое нормальное отображение , Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое нормальное отображение , настоятельно рекомендую прочитать все из категории Компьютерная графика.
В 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}, давая тот вид небесно-голубого цвета, который виден на картах нормалей (синяя (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 .
Исследование, описанное в статье про нормальное отображение , подчеркивает ее значимость в современном мире. Надеюсь, что теперь ты понял что такое нормальное отображение и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Компьютерная графика
Комментарии
Оставить комментарий
Компьютерная графика
Термины: Компьютерная графика