РуководстваИнструкция8 мин чтения

Авториггинг любой 3D-модели в Unity: Сразу Humanoid и с анимационными клипами

Выберите модель в окне Project и нажмите Rig. Через минуту рядом появится FBX с ригом, настроенный как Humanoid, где каждая анимация — отдельный клип.

Window › AFK AI

AFK AI

Signed in as you@example.comSign out

Model

Hero.fbx

Body typehuman

All animationsRig only

FacingAuto

Adding the animations...

Stop waiting
Project › Assets/Characters
  • Hero.fbx
  • Hero_rigged.fbxHumanoid
  • └Idle_ALoop Time ✓
  • └WalkLoop Time ✓
  • └Jump_Startonce
  • └Sword_Attackonce
  • └…
  • └Hero_riggedAvatarAvatar
Схема по мотивам плагина, не скриншот: окно AFK AI во время риггинга Hero.fbx и окно Project после него — Hero_rigged.fbx настроен как Humanoid, зацикленные клипы отмечены.

Обычно, чтобы персонаж в Unity начал двигаться, приходится идти через Mixamo. Вы экспортируете FBX, загружаете его, расставляете маркеры на подбородке, запястьях, локтях и коленях, скачиваете анимации по одной, затем для каждого файла выставляете Humanoid и включаете Loop Time на каждом клипе. И всё это работает только для гуманоидов.

Пакет AFK AI делает это из окна в редакторе Unity. Выберите модель в окне Project и нажмите Rig. Примерно через минуту рядом с Hero.fbx появится Hero_rigged.fbx, уже настроенный как Humanoid, где каждая анимация — отдельный клип, а ходьба и idle зациклены.

Mixamo или AFK AI в Unity

Mixamo бесплатен, и в нём большая библиотека анимаций для гуманоидов. AFK AI избавляет от хождения туда и обратно, создаёт риг ещё и для животных и предметов и приносит гуманоиду до 593 анимаций в одном файле. Бесплатный аккаунт получает бесплатные, а тариф открывает остальные.

MixamoAFK AI в Unity
ГдеСайт: загрузка, риг, скачиваниеОкно в редакторе Unity
Что вы делаетеРасставляете маркеры на подбородке, запястьях, локтях, коленях и в пахуВыбираете тип модели и нажимаете Rig
МоделиТолько гуманоидыГуманоиды и ещё 14 типов моделей
АнимацииСкачиваются по однойВсе анимации для типа модели в одном FBX
Настройка в UnityВручную: Humanoid, затем Loop Time на каждом клипеУже сделана: Humanoid, по клипу на анимацию, циклы включены
ВходАккаунт AdobeАккаунт afk.ai, через Google

Установка пакета

  1. Скачайте пакет со страницы плагина для Unity: это один файл .tgz. Положите его вне проекта, туда, где он сможет остаться: Unity читает пакет из этого файла.
  2. В Unity откройте Window > Package Manager, нажмите + в левом верхнем углу и выберите Add package from tarball....
  3. Укажите скачанный файл .tgz. Не распаковывайте его.
  4. Откройте Window > AFK AI. Пристыкуйте окно, где удобно.

Пакет работает в Unity 2021.3 и новее, включая Unity 6, одинаково с Built-in, URP и HDRP: плагин затрагивает только импорт модели. Весь его код работает только в редакторе, поэтому в вашу игру из него ничего не попадает.

Вход

  1. В окне AFK AI нажмите Sign in. В браузере откроется страница входа afk.ai; войдите через Google.
  2. Браузер сообщит, что вход выполнен. Закройте вкладку и вернитесь в Unity: окно покажет ваш email и сколько ригов осталось в этом месяце.

Если браузер не может вернуться в Unity (иногда это блокирует защитное ПО), afk.ai покажет вместо этого код входа. Откройте I have a sign-in code в окне AFK AI, вставьте его и нажмите Use code.

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

Риг модели

  1. В окне Project выберите модель: файл .fbx, .glb или .gltf размером до 50 МБ. Подойдёт и модель, размещённая в сцене: плагин отправит файл, из которого она взята. Unity показывает файлы .glb как модели, только если установлен импортёр glTF, но плагин отправит их в любом случае.
  2. В окне AFK AI задайте Body type: Human для людей и всего, что ходит на двух ногах, или тип нужного животного либо существа.
  3. Оставьте All animations или выберите Rig only, если нужен только скелет. Facing оставьте на Auto.
  4. Нажмите Rig. Окно показывает ход работы: загрузка, ожидание, риггинг, добавление анимаций, скачивание. Можно продолжать работать, а если закрыть окно, процесс не остановится.

Когда всё готово, Hero_rigged.fbx сохраняется рядом с Hero.fbx, выделенный и подсвеченный в окне Project. Исходный файл не затрагивается.

Что получает Unity

  • Humanoid: человек импортируется как риг Humanoid с собственным Avatar (Hero_riggedAvatar), поэтому обменивается анимациями с любым другим Humanoid-персонажем в обе стороны. Unity сам сопоставляет кости со слотами Humanoid, включая пальцы.
  • Generic: все остальные типы моделей, от лисы до дракона, импортируются как риг Generic.
  • Клипы: каждая анимация — отдельный клип с тем же названием, что и на afk.ai: Idle_A, Walk, Jog, Sprint, Jump_Start, Sword_Attack и так далее.
  • Циклы: у клипов, чьи названия говорят о повторении (idle, walk, run, fly, swim и т. п.), включён Loop Time. Разовые, вроде Jump_Start, Sword_Attack или Death_A, проигрываются один раз.
  • Root motion: анимации с названиями на _RM (Roll_RM, Dodge_left_RM) сами двигают персонажа вперёд; остальные проигрываются на месте.

Если Unity не может сопоставить скелет со своими костями Humanoid, плагин настраивает модель как Generic и объясняет почему. Анимации всё равно проигрываются, просто их нельзя использовать на других Humanoid-персонажах.

Аниме-персонаж в T-позе: суставы, расставленные afk.ai, показаны точками, вплоть до пальцев
anime-girl.glb · skeleton
root  └ pelvis    └ spine_01      └ spine_02        └ spine_03          └ neck_01            └ head          └ clavicle_l            └ upperarm_l              └ lowerarm_l                └ hand_l                  └ thumb_01_l  thumb_02_l  thumb_03_l                  └ index_01_l  index_02_l  index_03_l                  └ middle_01_l  middle_02_l  middle_03_l                  └ ring_01_l  ring_02_l  ring_03_l                  └ pinky_01_l  pinky_02_l  pinky_03_l          └ clavicle_r ... (справа так же)    └ thigh_l      └ calf_l        └ foot_l          └ ball_l    └ thigh_r ... (справа так же)
Скелет гуманоида, который получает каждый риг afk.ai: 66 костей, по три сустава в каждом пальце, включая большой, с названиями как у манекена Unreal Engine.

Настройка Animator

Blend tree, который по мере разгона персонажа переходит от idle к ходьбе, бегу трусцой и спринту, и удар мечом по кнопке:

  1. Перетащите Hero_rigged.fbx в сцену. У него уже есть Animator с его Avatar. Добавьте к нему Character Controller и выключите Apply Root Motion в Animator (двигать персонажа будет скрипт).
  2. В окне Project выберите Create > Animator Controller (в Unity 6 — Create > Animation > Animator Controller), назовите его Hero и перетащите в поле Controller компонента Animator.
  3. Откройте его (Window > Animation > Animator). В Parameters добавьте Float с именем Speed и Trigger с именем Attack.
  4. Щёлкните граф правой кнопкой и выберите Create State > From New Blend Tree. Дважды щёлкните по нему, задайте параметр Speed и добавьте четыре motion: Idle_A, Walk, Jog и Sprint из Hero_rigged.fbx (нажмите стрелку у файла в окне Project, чтобы увидеть клипы). Выключите Automate Thresholds и задайте пороги, равные скоростям вашего персонажа, например 0, 1.5, 3.5 и 6.
  5. Вернувшись в Base Layer, перетащите туда клип Sword_Attack. Создайте переход к нему от blend tree с условием Attack и выключенным Has Exit Time, чтобы удар начинался сразу, и переход обратно к blend tree с включённым Has Exit Time.
  6. Добавьте персонажу этот скрипт:
using UnityEngine;

// Moves the character and tells its Animator how fast it's going.
[RequireComponent(typeof(Animator), typeof(CharacterController))]
public class HeroAnimation : MonoBehaviour
{
    static readonly int Speed = Animator.StringToHash("Speed");
    static readonly int Attack = Animator.StringToHash("Attack");

    [SerializeField] float runSpeed = 6f;
    Animator animator;
    CharacterController controller;

    void Awake()
    {
        animator = GetComponent<Animator>();
        controller = GetComponent<CharacterController>();
    }

    void Update()
    {
        // The Input Manager's axes. With only the Input System package, read your Move action here instead.
        var input = new Vector3(Input.GetAxis("Horizontal"), 0f, Input.GetAxis("Vertical"));
        var move = Vector3.ClampMagnitude(input, 1f) * runSpeed;
        controller.SimpleMove(move);
        if (move.sqrMagnitude > 0.01f) transform.rotation = Quaternion.LookRotation(move);

        animator.SetFloat(Speed, move.magnitude, 0.1f, Time.deltaTime); // eased, so the blend doesn't snap
        if (Input.GetButtonDown("Fire1")) animator.SetTrigger(Attack);
    }
}

Нажмите Play: от стика или стрелок персонаж стоит, идёт, бежит трусцой и спринтует, а по щелчку взмахивает мечом.

EntryLocomotionBlend Tree · Idle_A, Walk, Jog, Sprint↓ Attack↑ Has Exit TimeSword_Attack
Схема Animator Controller. Blend tree Locomotion переходит от Idle_A к Sprint по Speed; триггер Attack запускает Sword_Attack, после которого персонаж возвращается обратно.

Общие анимации с другими персонажами

Раз человек с ригом — Humanoid, ретаргетинг Unity делает за вас. Перетащите на него любой Humanoid-клип, из Asset Store или своей библиотеки, — и он проиграется. И наоборот, его клипы проигрываются на любом вашем Humanoid-персонаже: перетащите клип Sprint из Hero_rigged.fbx в Animator Controller другого персонажа — и тот побежит.

Животные и существа — Generic, поэтому их клипы проигрываются на их собственном скелете. Зато у всех моделей, которым AFK AI создал риг с одним и тем же типом, одинаковые названия костей и анимаций, так что Animator Controller одной лисы управляет любой другой лисой с ригом.

Животные, существа и предметы

Перед нажатием Rig выберите в окне тип модели: fox для собак, кошек и волков, horse для всех копытных, bird, dragon, kaiju для динозавров, spider, insect, snake, fish, kangaroo, frog, turtle, ghost или object для предметов, которые подпрыгивают, вращаются и покачиваются. Каждый получает скелет, созданный под его тело, и анимации, сделанные под этот скелет, и импортируется как риг Generic с такими же клипами и настроенными циклами. В руководстве по животным перечислено, что входит в каждый тип.

  • Дракон
  • Четвероногое
  • Копытное
  • Динозавр
  • Паук
  • Рыба
Шесть других типов тела с ригом на afk.ai/rig, каждый со своими анимациями.

Что считается ригом

Каждое нажатие Rig, которое принял AFK AI, расходует один риг из лимита этого месяца — так же, как риггинг на afk.ai/rig или в любом другом плагине AFK AI. Неудачный риг не засчитывается. Stop waiting прекращает ожидание в Unity, но риг продолжается и всё равно засчитывается. Если соединение оборвётся, Try again подхватит тот же риг, и дважды он не засчитается никогда. Когда риги закончатся, окно покажет See plans — кнопка открывает тарифы afk.ai.

Если что-то пошло не так

Браузер не может открыть страницу после входа
Используйте I have a sign-in code.
Появляется «Couldn't reach AFK AI»
Проверьте подключение и нажмите Try again. Плагин подхватит тот же риг.
Модель слишком большая
AFK AI принимает модели до 50 МБ. Экспортируйте более лёгкую — с меньшим числом полигонов или текстурами поменьше.
Появляется «keeps its data in separate files»
Это .gltf, рядом с которым лежит .bin. Экспортируйте вместо него .glb.
Клип зациклен, хотя не должен
Выделите Hero_rigged.fbx, откройте вкладку Animation в Inspector, выберите клип, измените Loop Time и нажмите Apply.
По нажатию Rig ничего не происходит
Сначала выберите .fbx, .glb или .gltf в окне Project. Окно подскажет, чего не хватает.

Вопросы

Нужен ли ещё Mixamo?

Нет. Плагин создаёт риг модели и добавляет анимации за один шаг, сразу настроив её как Humanoid. Анимации Mixamo на ней по-прежнему можно использовать: скачайте их для любого Humanoid-персонажа, выставьте Humanoid — и они проиграются на вашем.

Попадает ли пакет AFK AI в сборку игры?

Нет. Весь его код лежит в assembly, которая подключается только в редакторе. В проекте остаётся FBX с ригом — обычный ассет модели.

Работает ли он в Unity 6?

Да. Он работает в Unity 2021.3 и во всех последующих версиях, включая Unity 6.

Можно ли создать риг модели .glb или .gltf в Unity?

Да. Плагин отправляет файл как есть, даже если в Unity нет импортёра glTF, чтобы показать его как модель. Возвращается FBX, который Unity импортирует без каких-либо дополнений. .gltf должен содержать все данные внутри себя; иначе экспортируйте .glb.

Подойдёт ли риг для аватара VRChat?

Да. Человек с ригом — Humanoid, со всеми пальцами, а это именно то, что нужно VRChat. Остальная настройка описана в руководстве по VRChat.

Что, если персонаж смотрит не в ту сторону?

Создайте риг снова, указав в Facing угол, на который он повёрнут (90°, 180° или 270°). Для большинства моделей Auto определяет его сам.

Можно ли создавать риги из скрипта, для целой папки?

Плагин создаёт риг одной модели за раз. Для пакетной обработки и пайплайнов сборки используйте API риггинга — из командной строки или своего кода.

Есть ли плагин для Unreal, Godot или Blender?

Да: у Unreal Engine, Godot и Blender есть собственные руководства, а обзор всех плагинов AFK AI охватывает все девять программ.

Сделайте риг и анимируйте свою модель

ИИ сделает риг прямо в браузере, и на модели заиграют сотни анимаций. Скачайте один GLB для любого движка.

Сделать риг модели

Другие руководства