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

Авториггинг персонажа в Unreal Engine 5: От статического меша к анимированному скелетному

Щёлкните меш правой кнопкой, выберите Rig with AFK AI, и через минуту в той же папке появится скелетный меш со скелетом, physics asset и анимациями.

Content Browser › Hero

Hero · Static Mesh

AFK AI

Rig with AFK AI

Edit… · Duplicate · Rename …

Content Browser › /Game/Characters
  • HeroStatic Mesh
  • Hero_riggedSkeletal Mesh
  • Hero_rigged_SkeletonSkeleton
  • Hero_rigged_PhysicsAssetPhysics Asset
  • …_Idle_AAnimation Sequence
  • …_WalkAnimation Sequence
  • …_JogAnimation Sequence
  • …
Схема по мотивам плагина, не скриншот: пункт Rig with AFK AI в контекстном меню меша, а также скелетный меш, скелет, physics asset и анимации, которые он добавляет рядом с оригиналом.

Unreal Engine прекрасно анимирует персонажей, но риг за вас не создаст. У статического меша из программы для скульптинга или пака с маркетплейса нет ни скелета, ни весов скиннинга, поэтому обычно приходится идти в обход: экспортировать его, создать риг в Blender или Mixamo, импортировать обратно как скелетный меш, а потом искать подходящие анимации.

Плагин AFK AI избавляет от этого обхода. Щёлкните меш правой кнопкой в Content Browser и выберите Rig with AFK AI. Примерно через минуту в той же папке появится скелетный меш Hero_rigged со скелетом, physics asset и анимациями, готовый для Animation Blueprint. Компилировать C++ не нужно, поэтому плагин работает и в проектах только на Blueprint.

Что понадобится

Unreal Engine
5.1 или новее, на Windows, Mac или Linux. Проекты только на Blueprint подходят.
Ваш меш
Статический или скелетный меш, импортированный из файла .fbx, .glb или .gltf размером до 50 МБ. AFK AI получает именно этот исходный файл.
Аккаунт afk.ai
Бесплатный, вход через Google. Каждый риг расходует один риг из месячного лимита аккаунта — так же, как на afk.ai/rig.
Интернет
Риггинг выполняется на серверах afk.ai.

Установка плагина

  1. Скачайте плагин со страницы плагина для Unreal Engine и распакуйте его. Получится папка AFKAI.
  2. Положите её в папку Plugins вашего проекта, рядом с файлом .uproject: MyGame/Plugins/AFKAI/AFKAI.uplugin. Если папки Plugins нет, создайте её.
  3. Откройте проект или перезапустите его. Плагин включит два плагина, которые поставляются с Unreal: Python Editor Script Plugin и Editor Scripting Utilities. Если Unreal попросит перезапуск, согласитесь.

В строке меню редактора появится меню AFK AI. Чтобы плагин был во всех проектах, положите папку в Engine/Plugins/Marketplace/AFKAI в вашей установке Unreal и включайте его в каждом проекте через Edit > Plugins.

Вход и риг

  1. Выберите AFK AI > Sign in.... В браузере откроется afk.ai; войдите через Google и вернитесь в Unreal. Теперь меню AFK AI показывает ваш email и сколько ригов осталось в этом месяце.
  2. В Content Browser щёлкните меш правой кнопкой и выберите Rig with AFK AI. (Или выделите его и выберите AFK AI > Rig the selected mesh....)
  3. Небольшое окно спросит Body type (Human или нужное животное либо существо), Animations (All animations или Rig only, если нужен только скелет) и Facing (оставьте Auto). В его заголовке сказано, что будет израсходован один риг. Нажмите OK.
  4. Продолжайте работать. Ход работы виден в меню AFK AI, а также в Output Log — в строках, которые начинаются с «AFK AI».

Если браузер не может вернуться в Unreal (мешает файрвол или Unreal запущен на другом компьютере), страница afk.ai покажет код входа. Выберите AFK AI > I have a sign-in code..., вставьте его и нажмите OK.

Что вы получите

  • Skeletal Mesh: Hero_rigged в той же папке, что и оригинал, уже выделенный. Исходный меш не затрагивается.
  • Skeleton: создан под тип модели. Человек получает 66 костей с тремя суставами в каждом пальце, названных как кости манекена Unreal: pelvis, spine_01, clavicle_l, upperarm_l, thigh_l и так далее.
  • Physics Asset: создаётся при импорте, для рэгдолла и коллизий.
  • Анимации: по одному Animation Sequence на анимацию. Для гуманоида — до 593: idle, ходьба, бег трусцой, спринт, прыжки, уклонения, движения с мечом, щитом, луком и пистолетом, танцы, реакции на удары и смерти. Бесплатный аккаунт получает бесплатные, а тариф открывает остальные.
  • FBX: Hero_rigged.fbx, сохранённый рядом с исходным файлом оригинала или, если туда записать нельзя, в папке Saved/AFK AI проекта. Создайте риг снова — и получите Hero_rigged_2: ничего не перезаписывается.

Как и при любом импорте, новые ассеты не попадут на диск, пока вы их не сохраните: File > Save All.

Аниме-персонаж в 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.

Посмотрите на движение без кода

Перетащите Hero_rigged на уровень. В его панели Details, в разделе Animation, установите Animation Mode в Use Animation Asset, выберите анимацию в Anim to Play (например, Walk) и оставьте Looping включённым. Нажмите Play или просто смотрите во вьюпорте.

Чтобы быстро проверить все анимации, дважды щёлкните любой Animation Sequence: откроется редактор анимации и проиграет её на персонаже.

Animation Blueprint для персонажа игрока

Классическая схема: idle на месте, ходьба, а затем бег трусцой, когда персонаж разгоняется.

  1. Щёлкните Hero_rigged правой кнопкой и выберите Create > Anim Blueprint. Назовите его ABP_Hero.
  2. В его Event Graph добавьте переменную типа float с именем Speed. От Event Blueprint Update Animation вызовите Try Get Pawn Owner, проверьте результат через Is Valid, затем Get Velocity, затем Vector Length XY, и запишите полученное значение в Speed.
  3. В AnimGraph щёлкните правой кнопкой, выберите Add New State Machine, назовите её Locomotion и подключите к Output Pose.
  4. Внутри создайте три состояния — Idle, Walk и Jog — и перетащите в каждое анимации Idle_A, Walk и Jog из Asset Browser, подключив их к Output Animation Pose.
  5. Проведите переходы между ними в обе стороны с правилами по Speed в сантиметрах в секунду: от Idle к Walk при Speed > 10, от Walk к Jog при Speed > 300 и обратно, когда скорость падает ниже.
  6. В Blueprint персонажа выделите компонент Mesh, установите Skeletal Mesh Asset в Hero_rigged, а Anim Class — в ABP_Hero. Опустите меш к низу капсулы и разверните его лицом к синей стрелке, как манекен в шаблоне.

Предпочитаете начать с C++? Та же идея в самом простом виде: проиграть одну зацикленную анимацию при старте игры.

// HeroCharacter.h
UPROPERTY(EditAnywhere, Category = "Animation")
TObjectPtr<UAnimSequence> IdleAnimation;

// HeroCharacter.cpp
#include "Animation/AnimSequence.h"

void AHeroCharacter::BeginPlay()
{
    Super::BeginPlay();
    if (IdleAnimation)
    {
        GetMesh()->PlayAnimation(IdleAnimation, /*bLooping=*/ true);
    }
}
EntryIdle_A↓ Speed > 10↑ Speed < 10Walk↓ Speed > 300↑ Speed < 300Jog
Схема state machine Locomotion. Каждое состояние проигрывает одну анимацию, а Speed в сантиметрах в секунду переключает между ними.

Root motion и немного Python

Некоторые анимации сами двигают персонажа вперёд: их названия заканчиваются на _RM, например Roll_RM, Dodge_left_RM или Sword_Dash_RM. Остальные проигрываются на месте. В Unreal root motion включается для каждой анимации отдельно, а плагин уже включил в Unreal поддержку Python, так что несколько строк сделают это для всех анимаций сразу. Вставьте этот код в командную строку Output Log, переключив её с Cmd на Python:

import unreal

folder = "/Game/Characters"  # the folder Hero_rigged is in
for path in unreal.EditorAssetLibrary.list_assets(folder, recursive=False):
    anim = unreal.EditorAssetLibrary.load_asset(path)
    if isinstance(anim, unreal.AnimSequence) and anim.get_name().endswith("_RM"):
        anim.set_editor_property("enable_root_motion", True)
        unreal.EditorAssetLibrary.save_loaded_asset(anim)
        unreal.log("Root motion on: " + anim.get_name())

Затем в Class Defaults у ABP_Hero установите Root Motion Mode в Root Motion from Everything, если проигрываете их в state machine, или проигрывайте их как монтажи (montages).

Ретаргетинг на манекен UE5 и обратно

Кости скелета названы как у манекена, поэтому ретаргетер Unreal сопоставляет их почти или совсем без вашей помощи. Это работает в обе стороны: анимации шаблона Third Person на вашем персонаже или анимации afk.ai на Manny и Quinn.

В Unreal 5.4 и новее:

  1. Щёлкните правой кнопкой анимацию, например одну из анимаций шаблона, и выберите Retarget Animations (Retarget Animation Assets в новейших версиях).
  2. Установите Target Preview Mesh в Hero_rigged. Источник — меш, с которым пришла анимация.
  3. Оставьте включённым Auto Generate Retargeter: Unreal сам создаст IK Rig и IK Retargeter.
  4. Отметьте нужные анимации, нажмите Export Animations, выберите папку и нажмите Export.

Поменяйте местами источник и цель, чтобы перенести анимации Hero_rigged на манекен. В версиях с 5.1 по 5.3 создайте IK Rig для каждого скелета и IK Retargeter между ними, затем используйте в ретаргетере Export Selected Animations. В любом случае просмотрите несколько результатов, прежде чем на них полагаться, — особенно руки.

Существа и предметы

Тот же щелчок правой кнопкой создаёт риг дракона, лошади, динозавра, паука или акулы: просто выберите тип модели в окне параметров. Каждый получает скелет, созданный под его тело, и анимации, сделанные под этот скелет, — взмахи крыльями, галоп, рёв или плавание, — так что для фауны в игре с открытым миром не нужен отдельный риггер. Предметы получают тип Object: подпрыгивания, вращения, покачивания и сплющивания для подбираемых предметов и дверей. В руководстве по животным перечислены все типы моделей и их анимации.

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

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

Каждый риг, дошедший до AFK AI, расходует один риг из лимита этого месяца — так же, как на afk.ai/rig и в других плагинах AFK AI. Stop waiting лишь прекращает ожидание в Unreal: риг продолжается и всё равно засчитывается. Неудачный риг не засчитывается, а сообщение объясняет почему. Меню AFK AI показывает, сколько ригов осталось; когда их нет, See plans открывает тарифы afk.ai.

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

Нет меню AFK AI
В Edit > Plugins проверьте, что AFK AI и Python Editor Script Plugin включены, и перезапустите редактор. Если дело в другом, Output Log выведет «AFK AI couldn't start» с причиной.
«has no source file recorded»
Или «was imported from a .obj file»: AFK AI нужен исходный .fbx, .glb или .gltf. Экспортируйте модель в один из этих форматов, импортируйте её и создайте риг.
«Couldn't find Hero's source file»
Файл переместили после импорта. Щёлкните меш правой кнопкой, выберите Reimport With New File, укажите, где файл лежит сейчас, и создайте риг снова.
«Unreal didn't import it as a skeletal mesh»
Риг получился, и FBX сохранён там, где сказано в сообщении. Перетащите его в Content Browser и импортируйте как Skeletal Mesh с анимациями. Такое бывает с новым импортёром в Unreal 5.5 и новее.
«Couldn't make a secure connection to AFK AI»
Мешает прокси, антивирус или корпоративный файрвол. Попробуйте другую сеть.
Риг не удался
Прочитайте сообщение. Обычно помогает другой тип модели или поза, в которой модель стоит прямо и смотрит вперёд.

Вопросы

Может ли Unreal Engine 5 сам создать риг персонажа?

Для статического меша — нет. Unreal умеет ретаргетить анимации между уже существующими скелетами, и в нём есть инструменты, чтобы строить и править скелеты вручную, но ничего, что создало бы риг меша за вас. Эту часть берёт на себя плагин AFK AI: он превращает статический меш в скелетный с весами скиннинга и анимациями, а дальше работает Unreal.

Нужны ли C++ или Visual Studio?

Нет. Плагин написан на Python, который Unreal запускает сам, компилировать ничего не нужно, поэтому он работает в проектах только на Blueprint. Код на C++ выше — только для проектов, которые уже его используют.

В каких версиях Unreal Engine он работает?

Unreal Engine 5.1 и новее, на Windows, Mac и Linux.

Можно ли создать риг модели, импортированной из .obj?

Напрямую — нет: плагин отправляет исходный файл меша и принимает .fbx, .glb или .gltf. Экспортируйте модель в один из этих форматов из 3D-программы, импортируйте и создайте риг.

Будет ли он работать с анимациями манекена UE5?

Да. Кости названы как у манекена, поэтому ретаргетер сопоставляет их почти или совсем без настройки, в обоих направлениях. См. раздел «Ретаргетинг на манекен UE5 и обратно» выше.

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

Да. Скелеты и анимации распространяются по лицензии CC0, а ваша модель остаётся вашей.

Где файл с ригом, если он нужен в другой программе?

Hero_rigged.fbx сохраняется рядом с исходным файлом оригинала или в папке Saved/AFK AI проекта. Он открывается в Blender, Maya и любой программе, которая читает FBX, вместе с анимациями.

Есть ли плагин для Unity или Blender?

Да. См. руководства по Unity и Blender, а также обзор всех плагинов AFK AI для всех девяти программ.

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

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

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

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