FurHorizon

MMD-блендшейпы в VRChat: оживляем лицо аватара в танцевальных мирах

31 июля 2026 г., 9 мин чтения

В MMD-мире вы запускаете танец: тело честно повторяет хореографию, а лицо стоит неподвижно, хотя у половины зала мимика работает. Дело не в мире и не в «несовместимой базе» - мир ищет у аватара вполне конкретные блендшейпы и не находит их. Это лечится, причём без пересборки аватара с нуля.

Как MMD-миры анимируют лицо

MMD (MikuMikuDance) - японская программа для танцевальных роликов, из которой VRChat-миры унаследовали и моушены, и лицевую анимацию. Когда вы выбираете трек и занимаете место танцора, мир проигрывает на аватаре готовую анимацию. С костями всё просто - они стандартные humanoid. А вот мимика записана как анимация блендшейпов с японскими именами на меше с именем Body.

Мир ничего не знает о строении вашего аватара. Анимация просто ищет путь `Body` и имена вроде あ, い, まばたき: если совпали - лицо двигается, если нет - не происходит ничего. Так что почти вся MMD-совместимость упирается в правильное имя меша и правильные имена блендшейпов.

Отдельная история - аниматоры. По официальной документации VRCFury, MMD-миры не работают как надо с аватарами на Write Defaults off, отключают Gesture-контроллер, а в некоторых треках - первые два слоя FX. Если ваша мимика или тогглы живут именно там, в танце они поведут себя непредсказуемо. Эту часть берёт на себя компонент VRCFury, о нём ниже.

Чек-лист MMD-совместимости

  • Меш лица называется Body и лежит первым уровнем под корнем аватара.
  • На нём есть блендшейпы с японскими именами из таблиц ниже.
  • Аватар не конфликтует с миром на уровне аниматора - вручную или через VRC Fury | MMD Compatibility.

Таблицы блендшейпов

Добавлять шейпы будем дублированием: у аватара почти наверняка уже есть визевы (viseme_aa и компания) и мигание - нужно лишь сделать их копии под японскими именами. В колонке «донор» - типичные имена исходных шейпов; у вашей базы они могут звучать чуть иначе.

Для начала хватит пяти гласных и моргания - с ними лицо в танце уже двигается. Остальное добавляет выразительности: подмигивания, брови, эмоции.

Рот

Имя в MMDЧитаетсяЧто делаетДонор
ашироко открытый ротviseme_aa
игубы растянуты, рот почти закрытviseme_ih
угубы трубочкойviseme_ou
эполуоткрытый ротviseme_E
оокруглый открытый ротviseme_oh
-маленький «треугольный» приоткрытый ротviseme_th или viseme_oh на полсилы
ωомегасомкнутые «кошачьи» губынейтральная форма губ или viseme_PP
にやりнияриухмылка уголками вверхSmile
ぺろっпэровысунутый языкTongue_Out, если есть

Глаза

Имя в MMDЧитаетсяЧто делаетДонор
まばたきмабатакиморгание обоими глазамиBlink
笑いварайзажмуренные «счастливые» глазаBlink_Happy
ウィンクвинкузакрыт левый глазBlink_L
ウィンク右винку мигизакрыт правый глазBlink_R
ウィンク2-мягкое подмигивание левымhappy-вариант Blink_L
ウィンク2右-мягкое подмигивание правымhappy-вариант Blink_R
なごみнагомиглаза «>_<»сильное зажмуривание
びっくりбиккурираспахнутые глазаEye_Wide / Surprised
じと目дзитомэполуприкрытый скептический взглядEye_Half / прищур

Брови

Имя в MMDЧитаетсяЧто делаетДонор
真面目мадзимэровные серьёзные бровинейтраль / Brow_Serious
困るкомаруброви «домиком»Brow_Worried / Sad
にこりникориприподнятые довольныеBrow_Happy
怒りикарисведённые сердитыеBrow_Angry
уэобе брови вверхBrow_Up
ситаобе брови внизBrow_Down

Полный набор морфов MMD длиннее, но этих трёх таблиц хватает почти для любого танца. Дальше идут редкие вещи вроде отдельных морфов зрачков - миры пользуются ими нечасто.

Дублируем шейпы в Blender

  1. Откройте модель, выделите меш лица и перейдите в Object Data Properties (зелёный треугольник) - там список Shape Keys.
  2. Сбросьте значения всех шейпов в 0, а донору (например, viseme_aa) выставьте 1.0.
  3. В меню под кнопками списка выберите New Shape from Mix - внизу появится новый шейп, повторяющий текущее состояние меша.
  4. Переименуйте его двойным кликом, а имя вставьте копированием из таблицы. Перепечатывать руками не стоит: ウィンク2右 и ウィンク2右 выглядят близнецами, но это разные символы - полная и половинная ширина. Мир ищет точное совпадение.
  5. Верните донору 0 и повторите для каждой строки таблицы.
  6. При экспорте FBX не включайте галку Apply Modifiers - она молча выбрасывает все шейп-кеи из файла.
  7. Подмените FBX в Unity-проекте и проверьте SkinnedMeshRenderer меша Body: в списке BlendShapes должны появиться японские имена.

Если лицо у базы - отдельный меш «Face» или «Head», у мира нет шансов до него дотянуться. Варианты: объединить меши в Blender (Ctrl+J, объединяя В меш Body), либо переименовать лицевой меш в Body, если он лежит прямо под корнем аватара.

Путь без Blender

Если модель трогать не хочется, есть неразрушающий вариант - открытый инструмент Make It MMD: он создаёт копии блендшейпов с MMD-именами прямо при сборке аватара, исходный FBX остаётся нетронутым. Какой шейп в какое имя копировать, задаётся в инспекторе, без экспорта-импорта.

И проверьте описание своей базы: некоторые современные базы уже поставляются с MMD-набором - тогда достаточно убедиться, что меш называется Body.

Компонент VRC Fury | MMD Compatibility

Сами по себе блендшейпы ещё не гарантируют результат: аватар может конфликтовать с миром на уровне аниматора, и вот эту часть проще целиком отдать VRCFury. Компонент добавляется как обычно: Add Component → VRC Fury | MMD Compatibility (в разделе прочих компонентов). По официальной документации он:

  • сохраняет MMD-блендшейпы при использовании Blendshape Optimizer - иначе оптимизатор удалит ваши японские копии как «неиспользуемые», ведь собственные анимации аватара их не трогают;
  • уводит слои VRCFury-фич с позиций, которые MMD-миры отключают (те самые FX 1 и 2);
  • отключает анимации рук на время танца, чтобы жесты не ломали хореографию;
  • придерживает команды Tracking Control от других плагинов до конца танца - такие команды умеют ломать MMD-анимацию;
  • решает известные несовместимости из списка исправлений VRCFury: поведение Write Defaults off и отключение Gesture-контроллера в MMD-мирах.

В расширенных настройках можно указать дополнительные слои аниматора, которые нужно глушить в танце, и глобальный bool-параметр, который компонент выставит в true при обнаружении MMD-мира - на него удобно вешать свою логику.

Пока компонент не добавлен, VRCFury в MMD-поведение аватара не вмешивается - всё перечисленное включается только вместе с ним. Если VRCFury у вас ещё не стоит - вот установка и первые шаги, а как вообще устроены его компоненты - в обзоре компонентов.

Если лицо всё равно не двигается

Проверьте имя меша. Шейпы могут быть идеальными, но лежать на меше «Face» - мир смотрит только на Body.

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

Мимика конфликтует. Если своя лицевая анимация живёт вне отключаемых миром слоёв, она перетягивает блендшейпы у танца. Компонент MMD Compatibility как раз разруливает это.

Шейпы пропали после сборки. Скорее всего, Blendshape Optimizer вычистил их как «неиспользуемые». Лечится тем же компонентом - он не даёт оптимизатору трогать MMD-имена.

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


Дальше остаётся зайти в любимый танцевальный мир и проверить. А одежда, аксессуары и текстуры под популярные базы есть в каталоге FurHorizon.

Читайте также