Импорт Live2D-моделей

В модах можно использовать кастомные Live2D-модели.

В этой статье будет рассмотрен процесс подготовки и импорта Live2D-модели в игру — о том, как непосредственно создавать Live2D-модели и работать с Live2D SDK, вы можете почитать в соответствующей официальной документации.

Требования

Вы можете скачать готовый проект с необходимыми плагинами.

Введение

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

Вы можете скачать архив с исходниками по этой ссылке.
Ссылка на архив с финальным результатом расположена в конце статьи.

Импорт модели в Unity

Чтобы импортировать модель в Unity-проект, достаточно поместить её исходники внутрь папки Assets (или в любую её подпапку) — Live2D SDK импортирует модель и сгенерирует для неё префаб, а также контроллер анимации.

Распакуйте содержимое архива с исходниками спрайта в папку Assets вашего проекта. После того, как Live2D SDK закончит процесс импорта (он запустится автоматически при открытии окна редактора) — внутри папки с исходниками появится префаб, а также несколько вспомогательных ассетов:

image.png

Для всех .motion3-файлов внутри папки anim также были сгенерированы анимационные файлы, поддерживаемые Unity:

image.png

Откройте файл Kyo.prefab в редакторе — вы увидите импортированную модель:

image.png

Справа в окне Inspector будут отображаться настройки различных компонентов Live2D SDK, включая анимируемые параметры нашей модели (компонент Cubism Parameters Inspector):

image.png

Если модель не отображается после открытия префаба, попробуйте нажать кнопку Reset внутри Cubism Parameters Inspector (или просто измените значение какого-либо параметра). Также возможно, что модель просто не в фокусе камеры - нажмите F, чтобы сфокусировать камеру.

Если же модель отображается некорректно — попробуйте в компоненте Cubism Render Controller во вкладке Sorting выставить параметр Mode в Back To Front Order.

Первое, что нужно сделать — прицепить сгенерированный контроллер анимации к компоненту Animator — просто перетащите его в соответствующие поле:

Сохраните изменения (если у вас отключено автосохранение) и закройте префаб.

Удаление исходников

Очень важно после успешного импорта удалить исходники из проекта. На это есть две причины:

  1. Вы можете случайно положить исходники модели в бандл;
  2. По умолчанию каталог с бандлами не соберётся, если внутри будут неподдерживаемые Unity файлы; 

Удалите все .moc3, .model3.json и .motion3 файлы из проекта после завершения процесса импорта модели. НЕ удаляйте текстуры — они используются в префабе.

Анимации

Откройте любую сцену в редакторе и перетащите на неё префаб импортированной модели:

image.png

Выберите модель в иерархии сцены, затем откройте окно Animator (Window -> Animation -> Animator).

Вы увидите стандартный шаблон контроллера с базовым слоем:

image.png

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

Мы можем сделать анимации вручную — создадим их для рук.

Переименуйте слой Base Layer в Hands (нужно кликнуть на название слоя), нажмите на шестерёнку справа и убедитесь, что параметр Weight у слоя равен единице:

image.png
При создании новых слоёв убедитесь, что значение Weight не равно нулю, иначе анимации на слое никак не будут воздействовать на модель в игре.

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

 Затем создайте на нём новый стейт и назовите его hands1:

image.png

Т.к. это единственный стейт на слое, он будет проигрываться по умолчанию при появлении модели на сцене. Создайте второй стейт под второе положение рук — hands2:

image.png

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

Откройте папку anim в папке с моделью и найдите там две сгенерированные анимации:

Это переходные анимации для различных положений рук. Первая — переход из 1 положения во 2, вторая — из 2 в 1. Перетащите оба этих файла на слой Hands, к созданным ранее стейтам:

image.png

В отличии от созданных вручную стейтов hands1/hands2, этим стейтам автоматически присвоились анимации. Вы можете увидеть их в инспекторе, в параметре Motion, кликнув по стейту:

image.png

Теперь мы можем сделать переходы между 2-мя положениями рук, которые будут проигрываться, когда модель меняет hands1 на hands2 и наоборот.

Это можно сделать двумя способами:

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

Переходы

Реализация переходов при помощи триггеров

Создайте в параметрах аниматора триггеры, названия которых совпадают с названием стейтов основных положений рук (в данном случае — hands1 и hands2):

image.png

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

Переход из hands1 в hands2 активирует триггер hands2, из hands2 в hands1 — триггер hands1. Оба перехода происходят через стейты с анимациями смены положения рук.

Также снимите чекбокс Has Exit Time у переходов из основных стейтов и поставьте Transition Duration 0:

image.png

image.png

 Предупреждение выводится, т.к. у основных стейтов пока что нет анимаций — мы скоро сделаем их.

У переходов на основные стейты поставьте значение Exit Time на 1 и Transition Duration на 0:   

image.png