en

godar's blog

История

Впервые идея о том, что можно «брать» детали с высокополигональной модели и переносить на низкополигональную, была предложена на СИГГРАФ (SIGGRAPH) в 1996 во время доклада "Использование сглаженных поверхностей для добавления плотности полигональной сетке" авторов Кришнамурати и Левои. Предлагалось использовать созданные на основе НУРБС (NURBS) карты смещения (displacement maps) для увеличения детализации низкополигональной поверхности. Это была только идея; приложение, которое смогло это сделать, появилось гораздо позже.

SIGGRAPH (The Special Interest Group for Computer Graphics) группа SIGGRAPH специальная группа в составе ASM, объединяющая специалистов по компьютерной графике. Проводит ежегодные конференции, предназначенные для художников и аниматоров, работающих с компьютерной графикой.

В 1998 опять на СИГГРАФ были прочитаны 2 доклада о трансформации деталей, составляющих объект как нормалей с высокополигональной модели на низкополигональную. Назывался доклад: «Appearance Preserving Simplification» за авторством Коэна и еще нескольких исследователей из Института инженеров по электротехнике и электронике визуализации. В первой работе представлен алгоритм, с помощью которого при упрощении можно следить за тем, как потерянные детали должны отрисовываться на упрощенной сетке. Далее был представлен простой подход, при котором высоко- и низкополигональная сетка разделяется, а утерянные детали восстанавливаются независимо от способа создания низкополигональной модели. Этот метод (с небольшими вариациями) в данный момент используется в большинстве приложений.

Что же такое карта нормалей?

Карта нормалей (normal map) — это дальнейшее развитие такой технологии как бамп (bump (англ.) – изгиб, выпуклость; выпуклая вмятина, вздутие). Иногда карты нормалей называют «3-х точечная бамп-карта» (Dot3 bump mapping).

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

Как и бамп, карты нормалей увеличивает визуальную детализацию 3d-модели без добавления дополнительных полигонов.

Бамп рассчитывается на основе текстуры с одним каналом (grayscale — оттенки серого). Карты нормалей используют многоканальную RGB-текстуру.

Карта нормалей рассчитывается для каждого пикселя текстуры. Значения каждого из каналов RGB — это XYZ координаты нормали текселя.

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

Обычно карты нормалей существуют в 2-х вариациях: объектное пространство (object-space) и касательное пространство (tangent-space). Они отличаются системой координат, в которой нормали измеряются и сохраняются.

Tangent space (пространство касательных, касательное пространство) — это обобщение на случай произвольного многообразия понятий касательной прямой для одномерных кривых и касательной плоскости для двумерных поверхностей.


По-простому говоря: 1 тексель текстуры с картами нормалей заменяет 10 полигонов, а может и больше.

Картинка примера нормалей:

Настоящие «нормальные» монстры.



Где применяется - zbrush, DOOM 3, Blender3D...


Изначально bump mapping использовал карту высот, сам строил нормали и получался normal mapping, так что по сути одно и тоже.

Я рисовал бамп, используя оттенки серого. Иногда преобразовывал цветное изображение в серое, а затем с помощью специального фильтра в Фотошопе превращал его в карту нормалей. 



Для того, чтобы сделать объемные кирпичики на стене, отверстия от пуль или еще какие-нибудь мелочи, эта технология подходит.

Если вы делаете персонажа, машину или еще какой либо сложный объект, вам придется использовать другой метод. Тот самый, который предложили в 1998 году. Когда вы «снимаете» карту нормалей с высокополигональной модели, а затем накладываете эту карту на низкополигональный объект.

Попробуем преодолеть технологические сложности, сделав простейшую карту нормалей.

Генерировать нормал можно в Maya, 3ds max, NVIDIA Melody и Z-Brush. Наверное список программ больше.

Пример как сделать карту нормалей в 3ds max 9

Попробуем сделать карту нормалей для этого объекта.



Это 2 полигона, соединенных под прямым углом.

Apr 28 '14 · 5 comments

Archives