February 29, 2024

Создание Скина Для Dota 2 / Skin Creation For Dota 2

В этом гайде я расскажу как создать скин на оружие для Crystall Maiden, кроме того, вы получите основную информацию по созданию 3D моделей для любых игр.

Важно! Вам необходимо:

1. Иметь некоторые навыки работы в программе Blender (понимать, что такое полигональная сетка, кости модели, что такое Loop Cuts, Extrude, как использовать модификаторы, скульптинг)

2. Иметь небольшие навыки работы в программе Substance Painter

Если вы совсем новичок, предлагаю ознакомиться со следующими гайдами:

⚡️Базовая информация по геометрии в Blender: ссылка

⚡️Базовая информация по скульптингу в Blender: ссылка

⚡️Базовая информация о программе Substance Painter: ссылка

🌟 Или вы можете посмотреть мой подробный гайд по созданию модели здесь

Шаги создания посоха

Шаг 1. Поиск референсов и эскиз

Шаг 2. Ознакомление с требованиями

Шаг 3. Создание модели

Шаг 4. Создание карты нормалей

Дополнительная информация

Шаг 1. Поиск референсов и эскиз

Valve не терпит плагиата, так что, если вы хотите, чтобы ваш скин был опубликован, создавайте модель по собственному эскизу или по эскизу, сгенерированному нейросетью. Палитра скина должна более менее соответствовать палитре героя. Допустимы другие цветовые палитры, если вы создаете целый сет.
Для поиска референсов, я использовала pinterest и генерировала изображения в Fusionbrain. Также, вы можете полностью сгенерировать изображение в Fusionbrain.
Даже если ваши навыки рисования оставляют желать лучшего (как у меня), эскиз не обязательно должен быть идеальным и нужен лишь для базового представления того, что именно вы хотите сделать, удобства моделирования и раскраски модели.

Я подготовила для себя несколько эскизов: базовая форма, эскиз в цвете и палитра.

Базовая форма
Эскиз в цвете
Палитра

Шаг 2. Ознакомление с требованими

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

Так как мы делаем скин на оружие для Crystall Maiden, нас интересует эта страница.

LoD0 - отображение предмета при близком рассмотрении (имеет большее количество полигонов). Не является обязательным.
LoD1 - отображение предмета в игре (имеет меньшее количество полигонов). Это основная модель, которая будет использоваться и является обязательной.

Максимальное количество треугольников - 1000. Это необходимо учитывать при создании модели.

ВАЖНЫЕ ДЕТАЛИ, КАСАЕМО СОЗДАНИЯ МОДЕЛИ

1. Создание модели можно разделить на две основных операции: создание низкополигональной модели (до 1000 треугольных полигонов) и создание выскокополигональной модели (для карты нормалей, о которой я расскажу позже. Это то, как будет выглядеть наша модель визуально, не смотря на низкополигональную сетку) При этом, их геометрия должна быть максимально приближенной друг к другу, что опять же необходимо для карты нормалей.

Пример низкополигональной модели (слева) и выскокоплигональной модели (справа)

2. Модель не обязательно должна быть создана как единое целое, она может состоять из нескольких частей, объединённых позднее с помощью Ctrl+J.

Пример модели как единое целое
Пример модели из нескольких частей, обьединенных с помощью Ctrl+J

3. После создания части модели, очень важно применять на них модификатор Triangulate перед созданием их высокополигональной или низкополигональной версии.

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

Например, для создания части посоха - кристального сердца, я начала создание с его выскополигональной модели, не забыв применить на него модификатор Triangulate перед созданием его низкополигональной версии.

Часть посоха - кристальное сердце (216 треугольных полигонов)

Это сердце имеет 216 треугольных полигонов, что очевидно, слишком много для нашей модели.

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

Здесь я копирую высокоплигональную модель сердца и применяю к ней модификатор Decimate, установив такое значение Ratio, чтобы геометрия осталась приближенной, но количество треугольных полигонов значительно уменьшилось. Я установила его на 0.5, а затем применила Shade Smooth.

Не забудьте применить модификатор! (Ctrl+A)
Высокополигональная модель сердца с Shade Flat (слева) и низкополигональная модель сердца с Shade Smooth (справа)
Модификатор, примененный к низкополигональной модели сердца

5. В случае окантовки сердца, я буду действовать наоборот, сначала создав низкополигональную модель, а затем высокополигональную (на обе модели применено Shade Smooth).

Я скопировала низкополигональную модель и применила к ней модификатор Bevel с Limited Level - Weight, получив высокополигональную модель.

Низкополигональная модель с Shade Smooth (слева) и высокополигональная модель с Shade Smooth и модификатором Bevel (справа)
Модификатор, примененный к высокополигональной модели сердца
Не забудьте применить модификатор! (Ctrl+A)

Шаг 3. Создание модели

1. Скачаем модель Crystall Maiden из воркшопа.

Откроем модель в блендере (File -> Import -> FBX -> скачанная модель)

Выделим все кроме посоха (crystal_maiden_weapon) и удалим:

Пкм по crystal_maiden_weapon -> Alt+P -> Clear Parent. После этих действий посох станет огромным, разверните его (R+X+90) и поместите в центр(Shift+S -> Cursor to World Origin, Shift+S -> Selection to Cursor).

Измените размер (S) на примерно следующий:

Удалите Armature:

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

2. Добавьте референс изображения в сцену (Shift+A->Image->Reference) и подгоните его размер примерно под размер посоха цмки.

3. Начнем с создания низкополигональной модели ножки посоха. Ножку можно взять от посоха цмки или создать самому. Я взяла от посоха цмки.

crystal_maiden_weapon -> Tab->L по ножке->Shift+D->esc->P->Selection->Tab

Передвинем ножку crystal_maiden_weapon.001 в центр (Shift+S->Selection to Cursor)

Подгоним форму ножки под ножку на эскизе с помощью Loop Cuts (Ctrl+R)

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

🔹 Детали посоха могут быть отдельными объектами, как сказано здесь

🔹 Начинать можно с создания низкополигональной или высокополигональной части модели как сказано здесь

🔹 Не забудьте применить модификатор Triangulate для всех частей или, если вы создаете модель как единый объект, то только для нее.

Например, у меня получился посох состоящий из следующих частей:

🔵 Синее - высокополигональные части

⚪️ Серое - низкополигональные части

🟢 Зеленое - полностью плоские части, созданные объектом Plane. В дальнейшем, в Substance Painter, мы зададим им прозрачность и нарисуем сверху детали с эскиза. Детали сделаны плоскими для уменьшения количества полигонов.

Ножку я сделала высокополигональной, применив модификатор Subdivisoin и добавила детали с помощью скульптинга.

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

Я начинаю с создания низкополигональных вариаций для высокополигональных частей. У меня, на данный момент, всего три высокополигональные части - два хрустальных сердца и палка посоха.

Покажу на примере одного хрустального сердечка. Копирую первое хрустальное сердце (у меня оно называется Heart_High) с помощью Shift+D->esc, то есть оставляю в том же месте, так, чтобы обе вариации (высокополигональная и низкополигональная в будущем) как бы перекрывали друг друга.

Переименовываю скопированную часть Heart_High.001 на Heart_Low и применяю к ней модификатор Decimate. Нужно установить значение Ratio так, чтобы геометрия по прежнему оставалась приближенной к Heart_High, но количество треугольных полигонов значительно уменьшилось. Я установила примерно на 0.5. После применения модификатора, в режиме Edit Mode(Tab) для Heart_Low подгоняю его геометрию так, чтобы она была максимально приближена к Heart_High.

К низкополигональной модели нужно применять Shade Smooth!

Я применяю Shade Smooth к Heart_Low. В зависимости от того, как вы хотите, чтобы выглядел ваш объект, можете применять к высокополигональной модели Shade Smooth или Shade Flat. Я применила Shade Flat к высокополигональной модели, так как я хочу, чтобы внешне мое сердце выглядело хрустальным.

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

Heart_Low
Heart_High

То же самое проделываю с хрустальным сердцем в нижней части посоха и ножкой.

Теперь скроем все высокополигональные вариации и оставим видимыми только низкополигональные.

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

Вот как выглядит моя низкополигональная модель посоха, состоящая из 11 деталей:

Низкополигональный вариант посоха

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

Edit->Preferences->Interface->Status Bar->Show Scene Statistics

Теперь количество треугольных полигонов можно увидеть в правом нижнем углу:

Создадим высокополигональные вариации для низкополигональных частей.

Это можно сделать несколькими способами (в списке не все из возможных):

  1. Дублировать часть, добавить модификатор Subdividion/Multiresolution, добавить Bevel, Loop Cuts и тд. Применить.
  2. Дублировать часть, добавить модификатор Multiresolution. Перейти в скульптинг, добавить деталей, подогнать форму. Применить
  3. Дублировать часть, перейти в скульптинг, сделать Remesh, добавить деталей, подогнать форму.

Я воспользуюсь третьим способом.

Деталь LikeHeart_Low

Дублирую деталь LikeHeart_Low, назову дублированную деталь LikeHeart_High. Перехожу в скульптинг LikeHeart_High, делаю Remesh на 0.005m. Добавляю деталей, стараясь сохранить оригинальную форму. Для отслеживания того, придерживаюсь ли я формы оригинальной детали LikeHeart_Low, включу x-ray клавишей Alt+Z. В процессе скульптинга, буду делать Remesh на более низкие значения (ниже 0.005m) еще несколько раз, по мере необходимости.

Вот что у меня получилось:

Деталь LikeHeart_High

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

Например, для этой детали с названием Bot_Low, я не буду создавать High версию, т.к. в этом просто нет нужды.

Деталь Bot_Low

Вот такие вариации высокополигонального посоха и низкополигонального у меня получились:

Высоколигональные части посоха видны, нискополигональные скрыты
Нискополигональные части посоха видны, высоколигональные скрыты
Низкополигональные части и высокополигональные части с наложением друг на друга

Шаг 4. Создание карты нормалей


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

Для создания карты нормалей нужно сделать следующее:

  1. Создать дубликат высокоплигональной/низкополигональной модели и оставить его в том же месте, где и исходная модель
  2. Преобразовать копию. Если модель изначально низкополигональная, то сделать ее копию высокополигональной и добавить желаемых деталей, без особых изменений исходной формы. Если изначально это высокополигональная модель, уменьшить количество полигонов без особых изменений исходной формы.
  3. Сделать развертку только для низкополигональной модели
  4. Выделить высокополигональную модель, затем низкополигональную и запечь карту нормалей

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

Перейти сразу к практике

ПРАВИЛА ХОРОШЕЙ КАРТЫ НОРМАЛИ

Хорошо ли наложится карта нормалей зависит не только от высокой схожести высокополигональной модели с низкополигональной, но и от правильности развертки. Карта нормалей точно наложится хорошо, если использовать Smart UV Project, но в этом случае развертка может выглядеть непонятной, что затруднит текстурирование.

Главное правило хорошей развертки - слишком резкие углы, больше 70 градусов, не должны быть частью одного кусочка (UV-острова). В противном случае, могут появиться затемнения или неточности. Допустим, если это куб, нужно разрезать его так, чтобы каждая поверхность была отдельным кусочком.

Итак, основные правила:

1. Важно максимально близко подводить геометрию двух моделей (высокополигональной и низкополигональной) друг к другу, иначе вы получите ошибки проецирования при запекании, и карта нормалей будет отображаться некорректно.
2. .Важно триангулировать модель перед созданием карты нормалей (полигоны должны быть треугольными).

3. Важно создавать правильную развертку и разделять кусочки (UV-острова) друга от друга, если угол между ними больше 70 градусов.

ПРИМЕР, КАК РАБОТАЕТ КАРТА НОРМАЛЕЙ

Создадим два куба, один назовем CubeLow, другой CubeHigh. Скроем CubeLow, сделаем Subdivide для CubeHigh и изменим его форму.

CubeHigh
CubeLow

Теперь сделаем UV развертку CubeLow, перейдем в UV Editing, Tab по CubeLow, выделим все клавишей A, нажмем U и выберем Smart UV Project.

Развертка куба CubeLow

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

Перейдем в Shader Editor (Shift+f3 или разделите экран и выберете Shader Editor для отображения) и добавим кубу новый материал

В окне Shader Editor нажмем Shift+A и введем в поиске Image Texture.

Нажмем на кнопку New и установим следующие параметры для новой текстуры:

Нажимаем ОК. После этого в разделе Color Space выбираем Non-Color

Добавим еще один нод. Shift+A-> Вводим в поиске Normal Map

Соединяем ноды следующим образом:

Теперь в окне Properties, переходим в Render. Render Engine выбираем Cycles.

прокручиваем ниже и находим вкладку Bake. Устанавливаем там следующие параметры:

Extrusion отвечает за то, насколько далеко могут находится различия между Low и High версией модели. Подробнее об этом можно узнать из этого гайда.

Теперь выбираем куб CubeLow и выделяем его Image Texture в Shader Editor.

Включаем отображение обоих кубов. Зажимаем Ctrl, выделяем сначала CubeHigh, потом СubeLow и нажимаем Bake в Properties->Render->Bake

Нажимаем кнопку Bake и ждем

Скроем CubeHigh, нажмем Z->Material Preview/Rendered и смотрим на результат

CubeLow с картой нормалей
Карта нормалей

Можно изменить материал куба для более наглядного результата и сравнить высокополигональный HighCube и низкополигональный LowCube с картой нормалей:

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

Перед тем как это сделать, сделаем Mark Seam для всех деталей и проверим, устраивают ли нас их развертки и их карты нормалей по отдельности.

Скроем все High части, оставив видимым только низполигональный посох

Начнем тестирование с этого сердечка Heart_Low:

Начнем развертку посоха. Подробнее о правилах развертки для карты нормалей выше.

Перейдем в UV Editing и режим редактирования Object Mode(Tab) для сердечка. Можно использовать Smart UV Project для автоматической разрезки кусочков, но я воспользуюсь Mark Seam. Выбираю грани (цифра 2 на клавиатуре для выбора граней) в местах, где я хочу, чтобы сердце было "разрезано", Ctrl+E->Mark Seam.

Выделяем все сердце клавишей A (все так же в режиме Object Mode)->U->Unwrap. Вот такая развертка получилась:

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

Начнем создавать карту нормалей отдельно для этого сердечка с уже готовой разверткой.

1. Перейдем в Shader Editor и создадим новый материал для Heart_Low и добавим следующие ноды:

2. В Image Texture нажмем New и создадим новую текстуру со следующими параметрами (это будет карта нормалей):

После этого установите Color Space в ноде Image Texture на Non-Color.

3. Перейдем во вкладку Properties -> Render и поменяем Render Engine на Cycles

4. Там же, в Properties -> Render, опустимся чуть ниже и найдем вкладку Bake. Установим следующие параметры (jбратите внимание, что Bake Type - Normal):

5.Сделаем видимым Heart_High (высокополигональная версия Heart_Low. Для нее я применила Shade Flat, так как я хочу, чтобы сердце выглядело хрустальным. Для Heart_Low применила Shade Smooth, что всегда нужно применять к низкополигональным версиям). Зажмем Ctrl, выделим Heart_High, затем Heart_Low.При этом, в открытом в нижнем окошке Shader Editor должен быть выделен нод Normal_Map_Test

6. Возвращаемся в Properties -> Render -> Bake и нажимаем кнопку Bake

Запустится процесс создания карты нормалей.

Чтобы оценить результат, скройте Heart_High, нажмите Z->Rendered/Material Preview.

Heart_Low Material Preview
Heart_Low Solid View

Видно, что теперь низкополигональное сердце выглядит как высокополигональное. чтобы оценить внешний вид карты нормалей, можно зайти в UV Editing и выбрать нашу Normal_Map_Test:

Проведите подобное тестирование со всеми деталями, проделав все те же шаги: развертка низкополигональной версии, создание нодов для карты нормалей в текстуре низкополигональной версии, бейкинг.
Если какая то деталь не нуждается в карте нормалей, ее делать не нужно. Но развертку сделать необходимо все равно. Например, мне не понадобилась карта нормалей для этой детали:

Если вас не устраивает карта нормалей для какой то из частей, измените развертку/форму, следуя этим рекомендациям.

После окончания тестирования, перейдем к созданию карты нормалей для всего посоха.

Скройте все высокополигональные версии, оставив видимыми только низкополигональные. Выделите все (A), нажмите Tab:

Перейдите в UV Editing. Нажмите A, чтобы выделить все, U->Unwrap

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

L - выбор части

S - изменение размера

G - перетаскивание

R - поворот

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

Теперь выйдете из режима редактирования. Создайте новый материал (пока что без привязки к какому либо объекту) в Shader Editor, и добавьте ноды так же, как вы делали для единичного элемента. Назовите материал.

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

В нижней панели у вас должен быть открыт недавно созданный материал (у меня это материал ForNormals). А теперь проделайте следующие шаги с каждым обьектом:

  1. Выделите низкополигональную версию, задайте ей созданный материал (у меня это ForNormals).
  2. Зажав Ctrl, выделите высокополигональную версию, затем низкополигональную, выделите нод Image Texture.
  3. Перейдите во вкладку Properties -> Render-> Bake. Нажмите Bake
  4. Для первого бейкинга не убирайте галочку Clear Image. Для второго и последующего ее необходимо убрать.

В палени сбоку можно отобразить карту нормалей из нода Image Texture для проверки результата. У меня пространство разделено следующим образом для удобства:

Вот так выглядит карта нормалей с галочкой Clear Image для первого кусочка:

Для второго с убранной галочкой Clear Image:

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

Небольшие косяки на карте нормалей я исправила с помощью инструмента Smear в Texture Paint. Итоговый результат карты нормалей:

Теперь ее нужно сохранить. Зайдите в Texture Paint, выберете карту нормалей и нажмите Image -> Save As...

Сохраните карту нормалей в любое удобное место.

Шаг 5. Экспорт модели

Сохраните дубликат блендер файла, на всякий случай.

Удалите все лишнее кроме низкополигональных вариаций модели.

Удалите материал для низкополигональных вариаций.

Экспортируйте модель в формате FBX. Можно проверить модель в средстве 3D просмотра Windows

Шаг 6. Текстурирование

Сделайте текстурирование модели в программе Substance Painter. Программа очень простая и если вы не знакомы с ней, посмотрите этот гайд.

To be continend...