Как запилить свой аватар в VRChat из MMD

Уже есть куча туториалов, но все они оформлены как видео... что не всегда удобно. Плюс они часто усложнены ненужными вещами. Так что я тут коротенько и строго по существу опишу, что делать. Практически никого описания, что, как и почему, исключительно руководство к действию. Возможно, где-то я сам ошибаюсь, но тем не менее - для большинства этот туториал окажется вполне рабочим... ну а остальным придется разбираться самим :)


Шаг 1. Подготовка.


Во-первых, если вы играете через Steam, использовать свои аватары вы вроде бы не сможете, нужен именно аккаунт VRChat. Зарегистрироваться и войти с ним вы можете в самой игре, тыкнув "Logout" в меню "System", или же перейдя по этой ссылке: https://vrchat.net/register


Далее нужно скачать и установить Blender и Unity:

- Blender (не ниже 2.79): https://www.blender.org/download/

- Unity (подойдет в минимальной комплектации, не ниже 5.6.3p1): https://store.unity.com/ru/download?ref=personal


Для Blender'а есть два оч-чень полезных плагина:

- mmd_tools: https://github.com/sugiany/blender_mmd_tools/archive/master....

- CATS: https://github.com/michaeldegroot/cats-blender-plugin/archiv...


Из первого архива нужна только папка mmd_tools, второй архив нужно распаковать целиком. Обе папки копируем в C:\Program Files\Blender Foundation\Blender\2.79\scripts\addons (возможно, у вас будет другая версия Blender'а, но думаю найдете). Запускаем Blender от имени администратора (важно!), тыкаем File -> User Preferences -> Add-ons, ищем "Object: mmd_tools" и "3D View: Cats Blender Plugin" и проставляем галочки у обоих, после чего жмем кнопку "Save User Settings".


Подготовка Blender на этом закончена, открываем Unity. Входите, если у вас уже есть аккаунт, или тыкайте "create one", если еще нет. После того, как войдете, жмите "New" и создавайте новый 3D-проект.


К Unity тоже нужен один плагин:

- VRChat SDK: https://vrchat.net/download/sdk


Просто запустите его после скачивания и тыкните "Import" в появившемся окошке Unity. Через какое-то время оно установится и в меню появится новый пункт: "VRChat SDK". Зайдите в него, нажмите "Settings" и в появившемся окошке введите свои логин и пароль. После входа нужно нажать "Edit" и выбрать exe-файл VRChat'а (для Steam-версии это обычно будет C:\Program Files (x86)\Steam\steamapps\common\VRChat\VRChat.exe). После совершения всех манипуляций окошко можно закрыть.


Шаг 2. Обработка модели.


Для начала нужно найти модельку. Пишете в гугле "download mmd model" - и тысячи их! Только осторожнее с авторскими правами. Для примера возьмем эту замечательную модель авторства HarukaSakurai: https://harukasakurai.deviantart.com/art/MMD-PDF-2nd-Border-... Как будет видно дальше, эта моделька не идеальна и имеет свои косяки при переносе, но это даже лучше - можно показать нестандартные ситуации.


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


В Blender удалим стартовый белый куб клавишей Delete на клавиатуре, после чего найдем слева внизу вкладку "CATS" и тыкнем "Import Model":

Как запилить свой аватар в VRChat из MMD Vrchat, Blender, Unity, MMD, Mikumikudance, Длиннопост, Туториал

Слева внизу во вкладке "Import Model file (.pmd, .pmx)" в поле "Scale" укажите значение 0.08 и найдите .pmx файл модели. После того, как он откроется, нажмите кнопку "Fix Model" слева, разверните пункт "Translation" и протыкайте в нем все четыре кнопки по очереди.


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


Следующее, что нам нужно сделать, это упростить модель. Если развернуть окно Blender'а на весь экран, то в самом верху будет строчка с количеством точек, вершин, треугольников и т. п. Нам нужно, чтобы количество треугольников (Tris) было меньше 20 000 - это ограничение VRChat'а.

Как запилить свой аватар в VRChat из MMD Vrchat, Blender, Unity, MMD, Mikumikudance, Длиннопост, Туториал

К счастью, у этой модельки их уже довольно мало. Однако встречаются модели с количеством треугольников под 100 000 и выше - и их довольно сложно упростить.


Есть два способа упрощения моделей: автоматический и вручную. В автоматическом вы просто разворачиваете пункт "Decimation" и нажимаете кнопку "Quick Decimation". Но для сложных моделей этот способ может сильно исказить фигуру, поэтому я расскажу про более сложный ручной.


Для упрощения модели вручную нажмите кнопку "Separate by Materials". Это разобьет цельную модель на несколько более мелких объектов: волосы, глаза, одежда и т. п. Справа вверху, в дереве объектов, раскройте пункт "Armature" и выберите любой из объектов с иконкой треугольника (например, "Material 0"). Затем нажмите на такую же иконку треугольника чуть ниже:

Как запилить свой аватар в VRChat из MMD Vrchat, Blender, Unity, MMD, Mikumikudance, Длиннопост, Туториал

Дело в том, что крайне нежелательно упрощать те части модели, которые участвуют в анимациях. Если в поле "Shape Keys" у вас написано только "Basis", значит эта часть в анимациях не участвует, и мы ее можем смело упрощать.


Для упрощения перейдите в пункт с иконкой гаечного ключа, нажмите "Add Modifier" и выберите "Decimate". Значение "Ratio" показывает, насколько сильно будет упрощена модель, по шкале от нуля (полностью упрощена) до 1 (оставить все как есть). Кроме того, есть режим "Planar", который автоматически упрощает схожие треугольники. Пробуйте разные способы, чтобы и треугольников стало поменьше, и внешность не сильно запоролась.


Для данной модели я решил упростить волосы (которые прятались под именем "Material 14"), после чего количество треугольников снизилось до 19 925.

Как запилить свой аватар в VRChat из MMD Vrchat, Blender, Unity, MMD, Mikumikudance, Длиннопост, Туториал

В конце, после ручного упрощения модели, нажмите кнопку "Join Meshes", чтобы объединить обратно все части.


Итак, модель упростили. Следующее, что нужно сделать, это настроить лицевую анимацию. Раскрываем пункт "Eye Tracking" и проверяем, правильно ли стоят значения. Конкретно у данной модели есть косяк - не указаны глаза, а вместо них определились волосы ("Ahoge"). В таком случае отключаем движение глаз галочкой "Disable Eye Movement". У "Blink Left" и "Blink Right" должно стоять что-то типа "Wink" - тут все правильно. Жмем "Create Eye Tracking".


Для анимации рта раскрываем "Visemes" и проверяем: должны стоять "Ah", "Your", "There". Жмем "Create Visemes".

Как запилить свой аватар в VRChat из MMD Vrchat, Blender, Unity, MMD, Mikumikudance, Длиннопост, Туториал

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


Последним, что нужно сделать, это объединить все текстуры в одну. Открываем пункт "Optimization", ставим "Margin" чуть побольше (где-то от 0.02 до 0.05 - по вкусу) и жмем "Create Atlas". В результате в папке, куда вы сохранили файл Blender'а, будет создана скомбинированная текстура модели. Если текстуры слишком сильно запортачились, удалите этот файл, в Blender'е нажмите Ctrl-Z на клавиатуре и попробуйте увеличить "Texture Size" и включить "Pack Islands".

Как запилить свой аватар в VRChat из MMD Vrchat, Blender, Unity, MMD, Mikumikudance, Длиннопост, Туториал

Последнее, что нужно сделать в Blender'е, это экспортировать модель. В самом верху жмем кнопку "Export Model" и слегка настраиваем экспорт в панельке "Export FBX". С зажатой клавишей Shift убираем "Camera" и "Lamp" на вкладке "Main", на вкладках "Geometries", "Armatures" и "Animation" снимаем все галочки. Должно получиться как-то так:

Как запилить свой аватар в VRChat из MMD Vrchat, Blender, Unity, MMD, Mikumikudance, Длиннопост, Туториал

Сохраняем файл куда-нибудь и переходим к Unity.


Шаг 3. Настройка модели в Unity.


В самом начале ваше окошко Unity должно выглядеть как-то так:

Как запилить свой аватар в VRChat из MMD Vrchat, Blender, Unity, MMD, Mikumikudance, Длиннопост, Туториал

В правом верхнем углу откроем вкладку "Inspector", а внизу создадим папку с названием аватара и перетащим туда из проводника файл .fbx и текстуру. При этом может быть автоматически создана папка "Materials".

Как запилить свой аватар в VRChat из MMD Vrchat, Blender, Unity, MMD, Mikumikudance, Длиннопост, Туториал

Справа от персонажа есть иконка со стрелкой. Нажмите ее и в развернувшемся поле выберите первое "Body" (выглядящее точно так же, как основная иконка). Справа во вкладке "Inspector" будут показаны использованные в модели материалы. В идеале должен быть всего один материал, который мы развернем, поставим "Rendering Mode" в "Opaque" и перетащим мышкой текстуру на квадратик рядом с полем "Albedo".


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

Как запилить свой аватар в VRChat из MMD Vrchat, Blender, Unity, MMD, Mikumikudance, Длиннопост, Туториал

Далее нам нужно настроить скелет. Жмем по основному файлу модели, справа в инспекторе ставим "Animation Type" в "Humanoid", тыкаем "Apply" и "Configure":

Как запилить свой аватар в VRChat из MMD Vrchat, Blender, Unity, MMD, Mikumikudance, Длиннопост, Туториал
Как запилить свой аватар в VRChat из MMD Vrchat, Blender, Unity, MMD, Mikumikudance, Длиннопост, Туториал

Здесь нужно проверить, соответствует ли каждая кость из модели кости скелета Unity. Иногда они могут неправильно определиться - например, в разделе "Head" косичка определилась как правый глаз. Но у нашей модели нет отдельных глаз, так что щелкаем по кружочку справа и выбираем "None".


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


По окончанию редактирования скелета жмем кнопки "Apply" и "Done" внизу, после чего перетаскиваем мышкой модель в дерево слева. Моделька покажется где-то вдалеке, можно приблизить ее колесиком мышки.


Отрегулируем высоту аватара. Правой кнопкой мышки тыкнем по пустому месту в дереве слева, выберем 3D Object -> Cube, передвинем этот кубик куда-нибудь рядом и укажем у него в свойствах: "Position Y" = 0.75, "Scale Y" = 1.5. Итого кубик полтора метра высотой. Как видно, наш аватар чуть выше - давайте для примера чуть укоротим его. Для этого выберите его и во всех трех полях "Scale" пропишите 0.9. Куб после этого можно удалить.

Как запилить свой аватар в VRChat из MMD Vrchat, Blender, Unity, MMD, Mikumikudance, Длиннопост, Туториал

Далее, нам нужно добавить для аватара специальный компонент. Выделите аватар, нажмите кнопку "Add Component" и в окошке поиска введите "Avatar Descriptor". Компонент добавится.


В настройках компонента нужно указать пол ("Default Animation Set" - у нас будет "Female") и позицию камеры ("View Position"). На последнее указывает небольшой серый шарик, обычно появляющийся чуть выше головы. Советую установить его примерно на уровне носа, изменяя координаты Y и Z и проверяя.

Как запилить свой аватар в VRChat из MMD Vrchat, Blender, Unity, MMD, Mikumikudance, Длиннопост, Туториал

В поле "Lip Syns" выбираем "Viseme Blend Shape" и проставляем соответствующие значения в каждое из появившихся полей.


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


Шаг 4. Загрузка.


Тыкаем в меню VRChat SDK -> Show Build Control Panel, в появившемся окошке жмем "Build & Publish" и ждем. Через какое-то время нам выведется форма "New Avatar", в которой нужно проставить название и описание, согласиться с правилами VRChat'а и залить аватар.

Как запилить свой аватар в VRChat из MMD Vrchat, Blender, Unity, MMD, Mikumikudance, Длиннопост, Туториал

По завершении довольно долгой операции ваш аватар сразу же будет доступен в VRChat. Well done, now you know da way!

Как запилить свой аватар в VRChat из MMD Vrchat, Blender, Unity, MMD, Mikumikudance, Длиннопост, Туториал