HandleidingenStappenplan8 min leestijd

Elk 3D-model automatisch riggen in Unity: Klaar voor Humanoid, met zijn animatieclips

Kies een model in het Project-venster en klik op Rig. Een minuut later staat er een gerigde FBX naast, ingesteld als Humanoid, met elke animatie als clip.

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
Nagetekend, geen screenshot: het AFK AI-venster terwijl het Hero.fbx rigt, en daarna het Project-venster, met Hero_rigged.fbx ingesteld als Humanoid en de herhalende clips gemarkeerd.

Wie een personage in Unity wil laten bewegen, gaat meestal via Mixamo. Je exporteert een FBX, uploadt hem, zet markers op de kin, de polsen, de ellebogen en de knieën, downloadt elke animatie los, en zet daarna elk bestand op Humanoid en vinkt bij elke clip Loop Time aan. En dat werkt alleen voor humanoïden.

Het AFK AI-pakket doet het vanuit een venster in de Unity-editor. Kies het model in je Project-venster en klik op Rig. Ongeveer een minuut later staat Hero_rigged.fbx naast Hero.fbx, al ingesteld als Humanoid, met elke animatie als clip en de wandel- en idle-animaties al op herhalen.

Mixamo of AFK AI in Unity

Mixamo is gratis en heeft een grote bibliotheek met humanoïde animaties. AFK AI scheelt je het heen en weer, rigt ook dieren en props, en levert voor een humanoïde tot 593 animaties in één bestand. Met een gratis account krijg je de gratis animaties, en een pakket voegt de rest toe.

MixamoAFK AI in Unity
WaarEen website: uploaden, riggen, downloadenEen venster in de Unity-editor
Wat je doetMarkers zetten op kin, polsen, ellebogen, knieën en kruisEen lichaamstype kiezen, op Rig klikken
LichamenAlleen humanoïdenHumanoïden en 14 andere lichaamstypes
AnimatiesEén voor één downloadenElke animatie voor het lichaamstype, in één FBX
Instellen in UnityMet de hand: Humanoid, dan Loop Time bij elke clipAl gedaan: Humanoid, één clip per animatie, loops aan
InloggenMet een Adobe-accountMet een afk.ai-account, via Google

Het pakket installeren

  1. Download het pakket van de Unity-pluginpagina: één .tgz-bestand. Zet het buiten je project, op een plek waar het kan blijven staan, want Unity leest het pakket uit dat bestand.
  2. Open in Unity Window > Package Manager, klik linksboven op + en kies Add package from tarball....
  3. Kies het .tgz-bestand dat je hebt gedownload. Pak het niet uit.
  4. Open Window > AFK AI. Dock het venster waar je maar wilt.

Het werkt in Unity 2021.3 en nieuwer, Unity 6 inbegrepen, en met de Built-in-, URP- en HDRP-pipeline: de plugin komt alleen aan de import van het model. Al zijn code draait alleen in de editor, dus er komt niets van in je game terecht.

Inloggen

  1. Klik in het AFK AI-venster op Sign in. Je browser opent de inlogpagina van afk.ai; log in met Google.
  2. De browser laat weten dat je bent ingelogd. Sluit het tabblad en ga terug naar Unity: het venster toont je e-mailadres en hoeveel rigs je deze maand nog hebt.

Komt de browser niet terug bij Unity (sommige beveiligingssoftware blokkeert dat), dan toont afk.ai in plaats daarvan een inlogcode. Open I have a sign-in code in het AFK AI-venster, plak de code en klik op Use code.

Je inloggegevens staan in de eigen instellingen van Unity, voor jouw gebruiker op deze computer, en nooit in het project. Deel of commit je het project, dan gaan ze dus niet mee.

Een model riggen

  1. Selecteer het model in het Project-venster: een .fbx-, .glb- of .gltf-bestand tot 50 MB. Een model dat je in de scène hebt gezet, werkt ook: de plugin stuurt het bestand waar het uit komt. Unity toont .glb-bestanden alleen als model als er een glTF-importer is geïnstalleerd, maar de plugin stuurt ze hoe dan ook.
  2. Stel in het AFK AI-venster het Body type in: Human voor mensen en alles op twee benen, of het dier of wezen dat het is.
  3. Laat All animations aan staan, of kies Rig only voor alleen het skelet. Laat Facing op Auto staan.
  4. Klik op Rig. Het venster toont de voortgang: uploaden, wachten, riggen, animaties toevoegen, downloaden. Je kunt gewoon doorwerken, en ook als je het venster sluit, gaat het door.

Als het klaar is, staat Hero_rigged.fbx naast Hero.fbx, geselecteerd en gemarkeerd in het Project-venster. Het originele bestand blijft onaangeroerd.

Wat Unity binnenkrijgt

  • Humanoid: een mens komt binnen als Humanoid-rig met een eigen Avatar (Hero_riggedAvatar), dus hij deelt animaties met elk ander Humanoid-personage, in beide richtingen. Unity koppelt de bones zelf aan zijn Humanoid-slots, vingers inbegrepen.
  • Generic: elk ander lichaamstype, van vos tot draak, komt binnen als Generic-rig.
  • Clips: elke animatie is een eigen clip, met dezelfde naam als op afk.ai: Idle_A, Walk, Jog, Sprint, Jump_Start, Sword_Attack enzovoort.
  • Loops: clips waarvan de naam zegt dat ze zich herhalen (idle, walk, run, fly, swim en dergelijke), hebben Loop Time aan. Eenmalige bewegingen zoals Jump_Start, Sword_Attack of Death_A spelen één keer af.
  • Root motion: animaties met een naam die eindigt op _RM (Roll_RM, Dodge_left_RM) bewegen het personage zelf vooruit; de rest speelt op de plek af.

Kan Unity een skelet niet aan zijn Humanoid-bones koppelen, dan stelt de plugin het model in als Generic en vertelt waarom. De animaties spelen dan nog steeds af; je kunt ze alleen niet delen met andere Humanoid-personages.

Het animepersonage in een T-pose met de joints die afk.ai plaatste als stippen, tot en met de vingers
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 ... (rechts hetzelfde)    └ thigh_l      └ calf_l        └ foot_l          └ ball_l    └ thigh_r ... (rechts hetzelfde)
Het humanoïde skelet dat elke rig van afk.ai krijgt: 66 botten, met drie joints in elke vinger en de duim, genoemd zoals de mannequin van Unreal Engine ze noemt.

Een Animator instellen

Een blend tree die van idle via walk en jog naar sprint gaat naarmate het personage sneller beweegt, plus een zwaardaanval onder een knop:

  1. Sleep Hero_rigged.fbx de scène in. Er zit al een Animator met zijn Avatar op. Voeg er een Character Controller aan toe en zet Apply Root Motion op de Animator uit (het script verplaatst hem).
  2. Kies in het Project-venster Create > Animator Controller (in Unity 6 Create > Animation > Animator Controller), noem hem Hero en sleep hem naar het veld Controller van de Animator.
  3. Open hem (Window > Animation > Animator). Voeg onder Parameters een Float toe met de naam Speed en een Trigger met de naam Attack.
  4. Klik met rechts in de graph en kies Create State > From New Blend Tree. Dubbelklik erop, zet de parameter op Speed en voeg vier motions toe: Idle_A, Walk, Jog en Sprint uit Hero_rigged.fbx (klik in het Project-venster op het pijltje ervan om de clips te zien). Zet Automate Thresholds uit en vul de snelheden in waarmee je personage beweegt, bijvoorbeeld 0, 1.5, 3.5 en 6.
  5. Sleep in de Base Layer de clip Sword_Attack erbij. Maak een transition van de blend tree naar die clip met de conditie Attack en Has Exit Time uit, zodat hij meteen begint, en een transition terug naar de blend tree met Has Exit Time aan.
  6. Voeg dit script toe aan het personage:
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);
    }
}

Druk op Play: met de stick of de pijltjestoetsen staat het personage stil, wandelt, jogt en sprint het, en bij een klik haalt het uit met zijn zwaard.

EntryLocomotionBlend Tree · Idle_A, Walk, Jog, Sprint↓ Attack↑ Has Exit TimeSword_Attack
Getekend: de Animator Controller. De blend tree Locomotion gaat op Speed van Idle_A naar Sprint; de trigger Attack speelt Sword_Attack af, dat aan het eind terugkeert.

Animaties delen met andere personages

Omdat een gerigde mens Humanoid is, regelt Unity de retargeting voor je. Sleep er een willekeurige Humanoid-clip op, uit de Asset Store of uit je eigen bibliotheek, en die speelt af. Andersom spelen zijn clips af op elk Humanoid-personage dat je al hebt: sleep de Sprint-clip van Hero_rigged.fbx in de Animator Controller van een ander personage en dat rent.

Dieren en wezens zijn Generic, dus hun clips spelen af op hun eigen skelet. Elk model dat AFK AI als hetzelfde lichaamstype rigt, krijgt wel dezelfde bone- en animatienamen, dus de Animator Controller van de ene vos stuurt elke andere vos aan die je rigt.

Dieren, wezens en props

Kies het lichaamstype in het venster voordat je op Rig klikt: Fox voor honden, katten en wolven, Horse voor alles met hoeven, Bird, Dragon, Kaiju voor dinosaurussen, Spider, Insect, Snake, Fish, Kangaroo, Frog, Turtle, Ghost, of Object voor props die stuiteren, draaien en wiebelen. Elk type krijgt een skelet dat voor zijn lichaam is gemaakt en animaties die voor dat skelet zijn gemaakt, en komt binnen als Generic-rig, met dezelfde clips en loops al ingesteld. De handleiding voor dieren zet op een rij wat elk type meekrijgt.

  • Draak
  • Viervoeter
  • Hoefdier
  • Dinosaurus
  • Spin
  • Vis
Zes van de andere lichaamstypes, gerigd op afk.ai/rig en met hun eigen animaties.

Wat telt als rig

Elke klik op Rig die AFK AI aanneemt, kost een van de rigs van deze maand, net als riggen op afk.ai/rig of in een andere AFK AI-plugin. Een mislukte rig telt niet. Stop waiting stopt het wachten in Unity, maar de rig gaat door en telt nog steeds. Valt de verbinding weg, dan pakt Try again dezelfde rig weer op, en die telt nooit twee keer. Zijn je rigs op, dan toont het venster See plans, dat de pakketten van afk.ai opent.

Als er iets misgaat

De browser bereikt de pagina niet na het inloggen
Gebruik I have a sign-in code.
Couldn't reach AFK AI
Controleer je verbinding en klik op Try again. Dat pakt dezelfde rig weer op.
Het model is te groot
AFK AI neemt modellen tot 50 MB aan. Exporteer een lichtere versie, met minder polygonen of kleinere textures.
‘keeps its data in separate files’
Een .gltf met zijn .bin ernaast. Exporteer in plaats daarvan een .glb.
Een clip herhaalt terwijl dat niet de bedoeling is
Selecteer Hero_rigged.fbx, open het tabblad Animation in de Inspector, kies de clip, pas Loop Time aan en klik op Apply.
Er gebeurt niets bij Rig
Selecteer eerst een .fbx, .glb of .gltf in het Project-venster. Het venster zegt wat er ontbreekt.

Veelgestelde vragen

Heb ik Mixamo nog nodig?

Nee. De plugin rigt het model en haalt de animaties binnen in één stap, ingesteld als Humanoid. Je kunt er nog steeds animaties van Mixamo op gebruiken: download ze voor een willekeurig Humanoid-personage, zet ze op Humanoid, en ze spelen af op het jouwe.

Komt het AFK AI-pakket in de build van mijn game terecht?

Nee. Al zijn code zit in een assembly die alleen in de editor bestaat. Wat er in je project overblijft, is de gerigde FBX, een gewoon modelasset.

Werkt het in Unity 6?

Ja. Het werkt in Unity 2021.3 en elke versie daarna, Unity 6 inbegrepen.

Kan ik een .glb- of .gltf-model riggen in Unity?

Ja. De plugin stuurt het bestand zoals het is, ook als Unity geen glTF-importer heeft om het als model te tonen. Wat terugkomt, is een FBX, en die importeert Unity zonder iets extra's. Een .gltf moet alles ingebed hebben; exporteer anders een .glb.

Werkt de rig voor een VRChat-avatar?

Ja. Een gerigde mens is Humanoid, met elke vinger, en dat is precies wat VRChat nodig heeft. De VRChat-handleiding behandelt de rest van de setup.

Wat als het personage de verkeerde kant op kijkt?

Rig het opnieuw met Facing op de hoek waarover het gedraaid staat (90°, 180° of 270°). Auto zoekt dat voor de meeste modellen zelf uit.

Kan ik modellen vanuit een script riggen, voor een hele map?

De plugin rigt één model tegelijk. Gebruik voor batches en build-pipelines de rigging-API, vanaf de commandline of vanuit je eigen code.

Is er ook een plugin voor Unreal, Godot of Blender?

Ja: Unreal Engine, Godot en Blender hebben elk een eigen handleiding, en het overzicht van alle AFK AI-plugins behandelt alle negen apps.

Rig en animeer je model

Een AI rigt het in je browser, waarna je er honderden animaties op afspeelt. Download één GLB voor elke engine.

Model riggen

Meer handleidingen