• Что можно приготовить из кальмаров: быстро и вкусно

    Наверно все слышали (да и видели), такие игры как Doom III, Far Cry, Bloodrayne, и задавались вопросом «Как они смогли добиться такой реалистичности моделей?». Пару лет назад некоторые журналисты заявляли, что Джон Кармак планировал использовать модели персонажей от 500.000 до 1.000.000 полигонов. Люди, писавшие это, просто не понимали с чем имеют дело. Такие высокополигональные модели используются, но не напрямую в игре, а для создания карты нормалей (normals map).

    Введение:

    1. Для начала немного терминов.

    1.1. О нормалях.

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

    1.2. О карте нормалей (normals map).

    Обычное освещение (в Direct3D или OpenGL) использует значения нормалей для расчета освещения в вершинах, освещение же в точках между вершин получается линейной интерполяцией значений, вычисленных в вершинах. Normal map позволяет избавиться от интерполяции и выполнять расчет освещения не повершинно, а попиксельно.

    При обычном вершинном освещении реалистичность достигалась одним способом – усложнением модели добавлением полигонов. Тупиковость ситуации на лицо – нельзя бесконечно усложнять модель. Ответ на решение проблемы – карта нормалей.

    2 Основная часть работы.

    2.1. Начало.

    Определимся с тем, какой софт нам нужен для выполнения поставленной задачи:
    3DS Max;
    Adobe Photoshop;
    плагин Texporter для 3dsmax (http://www.cuneytozdas.com/software/3dsmax/#Texporter);
    программа для 3д дизайнеров - NVIDIA Melody (http://developer.nvidia.com/object/melody_home.html);
    плагин NormalMapFilter для Photoshop;
    плагин *.dds экспорта для Photoshop;
    плагин NormalMapFilter.

    Что нужно будет моделировать:
    high полигональная модель головы (количество полигонов значения не имеет, чем больше, тем лучше);
    low полигональная модель головы (это непосредственно модель, которая будет использоваться в игре; количество полигонов – столько, сколько позволит ваш движок)
    ВНИМАНИЕ: (ОЧЕНЬ ВАЖНЫЙ МОМЕНТ) – модели должны быть строго подобны! Как это обеспечить, будет рассмотрено ниже.

    2.2. Убиваем двух зайцев (как из одной модели получить две).

    Так как нам нужно 2 подобные модели (low и high), почему бы нам не сделать сначала high, а потом оптимизировать ее в low. Так и поступим. Для этого используем метод моделирования с помощью сплайнов и патчей, подробно описанный в книге Кима Ли "3DS Max для дизайнера". Удобство моделирования в сплайнах/патчах нам подходит больше всего по той причине, что такой моделлинг позволяет получить на выходе модель любой сложности.


    В итоге мы и получим требуемые low и high модели, имеющие общие ключевые точки и отличающиеся между собой только количеством полигонов (а следовательно и детальностью проработки).

    3. Текстурирование и расчет карты нормалей.

    3.1. Текстурирование.

    Итак, в нашем распоряжении есть модель человеческой головы, выполненная в двух вариантах: low и нigh.


    High модель можно временно спрятать, она нам в ближайшее время не понадобиться.

    Теперь приступаем к работе над low моделью. Применяем модификатор UVW map, или Unwrap UVW, кто как больше привык, и готовим модель к текстурированию. После того как вы проделали эту процедуру, примените к модели утилиту Texporter (по желанию, если вы опытный текстурщик, то можете обойтись и без нее), полученную текстуру наложите на модель, и проверьте, нет ли сильных искажений.


    Модель с текстурой, полученной с помощью Texporter и текстурная развертка.

    ВНИМАНИЕ: разрешение стороны текстуры должно быть кратно степени 2 (256х256, 512х512 … и т.д.),
    ВНИМАНИЕ: карта нормалей будет размещена точно так же, как вы настроили текстурные координаты в UVW map.

    Подготовительная часть работы закончена. Экспортируйте ваши модели в формат *.3ds или *.obj (на ваше усмотрение, можно сочетать оба формата.) и приступайте к следующему этапу работы.

    4. Работа с картой нормалей и diffuse текстурой.

    4.1 Программа для 3д дизайнеров - Melody (NVIDIA media tool).

    Установите Melody. Полученные ранее модели теперь нужно загрузить в эту программу. Melody - многофункциональный софт, предназначенный для работы с моделями (оптимизация, создание LOD-ов, и т.д.), но нас в данном случае интересует расчет карт нормалей (Generate Normal Map). Итак, жмите кнопку Load Working Model и загружайте low модель. После того как вы это сделаете, появится вторая кнопка - Load Reference Model, жмите ее и загружайте high модель. Далее должно появиться вот такое окно:


    Теперь пришло время заняться настройками. Жмем кнопку Normal Map Settings, и перед вами появляется следующее окно:


    О настройках следует сказать несколько слов.

    Normal map filename. Этот пункт, в общем-то, не должен вызвать сложностей, просто укажите место куда сохранить текстуру (карту нормалей).

    Generate Texture Coordinates for normal map. В этом пункте вас просят указать текстурные координаты которые будут использованы для расчета карты нормалей. Melody может сам создавать текстурные развертки (Generate normal map texture coordinates ), этот способ вполне подходит для простых объектов, но в нашем случае лучше воспользоваться текстурной разверткой, которую мы создали в 3DS Max (см. пункт 3.1). Для этого выберите Use decal texture coordinates . Затем укажите размер требуемой текстуры width -x- height. Остальные настройки оставьте без изменений. Закрывайте это окно и в основном меню жмите кнопку Generate Normal map . Если все было сделано правильно, вы увидите на экране следующее:



    А вот так выглядит полученная карта нормалей на 3д модели:


    4.2. Diffuse map (текстура модели) или "шкура"(skin).

    После того как получена карта нормалей, следующим шагом будет создание «шкуры». Поступаем следующим образом: Грузим фотошоп, в качестве шаблона берем карту нормалей и поверх нее рисуем «шкуру». ВНИМАНИЕ: При рисовании шкуры не злоупотребляйте рисованием теней, их можно только слегка обозначить. Готовая текстура должна быть освещена равномерно, функцию теней возьмет на себя карта нормалей.


    Теперь остается совместить «шкуру» и карту нормалей.


    5. Детальная обработка. Использование NormalMapFilter.

    Модель головы с картой нормалей и шкурой готова, но вам хочется внести мелких деталей которое будут реагировать на освещение (шрамы, родинки и т.д.). Добавим нашей голове три страшных шрама на левой стороне лица. Для этого воспользуемся Фотошопом и специальным плагином - NormalMapFilter (NVIDIA). Этот плагин помогает без особых усилий создавать плоские карты нормалей. Он широко используется в формировании текстур для скал, древесины, ландшафта и т.п. Им то мы и воспользуемся. Вот как это работает в теории:


    За основу (как и в случае рисовании «шкуры») берем карту нормалей. Чтобы сосредоточить внимание читателя на деталях, я рассмотрю этот момент на укрупненном фрагменте. Как я сказал выше, мы будем добавлять шрамы на левой стороне лица. Откройте в фотошопе «шкуру», выделите все, скопируйте и вставьте из буфера в файл с картой нормали. Затем добавляем слой (Layer 2) и заливаем его белым цветом, и (Layer 1) в нем рисуем маску шрама.


    После того как маска готова, рисуем шрам уже на «шкуре», причем очень важно стараться не вылезать за границы маски.


    Следующий шаг: склеиваем все слои (перед этим отключить слой «шкуры» и карты нормали). У вас должна получиться черная маска шрама на белом фоне. Теперь можно применить плагин Normal map Filter. Варьируйте параметры height generation , чтобы получить требуемую интенсивность (высоту/глубину), тут можно экспериментировать, как вам нравится, можно сделать шрам выпуклым или наоборот вдавленным. Полученное изображение скопируйте и вставьте из буфера в файл с картой нормали. Затем удалите (можно использовать select color range, fuzziness ~ 60%) фиолетовый цвет (RGB 128.128.256). Теперь склейте слои. Вот что примерно должно получится:


    А вот так это выглядит в итоговом варианте:


    Заключение.

    Вот, в общем-то, и все, как видите, чего-то суперсложного в этом нет. Если сразу не получится, пробуйте еще, начните с более простых моделей (например, со сферы или куба).

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

    Есть несколько способов создать/имитировать рельеф в 3dsMax:

    1. Моделирование
    2. Bump maps
    3. Diffuse maps
    4. Normal maps
    5. Displacement

    Рассмотрим их все по порядку, случаи их применения, плюсы и минусы:

    1. Моделирование

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

    Несомненные плюсы реальной геометрии: корректный абрис объекта (Рис.1.B). и корректная тень (Рис.1.С). Создание рельефа с помощью моделирования является предпочтительным способом с точки зрения получения качественного продукта на выходе. Однако же при достаточной детализации возрастает и количество полигонов в модели, что значительно увеличивает время просчета изображения. Поэтому часто используют альтернативные способы.

    2. Bump maps

    Можно создать нехитрую черно-белую карту (растровую или процедурную) описывающую неровности материала – чем светлее участок карты, тем «выше» точка рельефа и наоборот. Bump-карты не изменяют геометрии вашего объекта, а лишь управляют отражением света от его поверхности, в результате чего создается иллюзия, что материал имеет неровности (Рис.2.А). Поэтому часто такой рельеф называют псевдорельефом.

    Разумеется, с применением карты абрис объекта не меняется (Рис.2.В) (и характер тени, конечно). Следовательно применять Bump лучше на моделях среднего плана. Поэтому же не следует иммитировать bump-картами слишком большие перепады рельефа (это лучше предоставить реальной геометрии). Сцены с картами Bump визуализируются значительно быстрее, чем с реальной геометрией.

    Bump-карты могут существенно изменить внешний вид материала, а значит и сделать его интереснее. На Рис.3 все материалы созданы с использованием bump-карт.

    Необязательно использовать только рисованные (или фотографические) Bump-карты. Вполне неплохих результатов можно добиться комбинируя стандартные процедурные карты доступные в 3ds Max - Рис.4.

    Для создания карты рельефа этого металлического шара использовались четыре процедурных карты: Noise (Шум), Speckle (Крапчатый), Splat (Брызги), Dent (Вмятины).

    3. Diffuse maps (Диффузные карты)

    Взгляните на рисунок Рис.5. Между изображениями A и B почти не видно разницы. Тем не менее на рисунке Рис.5.А изображен материал только с диффузной картой (непосредственная окраска поверхности), на рисунке Рис.5.B к диффузной карте добавляется Bump-карта для формирования микрорельефа.

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

    Однако для криволинейных поверхностей (особенно, если они отражают) bump-карты усиливают свою роль в формировании материала. На Рис.6.В. действие bump-карты очень заметно, а значит применение ее оправдано.

    4. Normal maps (Карты нормалей)

    В своей физике карты нормалей сходны с bump-картами. Отличие состоит в том, что карты Bump строятся на основе двух измерений (по шкале от черного до белого), а Normal во всех трех. Поэтому карты нормалей выглядят немного необычно (Рис.7).

    Карты нормалей очень активно используются в играх, так как позволяют существенно сократить количество полигонов, почти не потеряв в детализации модели. На Рис.8.А изображена низкополигональная (!) модель (700 полигонов), на Рис.8.В карта нормалей соответственно.

    Первоначальная высокополигональная модель (со всеми узорами и орнаментами) этого сундука содержала почти 2 миллиона полигонов. Понятно, что такой «тяжелый» сундук использовать в игре было бы просто невозможно.

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

    5. Displacement (Смещение геометрии)

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

    Для Displacement используют черно-белые карты высот (точно такие же как и для Bump).

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

    Благодаря реальной геометрии на выходе и корректному абрису объекта, Displacement можно использовать при любых ракурсах и на любых планах. Следует отметить, что расчет карт смещения довольно сильно нагружает процессор компьютера. Чем больше карта Displacement, тем точнее детали геометрии на выходе, но и тем больше время визуализации.

    Что же выбрать? Боюсь, что дать однозначный ответ здесь невозможно. Для каждой задачи вам понадобится свой способ формирования рельефа. И возможно, что в одной сцене вы используете и bump, и displacement, и normal; что-то сделаете реальной геометрией, а какая-то модель останется довольствоваться диффузной картой.

    Как использовать карты микрорельефа в 3ds Max?

    Если с честным моделированием все более-менее понятно, то как поступить с картами Bump, Diffuse, Normal, Displacement ? Как заставить их работать?

    Почти все карты (процедурные и растровые) в 3ds Max помещаются в специальные слоты (каналы). Слоты для материалов можно найти в Map Editor (Редактор материалов – горячая клавиша M) на свитке Maps (Карты) – Рис.10.

    В зависимости от того, с каким типом материала мы в данный момент работаем, список карт будет меняться. На Рис.10 мы можем видеть карты для материала типа VrayMtl (материал используется с визуализатором Vray). Левый столбик свитка содержит названия карт. Самые часто используемые карты:

    • Diffuse (Диффузная – непосредственная окраска объекта, его фактура)
    • Reflect (Отражение – сила отражательной способности материала)
    • Refract (Преломление – насколько сильно материал преломляет свет)
    • Glossiness (Глянцевитость – сила размытия блика на поверхности)
    • Bump (Микрорельеф – карта неровностей поверхности)
    • Opacity (Непрозрачность – управляет прозрачностью объекта)

    Правее названий карт располагается столбик с окнами-счетчиками, где можно указать силу действия карты на выбранный параметр. Большинство карт используют значения от 0 до 100, но встречаются исключения, например Bump позволяет задавать числа от -1000 до 1000. Галочка после окна-счетчика позволяет включить/исключить действие карты на материал.

    Если в слоте не указана какая-либо карта, то слот содержит надпись None (Пусто). Если карта добавлена, то слот меняет свое название на имя карты – Рис.11.

    Добавить карту можно, щелкнув по слоту левой кнопкой мыши и в открывшемся списке выбрав требуемую, нажать ОК. Если карта выбирается растровая (Bitmap ), то после необходимо указать в диалоговом окне путь к растровому файлу. Удалить карту из слота не сложнее – правая кнопка мыши по слоту, выбрать в контекстном меню команду Clear (Очистить) или Cut (Вырезать), в последнем случае карта при удалении будет помещена в буфер.

    Итак по порядку.

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

    С диффузной картой дело обстоит точно также как с картой Bump . Только слот следует использовать Diffuse . Это по сути самое простое текстурирование объекта – просто окрашивание его в какой-то рисунок.

    Карты нормалей помещаются в слот Bump, но в списке тип карты следует выбрать Normal Bump (даже если карта у вас растровая), после в настройках самой карты Normal Bump указать непосредственно карту, отвечающую за микрорельеф – Рис.12. Получится некоторая вложенность «карта в карте».

    Карты Displacement нужно помещать в слот Displace. Следует учитывать, что чем большее разрешение имеет карта, тем качественнее произойдет смещение геометрии, но тем больше будет время визуализации. Иногда большие карты просто «подвешивают» компьютер. Displacement - очень затратная по расчетным ресурсам технология.

    Также можно поместить карту в слот модификатора VrayDisplacementMod, предварительно назначив последний на ваш объект. Актуально, только, если вы используете визуализатор Vray.

    Где найти карты?

    Карты Diffuse – это фотографии, рисунки или коллажи из того и другого. Bump и Displace в большинстве случаев представляют собой обесцвеченные (использовать цветные изображения бессмысленно) и скорректированные аналоги диффузных карт. Карты нормалей можно получить с помощью плагинов также из обычных рисунков или фотографий. Но если у вас под рукой есть высокополигональная копия объекта, то имеет смысл «снять» Normal Map с high-poly модели и спроецировать на low-poly, но это тема отдельного урока.

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

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

    Теория

    Но для начала немного теории с Википедии:

    Normal mapping - техника, позволяющая изменять нормаль отображаемого пикселя основываясь на цветной карте нормалей, в которой эти отклонения хранятся в виде текселя, цветовые составляющие которого интерпретируются в оси вектора , на основе которого вычисляется нормаль, используемая для расчета освещенности пикселя. Благодаря тому, что в карте нормалей задействуются 3 канала текстуры, этот метод дает большую точность, чем Bump mapping, в котором используется только один канал и нормали, по сути, всего лишь интерпретируются в зависимости от «высоты».

    Карты нормалей обычно бывают двух типов:

    object-space - используется для не деформирующихся объектов, таких как стены, двери, оружие и т. п.

    tangent-space - применяется для возможности деформировать объекты, например персонажей.

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


    Это означает что карта нормалей это своеобразная развёртка высококачественной модели которая натягивается на низкокачественную модель с низкокачественной текстурой, в результате которой на поверхности низкокачественной модели визуально появляются детали в виде складок/шероховатостей/структуры тканей хотя фактически этого на модели нет.

    Ну как-то так, объяснил как мог, своими словами.

    Практика

    Ну и собственно сам метод избавления от плоскости и придание объёма текстуре. Нам понадобятся:

    Графический редактор Paint.net (Неплохая программа, весит мало, всегда юзаю сам)

    Итак-с начнём.

    Нам нужна карта нормалей (normal map, нормал мап, фиолетовая текстура ) именно от той текстуры которую мы хотим улучшить. Обычно в файлах игры она называется точно так же как и обычная, но с окончанием "_nor", "_no", "_n". В некоторых играх она бывает практически прозрачной и,одновременно, радужно-разноцветной как в Battlefield 2. Открываем её в paint.net.

    Делаем её чёрно-белой комбинацией клавиш Ctrl+Shift+G или же нажимаем вкладку Коррекция Сделать чёрно-белым

    На этом этапе нам нужно осознать правильно ли придан объём. Если, к примеру, это карта нормалей от текстуры одежды, то можно обратить внимание на карманы, швы где одна часть одежды должна быть немного выше, а карманы выпуклыми. Зачастую приходится инвертировать цвета, но это не всегда и это надо "почувствовать нутром". Если вы, вдруг, прозевали с моментом то скорее всего текстура в конце проделанной работы станет светлее прежнего и модель будет выделяться на общем фоне. Инверсия цветов происходит комбинацией клавиш Ctrl+Shift+I или всё в той же вкладке Коррекция Инвертировать цвета .

    Всё, мы подготовили само улучшение. Теперь нам нужно открыть улучшаемую текстуру (color map, колор мап, текстура ) и создать новый слой комбинацией клавиш Ctrl+Shift+N или через вкладку Слои Добавить новый слой . Внимание: нам хватит одного нового слоя. У нас должно быть только два слоя.

    Теперь меняем свойства этого слоя. Клавишей F4 или через вкладку Слои Свойства слоя... В появившемcя окошке на нужен режим смешивания "Перекрытие " и нажимаем ОК .

    Теперь переключаемся на подготовленное улучшение и копируем её последовательностью действий: Выбираем всё комбинацией клавиш Ctrl+A и, собственно, копируем комбинацией Ctrl+C . Переключаемся на улучшаемую текстуру, выбираем новый слой который мы подкорректировали (если вдруг по каким-то причинам он не выбран) и вставляем то, что скопировали, в этот слой комбинацией клавиш Ctrl+V . И мы сразу заметим улучшение.

    Попробуйте почувствовать разницу:

    Теперь объединяем наши слои комбинацией клавиш Ctrl+M или во вкладке Слои Объединить со следующим слоем. И сохраняем нажав иконку дискеты перезаписывая файл или же через вкладку Файл Сохранить как.. и задав новое имя файлу. Иначе вы сохраните его как незаконченный проект программы, а не в привычном нам формате PNG/BMP.

    В принципе на этом всё. Если модель состоит нескольких подмоделей (например модель человека – из головы, ног и туловища), то придётся и их текстуры улучшить данным способом. После этого запихать/заменить текстуры в файле формата.txd через TXD Workshop или другой подобной программы и запихать её в игру.

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

    » Раздел: Моделлинг

    Пролог

    В этом небольшом пособии я распишу шаг за шагом несложную процедуру слияния базовой текстуры с так называемой картой нормалей (normal map). О том, для чего это нужно, чуть ниже. Несмотря на очевидность процесса для тех, кто уже знает эту фишку, многие не в курсе. Лично я дошёл до этого сам спустя пару лет после того как начал конвертировать в Warcraft 3 модели из игр, поддерживающих normalmapping, что я вляется некоторым упущением.

    » Что такое Normal Map?

    Вот, что написано о карте нормалей на Polycount Wiki:
    Карта нормалей используется, как правило, для имитации детализированной high-res геометрии путём наложения на low-res модель. Каждый пиксель карты нормальней содержит данные о нормали - вектора, описывающего форму поверхности оригинальной high-res сетки в данной точке. Красный, зелёный и синие каналы карты нормалей используются для обозначения направления нормали каждого пиксела. (Авторский перевод)

    Думаю, все плюшки технологии normal mapping"а вполне очевидны, поэтому большинство современных 3D игр закономерно используют её. Выражается это в том, что каждая текстура из таких игр обладает своим дублёром, который и содержит информацию о нормалях. Многие неопытные моделлеры просто игнорируют её при конвертации моделей и текстур, полагая, что она совершенно бесполезна для игр, не поддерживающих данную технологию (например, Warcraft3 или World of Warcraft). И совершенно напрасно.
    А всё дело в том, что текстуры, которые рисуются для игр с реалистичным освещением, намеренно делают как можно менее контрастными, оставляя минимум теней - ведь в противном случае, нарисованные тени будут конфликтовать с реальными тенями от освещения. Поэтому для передачи фактуры используется карта нормалей, а базовые текстуры порой выглядят почти пустыми.
    Таким образом, наша задача - "слить" базовую текстуру с картой нормалей, чтобы на ней проявились тени. Всё, что для этого нужно - это Photoshop и прямые руки (тм)

    Шаг за шагом

    Наиболее требовательными к карте нормалей всегда были фактурные поверхности, например камень и дерево. Я остановил свой выбор на текстуре камне из пака Top-Down Fantasy. Поскольку текстуры там в формате tif, мне не понадобилось никакого стороннего софта, чтобы открыть их в Photoshop.

    Шаг 1

    Итак, слева - базовая текстура (выглядит довольно невзрачно, не правда ли?). Справа - карта нормалей. Как правило, она имеет то же название, что и базовая текстура, но с припиской _n или _nmp (что значит normal map), в то время как у оригинала часто бывает приписка _diff (что значит diffuse). Открываем оба файла.

    Шаг 2

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

    Шаг 3

    Цепляем "гипсовую" текстуру и бесцеремонно перетаскиваем в окно к базовой текстуре. Там у нас создаётся новый слой, закрывающий собой фон. Окно с картой нормалей теперь можно закрыть, оно нам больше не понадобится. У получившегося бутерброда выбираем верхний, "гипсовый" слой, и открываем его параметры наложения, дважды кликнув мышкой по миниатюре или вызвав меню правым кликом и выбрав соответствующий пункт из свитка. Режим наложения по умолчанию стоит "Нормальный".

    Шаг 4

    Открываем свиток, и нам выпадает немалый выбор из вариантов наложения. Любопытства ради, можете попробовать различные режимы. Я эмпирическим путём пришёл к режиму "Перекрытие", как наиболее подходящему нашей задаче.

    Шаг 5

    Нажав окей, мы видим, что базовая текстура, слившись с "гипсовой", стала куда больше похожа на настоящий камень, чем на на жёлто-коричневую кляксу. Однако оставить текстуру на этой стадии было бы халтурой, т.к. перкрывшись практически белой картой нормалей, текстуры выглядит светлее, чем должна. Чтобы убавить яркость, сначала объединяем слои в один , затем заходим в Изображение -> Коррекция -> Цветовой тон/Насыщенность.

    Шаг 6

    В появившемся окне нам нужен параметр "Яркость". Дальше - момент достаточно интуитивный, я делал примерно, на глаз, поэтому ваши значения могут отличаться в зависимости от глазомера - слегка убавляем яркость, двинув ползунок влево, чтобы вернуть тон текстуры к тому, каким он был в оригинале. По идее, -20 должно хватить. В любом случае, советую выбрать чёткое, круглое значение, чтобы легко запомнить и использовать его в остальных текстурах, не подбирая тон каждый раз на глаз.


    Карта нормалей спасает в ситуации, когда нам нужна модель с малым количеством полигонов, но с хорошей детализацией. Наложив карту нормалей на lowpoly (низкополигональную) модель, мы увидим результат только на рендере. Такой способ применяется в создании игр, когда каждый лишний полигон требует большей производительности компьютера, а просчёт карты нормалей требует значительно меньше ресурсов ПК.

    Изначально у нас есть HighPoly модель Box001 большим количеством полигонов). У нас стоит задача сделать LowPoly модель, которая будет повторять основные формы заданной модели.

    В данном случае хватит всего 14 полигонов что бы сделать основу (Box002 ) для наложения карты нормалей с Box001 .

    Настройка визуализации карты нормалей

    Выделив Box002, нажимаем на вкладку Rendering/RenderToTexture (горячая клавиша «0»).

    Перед нами открылось окно Render To Texture. В параметрах Projection Mapping ставим галочку напротив Enabled , нажимаем Pick… , выделяем HighPoly модель и кликаем Add .

    Вокруг объекта появился контейнер проецирования, который надо подогнать так, чтобы в него поместилась вся HighPoly модель. Для этого переходим на вкладку Modify/ Projection/ Cage , нажимаем Reset , если контейнер был автоматически создан с искаженной формой, и изменяем параметры Amount и Percent , увеличивая контейнер до нужного размера.

    В окне Render To Texture , в параметрах Output нажимаем Add… Если вы рендерите с помощью Vray , то выберите Vray Normals Map и нажмите Add Elements . Если используете стандартный рендер, то выберите Normals Map.

    Есть возможность изменить имя карты (Name ), путь для сохранения карты нормалей (File Name and Type ), тип слота материала (Target Map Slot ), а также размер карты (Width/Height ).

    Нажимаем Render и видим результат.

    P.S.: Карта нормалей сохраняется автоматически. Стандартный путь сохранения: C:\Users\Документы\3dsMax\sceneassets\images.

    Применение карты нормалей к LowPoly модели

    Выделяем ранее созданную LowPoly модель.

    На панели Modify выбираем модификатор Automatic Flatten UVs, который был создан автоматически в процессе создания карты нормалей. Нажимаем кнопку Open UV Editor… В открывшемся окне выбираем File/SaveUVs… , и сохраняем развёртку.

    Открываем редактор материалов MaterialEditor (горячая клавиша М ), создаём материал VRayMtl . В слот Bump выбираем карту Normal Bump .

    Заходим в параметры карты Normal Bump. В слот Normal выбираем карту Bitmap , и открываем ранее созданную карту нормалей. Применяем созданный материал к LowPoly модели.

    На панели Modify добавляем модификатор Unwrap UVW . Нажимаем кнопку Open UV Editor… В открывшемся окне выбираем File/LoadUVs… и загружаем сохранённую развёртку.

    В окне Edit UVWs, в правом верхнем углу, открываем свиток текстур и выбираем созданную нами карту нормалей.

    Запустив Render, мы увидим, что LowPoly модель имеет те же детали, что и HighPoly . Детали можно сделать более или менее выраженными, меняя значения параметра Bump в используемом материале.