PoradnikiInstrukcja8 min czytania

Automatyczny rigging dowolnego modelu 3D w Unity: Gotowy jako Humanoid, z klipami animacji

Wybierz model w oknie Project i kliknij Rig. Minutę później obok stanie FBX z rigiem, ustawiony jako Humanoid, z każdą animacją jako klipem.

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
Rysunek na podstawie wtyczki, nie zrzut ekranu: okno AFK AI podczas rigowania Hero.fbx, a potem okno Project z Hero_rigged.fbx ustawionym jako Humanoid i oznaczonymi klipami w pętli.

Zwykle, żeby postać w Unity zaczęła się ruszać, trzeba przejść przez Mixamo. Eksportujesz FBX, wgrywasz go, ustawiasz znaczniki na brodzie, nadgarstkach, łokciach i kolanach, pobierasz animacje jedną po drugiej, a potem ustawiasz każdy plik na Humanoid i zaznaczasz Loop Time w każdym klipie. I działa to tylko z humanoidami.

Pakiet AFK AI robi to z okna w edytorze Unity. Wybierz model w oknie Project i kliknij Rig. Mniej więcej minutę później obok Hero.fbx stoi Hero_rigged.fbx, już ustawiony jako Humanoid, z każdą animacją jako klipem, a chody i idle są zapętlone.

Mixamo czy AFK AI w Unity

Mixamo jest darmowe i ma dużą bibliotekę animacji humanoidalnych. AFK AI oszczędza kursowania tam i z powrotem, dodaje rig także do zwierząt i rekwizytów, a humanoidowi daje nawet 593 animacji w jednym pliku. Darmowe konto dostaje te darmowe, a plan dodaje resztę.

MixamoAFK AI w Unity
GdzieStrona internetowa: wgrywasz, robisz rig, pobieraszOkno w edytorze Unity
Co robiszUstawiasz znaczniki na brodzie, nadgarstkach, łokciach, kolanach i kroczuWybierasz typ budowy, klikasz Rig
Rodzaje ciałTylko humanoidyHumanoidy i 14 innych typów budowy
AnimacjePobierane pojedynczoWszystkie animacje dla typu budowy, w jednym FBX
Konfiguracja w UnityRęczna: Humanoid, potem Loop Time w każdym klipieGotowa: Humanoid, jeden klip na animację, pętle włączone
LogowanieKonto AdobeKonto afk.ai, przez Google

Instalacja pakietu

  1. Pobierz pakiet ze strony wtyczki do Unity: jeden plik .tgz. Trzymaj go poza projektem, w miejscu, gdzie może zostać na stałe, bo Unity wczytuje pakiet z tego pliku.
  2. W Unity otwórz Window > Package Manager, kliknij + w lewym górnym rogu i wybierz Add package from tarball....
  3. Wskaż pobrany plik .tgz. Nie rozpakowuj go.
  4. Otwórz Window > AFK AI. Zadokuj okno tam, gdzie ci wygodnie.

Pakiet działa w Unity 2021.3 i nowszych, łącznie z Unity 6, z każdym pipeline'em renderowania: Built-in, URP i HDRP. Wtyczka dotyka tylko importu modelu. Cały jej kod działa wyłącznie w edytorze, więc nic z niej nie trafia do gry.

Logowanie

  1. W oknie AFK AI kliknij Sign in. Przeglądarka otworzy stronę logowania afk.ai; zaloguj się przez Google.
  2. Przeglądarka wyświetli „You're signed in”. Zamknij kartę i wróć do Unity: okno pokazuje twój e-mail i liczbę rigowań, które zostały ci w tym miesiącu.

Jeśli przeglądarka nie może wrócić do Unity (blokuje to niektóre oprogramowanie zabezpieczające), afk.ai pokaże zamiast tego kod logowania. W oknie AFK AI otwórz I have a sign-in code, wklej kod i kliknij Use code.

Logowanie jest zapisane we własnych ustawieniach Unity dla twojego użytkownika na tym komputerze, nigdy w projekcie, więc nie udostępniasz go, gdy udostępniasz projekt albo robisz commit.

Rigowanie modelu

  1. W oknie Project zaznacz model: plik .fbx, .glb lub .gltf do 50 MB. Model umieszczony w scenie też się nada: wtyczka wyśle plik, z którego pochodzi. Unity pokazuje pliki .glb jako modele tylko z zainstalowanym importerem glTF, ale wtyczka i tak je wysyła.
  2. W oknie AFK AI ustaw Body type: human dla ludzi i wszystkiego na dwóch nogach albo konkretne zwierzę lub stworzenie.
  3. Zostaw włączone All animations albo wybierz Rig only, jeśli chcesz tylko szkielet. Facing zostaw na Auto.
  4. Kliknij Rig. Okno pokazuje postęp: wysyłanie, oczekiwanie, rigowanie, dodawanie animacji, pobieranie. Możesz dalej pracować, a zamknięcie okna nie przerywa rigowania.

Gdy wszystko się skończy, Hero_rigged.fbx zostaje zapisany obok Hero.fbx, zaznaczony i podświetlony w oknie Project. Oryginalny plik pozostaje nietknięty.

Co dostaje Unity

  • Humanoid: człowiek trafia do projektu jako rig Humanoid z własnym Avatarem (Hero_riggedAvatar), więc wymienia się animacjami z każdą inną postacią Humanoid, w obie strony. Unity samo przypisuje kości do slotów Humanoid, łącznie z palcami.
  • Generic: każdy inny typ budowy, od lisa po smoka, trafia do projektu jako rig Generic.
  • Klipy: każda animacja to osobny klip, nazwany tak jak na afk.ai: Idle_A, Walk, Jog, Sprint, Jump_Start, Sword_Attack i tak dalej.
  • Pętle: klipy, których nazwy wskazują na powtarzanie (idle, walk, run, fly, swim i podobne), mają włączone Loop Time. Jednorazowe, jak Jump_Start, Sword_Attack czy Death_A, odtwarzają się raz.
  • Root motion: animacje, których nazwy kończą się na _RM (Roll_RM, Dodge_left_RM), same przesuwają postać do przodu; pozostałe odtwarzają się w miejscu.

Jeśli Unity nie potrafi dopasować szkieletu do kości Humanoid, wtyczka ustawia model jako Generic i podaje powód. Animacje nadal działają, tylko nie da się ich dzielić z innymi postaciami Humanoid.

Postać anime w T-pozie ze stawami rozmieszczonymi przez afk.ai, pokazanymi jako kropki, aż po palce
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 ... (to samo po prawej)    └ thigh_l      └ calf_l        └ foot_l          └ ball_l    └ thigh_r ... (to samo po prawej)
Humanoidalny szkielet, który dostaje każdy rig z afk.ai: 66 kości, z trzema stawami w każdym palcu i kciuku, nazwanych tak jak w manekinie Unreal Engine.

Konfiguracja Animatora

Blend tree, który przechodzi od idle przez chód i trucht do sprintu, gdy postać przyspiesza, i atak mieczem pod przyciskiem:

  1. Przeciągnij Hero_rigged.fbx do sceny. Ma już Animator ze swoim Avatarem. Dodaj do niego Character Controller i wyłącz Apply Root Motion w Animatorze (postać przesuwa skrypt).
  2. W oknie Project wybierz Create > Animator Controller (w Unity 6: Create > Animation > Animator Controller), nazwij go Hero i przeciągnij na pole Controller w Animatorze.
  3. Otwórz go (Window > Animation > Animator). W Parameters dodaj Float o nazwie Speed i Trigger o nazwie Attack.
  4. Kliknij graf prawym przyciskiem i wybierz Create State > From New Blend Tree. Kliknij go dwukrotnie, ustaw jego parametr na Speed i dodaj cztery motiony: Idle_A, Walk, Jog i Sprint z Hero_rigged.fbx (kliknij jego strzałkę w oknie Project, żeby zobaczyć klipy). Wyłącz Automate Thresholds i ustaw progi na prędkości, z jakimi porusza się twoja postać, na przykład 0; 1,5; 3,5 i 6.
  5. Wróć do Base Layer i przeciągnij tam klip Sword_Attack. Utwórz przejście z blend tree do niego z warunkiem Attack i wyłączonym Has Exit Time, żeby atak zaczynał się od razu, oraz przejście z powrotem do blend tree z włączonym Has Exit Time.
  6. Dodaj do postaci ten skrypt:
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);
    }
}

Naciśnij Play: sterowana gałką albo strzałkami postać stoi, idzie, biegnie truchtem i sprintuje, a po kliknięciu wyprowadza cios mieczem.

EntryLocomotionBlend Tree · Idle_A, Walk, Jog, Sprint↓ Attack↑ Has Exit TimeSword_Attack
Rysunek: Animator Controller. Blend tree Locomotion przechodzi od Idle_A do Sprint zależnie od Speed; trigger Attack odtwarza Sword_Attack, a po jego zakończeniu postać wraca do ruchu.

Wymiana animacji z innymi postaciami

Ponieważ człowiek z rigiem jest Humanoidem, Unity robi retargeting za ciebie. Wrzuć na niego dowolny klip Humanoid, z Asset Store albo z własnej biblioteki, a zadziała. W drugą stronę jego klipy działają na każdej twojej postaci Humanoid: przeciągnij klip Sprint z Hero_rigged.fbx do Animator Controllera innej postaci, a ta zacznie biec.

Zwierzęta i stworzenia są Generic, więc ich klipy działają na ich własnym szkielecie. Każdy model, któremu AFK AI doda rig z tym samym typem budowy, dostaje jednak te same nazwy kości i animacji, więc Animator Controller jednego lisa steruje każdym innym lisem, do którego dodasz rig.

Zwierzęta, stworzenia i rekwizyty

Przed kliknięciem Rig wybierz w oknie typ budowy: fox dla psów, kotów i wilków, horse dla wszystkiego, co ma kopyta, bird, dragon, kaiju dla dinozaurów, spider, insect, snake, fish, kangaroo, frog, turtle, ghost albo object dla rekwizytów, które podskakują, wirują i się chwieją. Każdy dostaje szkielet przygotowany dla jego ciała i animacje przygotowane dla tego szkieletu, a do projektu trafia jako rig Generic, z tak samo skonfigurowanymi klipami i pętlami. Poradnik o zwierzętach wymienia, co dostaje każdy z nich.

  • Smok
  • Czworonóg
  • Kopytny
  • Dinozaur
  • Pająk
  • Ryba
Sześć innych typów ciała z rigiem zrobionym na afk.ai/rig, każdy odtwarza własne animacje.

Co liczy się jako rigowanie

Każde kliknięcie Rig, które AFK AI przyjmie, zużywa jedno z rigowań w tym miesiącu, tak samo jak rigging na afk.ai/rig albo w każdej innej wtyczce AFK AI. Nieudany rig się nie liczy. Stop waiting przerywa czekanie w Unity, ale rigowanie trwa dalej i nadal się liczy. Jeśli połączenie zostanie zerwane, Try again wznawia to samo rigowanie i nigdy nie liczy go dwa razy. Gdy rigowania się skończą, okno pokazuje See plans, co otwiera plany afk.ai.

Gdy coś pójdzie nie tak

Przeglądarka nie może otworzyć strony po zalogowaniu
Użyj I have a sign-in code.
Komunikat „Couldn't reach AFK AI”
Sprawdź połączenie i kliknij Try again. Wznowi to samo rigowanie.
Model jest za duży
AFK AI przyjmuje modele do 50 MB. Wyeksportuj lżejszy, z mniejszą liczbą wielokątów albo mniejszymi teksturami.
Komunikat „keeps its data in separate files”
To .gltf z plikiem .bin obok. Wyeksportuj zamiast tego .glb.
Klip zapętla się, choć nie powinien
Zaznacz Hero_rigged.fbx, otwórz kartę Animation w Inspectorze, wybierz klip, zmień Loop Time i kliknij Apply.
Po kliknięciu Rig nic się nie dzieje
Najpierw zaznacz .fbx, .glb lub .gltf w oknie Project. Okno podpowiada, czego brakuje.

Pytania

Czy nadal potrzebuję Mixamo?

Nie. Wtyczka dodaje rig do modelu i dostarcza jego animacje w jednym kroku, od razu jako Humanoid. Animacji z Mixamo nadal możesz na nim używać: pobierz je dla dowolnej postaci Humanoid, ustaw je jako Humanoid, a zadziałają na twojej.

Czy pakiet AFK AI trafia do buildu mojej gry?

Nie. Cały jego kod jest w assembly działającym tylko w edytorze. W projekcie zostaje FBX z rigiem, czyli zwykły asset modelu.

Czy działa w Unity 6?

Tak. Działa w Unity 2021.3 i każdej nowszej wersji, łącznie z Unity 6.

Czy mogę dodać rig do modelu .glb albo .gltf w Unity?

Tak. Wtyczka wysyła plik bez zmian, nawet jeśli Unity nie ma importera glTF, który pokazałby go jako model. Wraca FBX, który Unity importuje bez żadnych dodatków. Plik .gltf musi mieć wszystko osadzone w środku; w przeciwnym razie wyeksportuj .glb.

Czy rig nada się do awatara VRChat?

Tak. Człowiek z rigiem jest Humanoidem, z każdym palcem, a właśnie tego potrzebuje VRChat. Poradnik o VRChat opisuje resztę konfiguracji.

Co, jeśli postać jest zwrócona w złą stronę?

Zrób rig ponownie z Facing ustawionym na kąt, o jaki jest obrócona (90°, 180° albo 270°). Auto radzi sobie z większością modeli.

Czy mogę dodawać rig do modeli ze skryptu, dla całego folderu?

Wtyczka obsługuje jeden model naraz. Do pracy wsadowej i pipeline'ów buildów użyj API do riggingu, z wiersza poleceń albo z własnego kodu.

Czy jest też wtyczka do Unreala, Godota albo Blendera?

Tak: Unreal Engine, Godot i Blender mają własne poradniki, a przegląd wszystkich wtyczek AFK AI obejmuje wszystkie dziewięć programów.

Zrób rig i animuj swój model

AI robi jego rig w twojej przeglądarce, a potem odtwarza na nim setki animacji. Pobierz jeden plik GLB do dowolnego silnika.

Zrób rig modelu

Więcej poradników