41

Как запилить свой аватар в 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":

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


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


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

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


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


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

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


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


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

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


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


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

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


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

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

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


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


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

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

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


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

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

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


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


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


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

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


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

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


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


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


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

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

1
Автор поста оценил этот комментарий
А можно пропросить рассказать как добавлять кастомные анимации? Я видел как кто-то затемняет небо и появляется вторая "луна", видел как дышат огнём, как достают пистолеты и огнемёты и всё это со звуковыми и визуальными эффектами. Сможете об этом рассказать? Раз уж начал делать, то нужно сделать идеальный для себя аватар)
раскрыть ветку (1)
4
Автор поста оценил этот комментарий

Для этого нужно установить свой набор анимаций и настроить их (благо не все, а только нужные вам). Боюсь, внятно объяснить эту тему в одном комментарии уже не смогу, но могу накидать видеогайдов:

https://www.youtube.com/watch?v=OsfdJVOVI70 - самый простой и короткий гайд, как поменять анимации персонажа в VRChat

https://www.mixamo.com/#/?page=1&type=Motion%2CMotionPack - откуда можно скачать базовые анимации

В этом гайде берут уже готовую анимацию. Создать анимацию самому можно следуя этому гайду:

https://www.youtube.com/watch?v=MwbpaR3AIrI - все самое простое объясняется до 6:25, дальше про Animator - можно не смотреть.

Могу добавить к нему, что анимировать можно не только поворот и перемещение, но и отображение объектов (самая верхняя галочка в инспекторе, слева от названия объекта).

Мини-гайд о том, как добавить звук: https://www.youtube.com/watch?v=m4OCpPjzJ-0

Конкретно по всяким анимированным эффектам в VRChat есть классные видео на английском от одного чувака: https://www.youtube.com/playlist?list=PLa2E8acX1LgpPgsmv2kmr...

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

показать ответы
3
Автор поста оценил этот комментарий

Коммент для минусов 2

3
Автор поста оценил этот комментарий

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

не шарю в этом,просто интересно будет попробовать)

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Известные мне ограничения:

- 20 000 треугольников в модельке (рекомендовано не более 10 тысяч);

- высота аватара должна быть не более 5 метров;

- возрастной рейтинг PG-13 (без обнаженки и прочего; можно использовать более высокий возрастной рейтинг, но только в закрытых мирах);

- использование только определенных компонентов Unity: https://docs.vrchat.com/docs/whitelisted-avatar-components (извините, насчет Swing Bone выше я нечаянно наврал, доступен только Dynamic Bone);

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

показать ответы
3
Автор поста оценил этот комментарий

Коммент для минусов 1

показать ответы
2
Автор поста оценил этот комментарий

Я видел модельки, которые выше 5 метров, как можно провернуть обход лимита модельки если знаете?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

При помощи шейдера, скорее всего. Он несложный, гуглите "Unity scaling shader".

1
Автор поста оценил этот комментарий

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


Стоит ли пользоваться магазинов Unity ?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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


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


Обычно у таких элементов в модели есть кости, которые и используются при анимации. Проблема только в том, что они могут быть разрозненны и присоединены к костям тела. Желательно (но не обязательно) предварительно создать кость, которая будет служить им общим основанием. Это можно сделать при помощи инструмента "Bone Merging" в "CATS / Optimization" в Blender.


Далее нужно купить и установить компонент в Unity, один из двух на выбор:

Dynamic Bone за 20$ - https://assetstore.unity.com/packages/tools/animation/dynami...

Swing Bone за 2$ - https://assetstore.unity.com/packages/tools/animation/swing-...

Лично мне больше нравится первый.


Для Dynamic Bone: выбираете ваш аватар, тыкаете "Add Component", находите "Dynamic Bone" и настраиваете его. В качестве "Root" указываете кость-основание для подвижного элемента (Root_чего-то-там, созданный в Blender, или просто "Head"), остальное - по вкусу. Я обычно ставлю Damping 0.5, Elasticity и Stiffness в 0.1, Inert в 0.7-0.8.


Для Swing Bone: выбираете в дереве объектов кость-основание и добавляете компонент "Swing Bone" к ней. Устанавливаете Drag в 5, Angel Drag в 10.


Для проверки, как оно колышется, тыкните кнопку "Play" вверху по центру, перейдите обратно во вкладку "Scene" и подвигайте модель.


Мультяшные шейдеры


Скачиваете отсюда бесплатный набор шейдеров в формате .unitypackage и импортируете их в проект (достаточно просто открыть проект в Unity, а затем запустить скачанный файл и нажать "Import"): https://github.com/cubedparadox/Cubeds-Unity-Shaders/release...


Внизу, в папке проекта, найдите и разверните модель персонажа. Выберите первый "Body" и обратите внимание на используемые материалы. По умолчанию у них стоит "Shader: Standart". Нужно вместо "Standart" указать "Flat Lit Toon". Текстура должна автоматом примениться к этому шейдеру, так что достаточно будет настроить по вкусу параметры Shadow и Outline.


Кстати, в этом же пакете шейдеров есть "Flat Lit Toon Rainbow" и "Flat Lit Toon Distance Fade" - с их помощью делают переливающиеся разными цветами и исчезающие аватары. Гифки можно посмотреть тут: https://github.com/cubedparadox/Cubeds-Unity-Shaders

показать ответы
0
Автор поста оценил этот комментарий

@kaddyd Знаю, что уже много времени прошло, но всё получается кроме одной единственной вещи. При переносе в юнити волосы становятся словно прозрачными. В блендере на uv карте кучей друг на друга наложены вершины, галочка "отображать другие обьекты использующие это же изображение" включена и в самом блендере модель нормально отображается. Что можно с этим сделать? т-т Помоги пожалуйста

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Извиняюсь, но я просто не знаю, не 3d-дизайнер. Могу только посоветовать взять другую модель

0
Автор поста оценил этот комментарий

не подскажешь как ogf модельки из сталкера перенести на юнити?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Используя плагин Blender X-Ray, можно их импортировать. Дальше - все то же самое должно быть.

http://stalkerin.gameru.net/wiki/index.php?title=Blender_X-R...

0
Автор поста оценил этот комментарий

как это убрать???????

http://pr nt scr com/kh761r

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Никак. Только подождать. Видимо, разработчики ввели некую премодерацию аккаунтов. Когда аккаунт проверят, то напишут на почту, и можно будет заливать свои модельки.

показать ответы
1
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Честно - не знаю, когда писал туториал, такой фигни не было.

2
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Пиксельность появляется по большей части из-за объединения материалов и текстур (Optimization -> Create Atlas) - на этом шаге текстуры сильно сжимаются, качество теряется. Можно пропустить этот шаг и использовать оригинальные текстуры из модели (их можно найти в папке с самой моделью), но тогда вам скорее всего придется вручную раскидывать их по материалам в Unity, сопоставляя с материалами в Blender. Но приготовьтесь к тому, что если текстуры слишком большие, в игре ваша моделька будет грузиться довольно долго.

2
Автор поста оценил этот комментарий
А вы, случайно, не занимаетесь созданием аватаров из разных частей mmd моделей? Просто я пытаюсь собрать кое-что хорошее, но столкнулся с проблемой - не получается привязать объект одной модели к костям другой :с
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

1
Автор поста оценил этот комментарий

Загрузил аватар, написали, что всё ок и можете включать игру, но его нет. В чём может быть проблема? Загружал точно в свой профиль.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Возможно, какой-то глюк случился. Попробуйте выйти-зайти в VRChat SDK в Unity и загрузить снова. И то же самое с аккаунтом в игре - log out и снова вход.

Кстати, самое дикое, что VRChat позволяет заходить одновременно несколько раз под одним аккаунтом.

3
DELETED
Автор поста оценил этот комментарий
Second Life

загуглил... выглядит как дешёвая 3d порно игра :D

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Это зависит от степени кривизны рук игроков ;) Там вообще весь контент создают сами пользователи.

9
DELETED
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

В этом плане Second Life гораздо удобнее, хотя управление там еще заморочнее.

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества