Использование карт нормалей в Blender

Материал из Blender3D.

Перейти к: навигация, поиск

Использование карт нормалей в Blender

авторы - Tiziana Loni (TiZeta), Roland Pluss (Odjin/DragonLord)

перевод: cyberdime

Содержание

Требования:

Умение моделировать, выполнять UV-развёртки, UV-текстурирование, работать с текстурными каналами цвета и неровностей.

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

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

Blender и DENormGEN

DENormGEN – программа для работы с картами нормалей, разработана человеком по имени DragonLord, как инструмент для разрабатываемой им игры "Epsylon - The Guardians of Xendron". Вы можете скачатьеё по ссылке ниже. Текущая версия 1.4:

http://rptd.dnsalias.net/epsylon/

Вы скачаете отдельную программу и скрипт для Blender.

Установив скрипт в соответствующую папку в меню экспорта Blender вы обнаружите новый пункт "Drag[en]gine intermediate model".

Настройки моделей

Вам необходимо создать две версии модели в одном .blend-файле. Например на Рисунке 1 одна модель содержит 1508 полигонов, а другая 139 полигонов (треугольников).

Не забудьте для обеих моделей установить направление нормалей наружу (Show Normals в панели редактирования F9), выбрать все (А) и (Ctrl-N).

Рис.1: Две модели (Hi и Low-Poly)

Также проверьте модели и удалите несвязанные или дублирующиеся вершины. В DENormGEN 1.4 низкополигональная модель должна имет расширение .low (пример – character.low), а высокополигональные – расширение .hi (пример – character.hi)

Рис.2: Сетки моделей

Ещё одна важная вещь. Низкополигональная модель должна иметь присвоенный материал с назначенной текстурой (Map Input тип UV), UV- развёртку поверхности и карту, назначенную развёртке.

Вы можете использовать любые текстуры для UV-карты, так как на данном этапе текстура нужна только для определения размеров карты. Вы можете, например, назначить тестовую карту: в UV-редакторе выберите меню Image >> New, в открывшемся окне установите размер изображения и нажмите кнопку 'UV test Grid'. Сохраните изображение Image >> Save As.

Сохранённое изображение загрузите в виде UV- карты в UV Image Editor, а также назначьте в виде текстуры материалу в первый текстурный слот (Map Input – UV; Map To – Col). А можете загрузить финальную цветную текстуру, если она у вас уже есть.

Рис.3: UV-редактор

Наилучшим, на мой взгляд решением было бы использование тестовой карты с нанесённой решёткой из букв и цифр. См. Рис 3 – 5.

Для высокополигональной модели тоже потребуется применить пару приёмов. Кроме уже упомянутого расширения .hi обратите внимание на пропорции. Модели должны быть максимально похожими. Различия – только в деталировке. Пропорции у моделей должны быть одинаковыми. Этого проще всего добиться, если моделировать одну версию модели из другой. Не имеет значения какую из какой, главное, чтобы это было удобным для вас.

Вы можете также смоделировать высокополигональную модель, а затем использовать скрипт уменьшения полигонов. Но это может дать вам очень «грязный» и триангулированный меш.

Также помните, что наносить карты или развёртки на детальную модель не требуется. Просто смоделируйте её.

Рис.4: Панель материалов

Рис.5: Панель текстур.(Это не панель текстур, а та же панель матов :) - опечаточка!)

Пока всё на данный момент. Итак у нас получились две модели. Одна высоко- , а другая низкополигональная в одном файле. Для низкополигональной модели присвоен материал и выполнена UV-развёртка. Теперь переключаемся в Object Mode, выбираем обе модели и выполняем скрипт: File >> Export >> DRAG[EN]gine intermediate model и получаем файл с расширением '.dim'

Рис. 6: Запуск скрипта (Экспорт файла)

Теперь запускаем программу DeNormGEen и открываем только что экспортированный файл.

Рис.7: Интерфейс DeNormGEen

Откроется низкополигональная модель в окне просмотра.Здесь вы можете вращать мышью вашу модель в или увеличивать её используя Shift+ПКМ.

Alt+ЛКМ – перемещение источника освещения. В меню View (Вид) можно выбрать высокополигональную модель или вернуться назад к низкополигональной. Вдобавок вы можете менять размер карты используя меню: Texture Map >> Texture Map Sizes. Кроме того DeNormGEen позволяет вам регулировать поверхности подразделения (Subdivision Surfaces) для высокополигональной модели. Просто нажмите Ctrl+Т.

Пришло время делать текстуру

Выбираем Меню Texture Map >> Generate Normal/Displacement Maps.

Теперь у нас на выбор две опции, которые необходимо отметить: Tangent Space или Object Space (Тангенциальная или Объектная карта нормалей). Первая хороша для анимированных объектов (любых персонажей или объектов с деформациями), а вторая – для статики (здания, статуи и т. д.)

Рис.8: В окне просмотра DeNormGEen слева направо: высокополигональная модель, низкополигональная модель, низкополигональная модель с нанесённой картой нормалей от высокополигональной модели.

Отмечаем или снимаем флажок "Smooth hi-res mesh normals” (Сглаживать нормали высокополигонального меша), который позволяет получить карту нормалей либо сглаженной либо с выраженными гранями. В большинстве случаев следует оставлять этот флажок.

После этого выбора ждём когда карта будет сгенерирована и просматриваем результат её соответствия детальной модели, используя меню View.

Сама карта нормалей доступна для просмотра в окне Texture Preview.

DeNormGEen также способен генерировать чёрно-белые карты смещения (Displacement Maps), но эта фича находится пока в стадии разработки и может давать странные результаты.

Последнее, что следует не забыть сделать – сохранить карту. Выбираем Texture Maps >> Save Normal Map и получаем копию нашей карты нормалей в виде текстуры формата .tga. Прежде чем использовать эту карту в Блендере необходимо её слегка обработать.

Обработка карты в GIMP

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

Это будет исправлено в будущих релизах DeNormGEen, а пока нужно корректировать карты в GIMP или подобных растровых редакторах.

Для тангенциальных карт нормалей (сгенерированных с опцией Tangent Space):

Открываем карту в GIMP и в панели каналов (Channels) выбираем зелёный канал (Green). Обратите внимание, что другие каналы могут быть не выбраны, или выбраны по умолчанию. Следует снять с них выделение.

Теперь инвертируем зелёный канал используя меню слоёв (Layer) Layer >> Colors >> Invert Заметьте, что если карта изменит цвет, станет зелёной или что-то вроде этого, значит вы выбрали неверный канал. Перезагрузите карту и попробуйте снова. Карта должна выглядеть точно также, только светотени должны инвертироваться.

Рис. 9: Выбираем только зелёный канал

Рис. 10: Вот что может получиться. Слева направо: оригинал; результат правильного инвертирования; неверный результат

Для объектных карт нормалей (сгенерированных с опцией Object Space):

Всё, как описано выше, но инвертировать нужно красный канал (Red).

Установки карты нормалей в Блендере

Это очень похоже на установки обычных карт неровностей (Bump Maps), за исключением того, что необходимо активировать кнопку Normal Map ещё и в текстурной панели, а не только в панели материала.

В текстурной панели F6 выберите второй текстурный слот и загрузите туда карту, выбрав тип текстуры Image.

Рис. 11: Закладка 'Image' в текстурной панели

В закладке Image нажимаем кнопку Normal Map. В панели материала F5 в закладке Map Input выбираем тип маппинга – UV, а также активируем Nor в закладке Map To. Убедитесь, что кнопка Col не активирована для этого текстурного слота.

Рис. 12: Закладка 'Map To' панели материала

Всё: осталось только заменить первый текстурный слот (в случае, если вы использовали тестовую карту) финальной текстурой или использовать просто однотонный оттенок.

Ну и конечно же вы можете добавить что- нибудь в оставшиеся текстурные слоты, хотя их число ограничено. Настраиваем свет, устанавливаем камеру и рендерим!

Рис.13: Итоговый рендер. Слева направо: Базовая детальная модель; Базовая низкополигональная модель; модель с тангенциальной картой нормалей; модель с объектной картой нормалей.

А как насчёт Sharp Construct?

Sharp Construct – очень полезная программа трёхмерного скульптинга, для добавления и проработки деталей высокополигональных мешей. Просто экспортируйте вашу модель в OBJ-файл; загрузите в Sharp Construct, добавьте деталировку и сохраните опять в OBJ-файл. Потом импортируйте OBJ в Блендер и добавьте (Append) низкополигональную модель в ту же сцену. Вы также можете использовать для проработки детальной модели некоторые скрипты, такие как B-Brush или Expresso.

Проблемы

Даже несмотря на то, что всё ещё находится в разработке, DeNormGEen действительно работает прекрасно. Однако в некоторых случаях при наложении очень детальных карт на слишком низкополигональные меши может давать артефакты. Если вы не хотите увеличивать разрешение, то дорабатывайте карту в растровом редакторе. Например в GIMP: Выбираем инструментом лассо (Lasso) проблемные участки и применяем к выбранным зонам скрипт размытия (Blurring). Для большей эффективности убедитесь, что опция Feather Edges (Пушистые края) включена в настройках лассо с подходящим радиусом пикселей.

Не используйте инструменты Smudge (Смазывания) и Clone (копирования участка): их использование на карте нормалей запрещено – вы просто испортите текстуру.

Полезные ссылки:

Личные инструменты