GuiasTutorial8 min de leitura

Auto-rig de qualquer modelo 3D dentro da Unity: Pronto como Humanoid, com os clipes de animação

Escolha um modelo na janela Project e clique em Rig. Um minuto depois, um FBX rigado aparece ao lado dele, configurado como Humanoid e com cada animação como um clipe.

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
Desenho feito a partir do plugin, não uma captura de tela: a janela AFK AI rigando Hero.fbx e, depois, a janela Project, com Hero_rigged.fbx configurado como Humanoid e os clipes em loop marcados.

O caminho de sempre para colocar um personagem em movimento na Unity passa pelo Mixamo. Você exporta um FBX, faz upload, posiciona marcadores no queixo, nos pulsos, nos cotovelos e nos joelhos, baixa cada animação uma por uma, depois configura cada arquivo como Humanoid e marca Loop Time em cada clipe. E isso só funciona para humanoides.

O pacote do AFK AI faz isso numa janela dentro do editor da Unity. Escolha o modelo na janela Project e clique em Rig. Cerca de um minuto depois, Hero_rigged.fbx aparece ao lado de Hero.fbx, já configurado como Humanoid, com cada animação como um clipe e as caminhadas e os idles em loop.

Mixamo ou AFK AI na Unity

O Mixamo é grátis e tem uma biblioteca grande de animações para humanoides. O AFK AI poupa as idas e vindas, riga animais e props também e traz até 593 animações para um humanoide num único arquivo. Uma conta grátis recebe as animações grátis, e um plano libera o resto.

MixamoAFK AI na Unity
OndeUm site: upload, rigging, downloadUma janela no editor da Unity
O que você fazPosiciona marcadores no queixo, nos pulsos, nos cotovelos, nos joelhos e na virilhaEscolhe um tipo de corpo e clica em Rig
CorposSó humanoidesHumanoides e outros 14 tipos de corpo
AnimaçõesBaixadas uma por vezTodas as do tipo de corpo, num único FBX
Configuração na UnityNa mão: Humanoid, depois Loop Time em cada clipePronta: Humanoid, um clipe por animação, loops ativados
LoginUma conta da AdobeUma conta do afk.ai, com o Google

Instale o pacote

  1. Baixe o pacote na página do plugin para Unity: um único arquivo .tgz. Guarde num lugar fixo fora do projeto, porque a Unity lê o pacote a partir desse arquivo.
  2. Na Unity, abra Window > Package Manager, clique em + no canto superior esquerdo e escolha Add package from tarball....
  3. Selecione o arquivo .tgz que você baixou. Não descompacte.
  4. Abra Window > AFK AI. Encaixe a janela onde preferir.

Funciona na Unity 2021.3 ou mais recente, incluindo a Unity 6, tanto no pipeline Built-in quanto no URP e no HDRP: o plugin só mexe na importação do modelo. Todo o código dele é só do editor, então nada dele acaba no seu jogo.

Entre na sua conta

  1. Na janela AFK AI, clique em Sign in. O navegador abre a página de login do afk.ai; entre com o Google.
  2. O navegador mostra “You're signed in”. Feche a aba e volte para a Unity: a janela mostra seu e-mail e quantos rigs ainda restam neste mês.

Se o navegador não conseguir voltar para a Unity (alguns programas de segurança bloqueiam), o afk.ai mostra um código de login. Abra I have a sign-in code na janela AFK AI, cole o código e clique em Use code.

Seu login fica guardado nas configurações da própria Unity para o seu usuário neste computador, nunca no projeto, então ele não vai junto quando você compartilha o projeto ou faz commit dele.

Rigue um modelo

  1. Na janela Project, selecione o modelo: um arquivo .fbx, .glb ou .gltf de até 50 MB. Um modelo que você já colocou na cena também serve: o plugin envia o arquivo de onde ele veio. A Unity só mostra arquivos .glb como modelos se houver um importador de glTF instalado, mas o plugin envia esses arquivos de qualquer jeito.
  2. Na janela AFK AI, defina o Body type: human para pessoas e qualquer coisa com duas pernas, ou o animal ou a criatura que ele for.
  3. Deixe All animations ativado ou escolha Rig only para receber só o esqueleto. Deixe Facing em Auto.
  4. Clique em Rig. A janela mostra o andamento: enviando, esperando, rigando, adicionando as animações e baixando. Você pode continuar trabalhando, e fechar a janela não interrompe o processo.

Quando termina, Hero_rigged.fbx é salvo ao lado de Hero.fbx, selecionado e destacado na janela Project. O arquivo original continua intacto.

O que a Unity recebe

  • Humanoid: um humano chega como rig Humanoid, com o próprio Avatar (Hero_riggedAvatar), então compartilha animações com qualquer outro personagem Humanoid, nos dois sentidos. A Unity associa os ossos aos slots do Humanoid sozinha, incluindo os dedos.
  • Generic: todos os outros tipos de corpo, de uma raposa a um dragão, chegam como rig Generic.
  • Clipes: cada animação vira um clipe, com o mesmo nome que tem no afk.ai: Idle_A, Walk, Jog, Sprint, Jump_Start, Sword_Attack e assim por diante.
  • Loops: os clipes cujo nome indica que se repetem (idle, walk, run, fly, swim e parecidos) vêm com Loop Time ativado. Ações únicas, como Jump_Start, Sword_Attack ou Death_A, tocam uma vez só.
  • Root motion: os nomes terminados em _RM (Roll_RM, Dodge_left_RM) movem o personagem para a frente sozinhos; os outros tocam no lugar.

Se a Unity não conseguir associar um esqueleto aos ossos do Humanoid, o plugin configura o modelo como Generic e explica o motivo. As animações continuam tocando; só não dá para usá-las em outros personagens Humanoid.

O personagem de anime em T-pose com os joints posicionados pelo afk.ai indicados por pontos, inclusive nos dedos
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 ... (igual do lado direito)    └ thigh_l      └ calf_l        └ foot_l          └ ball_l    └ thigh_r ... (igual do lado direito)
O esqueleto usado em todo rig humanoide do afk.ai: 66 ossos, com três joints em cada dedo, incluindo o polegar, e os mesmos nomes usados no Mannequin da Unreal Engine.

Monte um Animator

Uma blend tree que vai de idle para walk, jog e sprint conforme o personagem ganha velocidade, mais um ataque de espada num botão:

  1. Arraste Hero_rigged.fbx para a cena. Ele já tem um Animator com o Avatar dele. Adicione um Character Controller e desative Apply Root Motion no Animator (quem move o personagem é o script).
  2. Na janela Project, escolha Create > Animator Controller (na Unity 6, Create > Animation > Animator Controller), dê o nome Hero e arraste para o campo Controller do Animator.
  3. Abra o controller (Window > Animation > Animator). Em Parameters, adicione um Float chamado Speed e um Trigger chamado Attack.
  4. Clique com o botão direito no grafo e escolha Create State > From New Blend Tree. Clique duas vezes nela, defina o parâmetro como Speed e adicione quatro motions: Idle_A, Walk, Jog e Sprint, de Hero_rigged.fbx (clique na setinha do arquivo na janela Project para ver os clipes). Desative Automate Thresholds e use as velocidades em que o seu personagem se move, por exemplo 0; 1,5; 3,5 e 6.
  5. De volta à Base Layer, arraste o clipe Sword_Attack para o grafo. Crie uma transição da blend tree para ele com a condição Attack e Has Exit Time desativado, para começar na hora, e outra de volta para a blend tree com Has Exit Time ativado.
  6. Adicione este script ao personagem:
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);
    }
}

Aperte Play: com o analógico ou as setas do teclado, o personagem passa de parado para andando, trotando e correndo, e dá um golpe de espada com um clique.

EntryLocomotionBlend Tree · Idle_A, Walk, Jog, Sprint↓ Attack↑ Has Exit TimeSword_Attack
Desenho: o Animator Controller. A blend tree Locomotion vai de Idle_A a Sprint conforme Speed; o trigger Attack toca Sword_Attack, que volta quando termina.

Compartilhe animações com outros personagens

Como um humano rigado é Humanoid, a Unity faz o retargeting para você. Solte qualquer clipe Humanoid nele, da Asset Store ou da sua própria biblioteca, e ele toca. No sentido contrário, os clipes dele tocam em qualquer personagem Humanoid que você já tenha: arraste o clipe Sprint de Hero_rigged.fbx para o Animator Controller de outro personagem, e ele sai correndo.

Animais e criaturas são Generic, então os clipes deles tocam no próprio esqueleto. Mesmo assim, todo modelo que o AFK AI riga com o mesmo tipo de corpo recebe os mesmos nomes de ossos e de animações, então o Animator Controller de uma raposa controla qualquer outra raposa que você rigar.

Animais, criaturas e props

Escolha o tipo de corpo na janela antes de clicar em Rig: fox para cachorros, gatos e lobos, horse para qualquer animal com cascos, bird, dragon, kaiju para dinossauros, spider, insect, snake, fish, kangaroo, frog, turtle, ghost, ou object para props que quicam, giram e balançam. Cada um recebe um esqueleto feito para o corpo dele e animações feitas para esse esqueleto, e chega como rig Generic, com os mesmos clipes e loops configurados. O guia de animais mostra o que cada um traz.

  • Dragão
  • Quadrúpede
  • Com cascos
  • Dinossauro
  • Aranha
  • Peixe
Seis dos outros tipos de corpo, rigados no afk.ai/rig e rodando as próprias animações.

O que conta como rig

Cada clique em Rig que o AFK AI aceita usa um dos rigs deste mês, igual a rigar no afk.ai/rig ou em qualquer outro plugin do AFK AI. Rig que falha não conta. Stop waiting encerra a espera na Unity, mas o rig continua e ainda conta. Se a conexão cair, Try again retoma o mesmo rig, que nunca é contado duas vezes. Quando os rigs acabam, a janela mostra See plans, que abre os planos do afk.ai.

Quando algo dá errado

O navegador não consegue abrir a página depois do login
Use I have a sign-in code.
Aparece “Couldn't reach AFK AI”
Confira sua conexão e clique em Try again. Ele retoma o mesmo rig.
O modelo é grande demais
O AFK AI aceita modelos de até 50 MB. Exporte uma versão mais leve, com menos polígonos ou texturas menores.
Aparece “keeps its data in separate files”
É um .gltf com um .bin ao lado. Exporte um .glb.
Um clipe está em loop quando não deveria
Selecione Hero_rigged.fbx, abra a aba Animation no Inspector, escolha o clipe, mude Loop Time e clique em Apply.
Nada acontece ao clicar em Rig
Selecione antes um .fbx, .glb ou .gltf na janela Project. A janela diz o que está faltando.

Perguntas frequentes

Ainda preciso do Mixamo?

Não. O plugin riga o modelo e traz as animações num passo só, já configurado como Humanoid. Você ainda pode usar as animações do Mixamo nele: baixe para qualquer personagem Humanoid, configure como Humanoid, e elas tocam no seu.

O pacote do AFK AI vai para a build do meu jogo?

Não. Todo o código dele fica num assembly só do editor. O que fica no seu projeto é o FBX rigado, um asset de modelo comum.

Funciona na Unity 6?

Sim. Funciona na Unity 2021.3 e em todas as versões depois dela, incluindo a Unity 6.

Dá para rigar um modelo .glb ou .gltf na Unity?

Sim. O plugin envia o arquivo do jeito que ele está, mesmo quando a Unity não tem um importador de glTF para mostrá-lo como modelo. O que volta é um FBX, que a Unity importa sem nada extra. Um .gltf precisa ter tudo embutido; se não tiver, exporte um .glb.

O rig serve para um avatar do VRChat?

Sim. Um humano rigado é Humanoid, com todos os dedos, que é o que o VRChat precisa. O guia do VRChat cobre o resto da configuração.

E se o personagem ficar virado para o lado errado?

Rigue de novo com Facing no ângulo em que ele está girado (90°, 180° ou 270°). O Auto acerta na maioria dos modelos.

Dá para rigar os modelos de uma pasta inteira por script?

O plugin riga um modelo por vez. Para lotes e pipelines de build, use a API de rigging, pela linha de comando ou pelo seu próprio código.

Também tem plugin para Unreal, Godot ou Blender?

Sim: a Unreal Engine, o Godot e o Blender têm guias próprios, e a visão geral de todos os plugins do AFK AI cobre os nove programas.

Rigue e anime seu modelo

Uma IA riga seu modelo no navegador. Depois, veja centenas de animações rodando nele. Baixe tudo em um único GLB para usar em qualquer engine.

Rigar um modelo

Mais guias