Данная часть статьи посвящена теории карт нормалей, необходимости инвертирования каналов изображения/осей, принципам создания карты нормалей из карты высот, а также запеканию карт нормалей с высокополигональных моделей на низкополигональные модели в Blender (3D).
В предыдущей части статьи был представлен Обзор Normalmap Online
Вы можете поддержать автора проекта, пожертвовав ему сумму (сколько посчитаете нужным и возможным) на развитие сайта.
Получая пожертвования автор сайта уделяет меньше времени на сон и больше — на написание уроков и статей :). Спасибо!
Теория карт нормалей
Помните, выше я сказал, что в программе Normalmap online предусмотрена возможность инвертирования каналов? Для того чтобы понять, зачем может понадобиться инвертировать один из каналов карты нормалей, давайте обратимся к теории карт нормалей.
Карта нормалей представляет собой изображение, каждый цветовой канал которого используется для хранения информации о XYZ координатах нормалей. Напомню, что в Bump-карте используется всего один канал (grayscale).

Красный канал хранит направление нормалей по оси X, Зеленый – по оси Y, а Синий – по оси Z, по сути, описывая смещение точки высокополигональной 3D модели относительно низковолигональной модели (в тот случае, если карта нормалей была создана с использованием методики запекания карты нормалей с high poly модели на Low poly модель, а не была создана из карты высот).

Цвет RGB (128,128,128,255), он же (240, 100,50) в HSV и #8080ff в HTML цветах, описывает нормали, направленные строго перпендикулярно поверхности/полигону, если нормали вершин полигона также перпендикулярны его поверхности. На рисунке выше фон вокруг запеченных фигур имеет именно этот цвет.

Обратите внимание на расположение зеленых и красных областей на карте нормалей этих рисунках.

Процесс запекания карты нормалей в Blender’е ничем не отличается от запекания карты высот, за исключением необходимости выбрать режим запекания “Tangent” в режиме запекания Baking Mode. Более подробно про запекание карт нормалей рассказано в статье Быстрый старт из MakeHuman в Unity3D. Создание low poly и high poly моделей персонажа. Запекание карты нормалей в Blender.
Итак, разобравшись в том, что такое карты нормалей, давайте вернемся к онлайн приложению NormalMap-Online и посмотрим, как же он запекает карты нормали.
Для демонстрации я запек в Blender’е карту высот для усеченной пирамиды и загрузил ее в приложение.

Как видно на рисунке, карту нормалей данное онлайн приложение создает совсем не так, как Maya, Softimage XSI, ZBrush, Blender (Рисунок** выше), или как Unity3D создает нормали из текстур и карт нормалей (продемонстрировано на Рисунке* выше, где я просил вас обратить внимание на расположение зеленых и красных областей на карте нормалей), или как показано на странице Руководства пользователя Unity3D, Normal map (Bump mapping), посвященной работе с картами нормалей. Получается, что NormalMap Online создает карты нормалей с инвертированным Красным каналом. Чтобы это исправить достаточно поставить галочку напротив буквы “R” для опции инвертирования Invert каналов карты нормалей.

Если вы загрузите текстуру, размер которой не кратен степени двойки (т.е. отличный от2×2, 4×4, 8×8, 16×16, 32×32, 64×64, 128×128, 256×256, 512×512, 1024×1024, 2048×2048, 4096×4096, 8192×8192 пикселей), то приложение сообщит вам о том, что размер изображения не кратна степени 2, показав соответствующее предупреждение “Not power of 2” под окном отображения загруженной текстуры/карты высот.

Кстати, Normalmap Online поддерживает Drag’n’Drop текстур (как GIMP или Photoshop), т.е. вы можете перетащить свое изображения в окно карты высот (HeightMap), чтобы использовать ее для создания карт.
А вот в 3D-Coat от Pilgway и 3ds Max от Autodesk создает карты нормалей с инвертированным Зеленым каналом, чтобы это исправить, достаточно в настройках создания карты нормалей в Projection Options выбрать чекбокс “Up” вместо “Down” для ориентации (Orientation) во вкладке “Normal Map Space”.
В 3D-Coat инвертированный зеленый канал лечится настройками параметров экспорта.
В Mudbox при запекании карты нормалей можно выбрать способ запекания, соответствующий используемому в Unity3D, Blender и т.д. либо соответствующий способу запекания “нормалмапы”в 3dsMax.
Ужасы : ), к которым может привести “неивертирование” Красного или Зеленого каналов перед импортом в Unity3D, мы здесь показывать не будем, но вы можете посмотреть их, если наберете в поисковике, например, от Google Inc. Поисковую фразу вида “Unity3d inverted green channel of normal map”.
В следующей части статьи будет представлен Обзор приложений для создания различных карт (карт нормалей, карт отражений, карт высот, карт смещения, ssbump и т.д.), включая NVIDIA Texture Tools для Adobe Photoshop, SSBump Generator, xNormal, плагин normalmap для GIMP, Smartnormal (онлайн), CrazyBump и Обзор Awesome Bump.
Автор: Максим Голдобин
goldmaxval@gmail.com
The voice of raolantiity! Good to hear from you.