Hướng dẫnCách làm8 phút đọc

Rig tự động mọi model 3D ngay trong Unity: Sẵn sàng cho Humanoid, kèm các clip animation

Chọn model trong cửa sổ Project và bấm Rig. Một phút sau, file FBX đã rig nằm ngay cạnh, thiết lập sẵn kiểu Humanoid, mỗi animation là một 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
Hình vẽ mô phỏng plugin, không phải ảnh chụp màn hình: cửa sổ AFK AI khi đang rig Hero.fbx, và cửa sổ Project sau đó, với Hero_rigged.fbx được thiết lập kiểu Humanoid và các clip lặp được đánh dấu.

Cách quen thuộc để cho nhân vật chuyển động trong Unity là đi qua Mixamo. Bạn xuất FBX, tải lên, đặt điểm đánh dấu ở cằm, cổ tay, khuỷu tay và đầu gối, tải từng animation về một, rồi đặt từng file thành Humanoid và tick Loop Time cho từng clip. Mà cách này chỉ dùng được cho nhân vật dạng người.

Package AFK AI làm việc đó từ một cửa sổ ngay trong Unity editor. Chọn model trong cửa sổ Project và bấm Rig. Khoảng một phút sau, Hero_rigged.fbx nằm cạnh Hero.fbx, đã thiết lập sẵn kiểu Humanoid, mỗi animation là một clip, các clip đi và đứng chờ đã được đặt lặp.

Mixamo hay AFK AI trong Unity

Mixamo miễn phí và có thư viện animation dạng người rất lớn. AFK AI giúp bạn khỏi chạy tới chạy lui, rig được cả động vật lẫn đạo cụ, và mang về tới 593 animation cho nhân vật dạng người trong một file. Tài khoản miễn phí nhận các animation miễn phí, còn một gói mở khóa phần còn lại.

MixamoAFK AI trong Unity
Ở đâuMột trang web: tải lên, rig, tải vềMột cửa sổ trong Unity editor
Bạn làm gìĐặt điểm đánh dấu ở cằm, cổ tay, khuỷu tay, đầu gối và hángChọn kiểu cơ thể, bấm Rig
Kiểu cơ thểChỉ dạng ngườiDạng người và 14 kiểu cơ thể khác
AnimationTải về từng cái mộtMọi animation của kiểu cơ thể, trong một file FBX
Thiết lập trong UnityLàm tay: Humanoid, rồi Loop Time cho từng clipXong sẵn: Humanoid, mỗi animation một clip, đã bật lặp
Đăng nhậpTài khoản AdobeTài khoản afk.ai, bằng Google

Cài package

  1. Tải package từ trang plugin Unity: một file .tgz. Để nó ở một chỗ cố định bên ngoài dự án, vì Unity đọc package từ chính file đó.
  2. Trong Unity, mở Window > Package Manager, bấm + ở góc trên bên trái và chọn Add package from tarball....
  3. Chọn file .tgz vừa tải về. Đừng giải nén.
  4. Mở Window > AFK AI. Dock cửa sổ ở đâu bạn thích.

Package chạy trên Unity 2021.3 trở lên, kể cả Unity 6, với cả pipeline Built-in, URP lẫn HDRP: plugin chỉ đụng tới khâu nhập model. Toàn bộ code của nó chỉ chạy trong editor, nên không có gì lọt vào game của bạn.

Đăng nhập

  1. Trong cửa sổ AFK AI, bấm Sign in. Trình duyệt mở trang đăng nhập của afk.ai; đăng nhập bằng Google.
  2. Trình duyệt báo "You're signed in". Đóng tab và quay lại Unity: cửa sổ hiện email của bạn và số lượt rig còn lại trong tháng.

Nếu trình duyệt không quay lại được Unity (một số phần mềm bảo mật chặn việc này), afk.ai sẽ hiện mã đăng nhập. Mở I have a sign-in code trong cửa sổ AFK AI, dán mã và bấm Use code.

Thông tin đăng nhập được lưu trong thiết lập riêng của Unity cho tài khoản người dùng của bạn trên máy này, không bao giờ nằm trong dự án, nên không bị chia sẻ theo khi bạn chia sẻ hay commit dự án.

Rig một model

  1. Trong cửa sổ Project, chọn model: một file .fbx, .glb hoặc .gltf tối đa 50 MB. Model đã đặt vào scene cũng được: plugin gửi file gốc của nó. Unity chỉ hiện file .glb thành model khi đã cài glTF importer, nhưng plugin vẫn gửi được dù có hay không.
  2. Trong cửa sổ AFK AI, đặt Body type: human cho người và mọi thứ đi bằng hai chân, hoặc loài động vật hay sinh vật tương ứng.
  3. Để nguyên All animations, hoặc chọn Rig only nếu chỉ cần bộ xương. Để Facing ở Auto.
  4. Bấm Rig. Cửa sổ hiện tiến độ: tải lên, chờ, rig, thêm animation, tải về. Bạn vẫn làm việc tiếp được, và đóng cửa sổ cũng không làm nó dừng.

Khi xong, Hero_rigged.fbx được lưu cạnh Hero.fbx, được chọn và tô sáng trong cửa sổ Project. File gốc không bị đụng tới.

Unity nhận được gì

  • Humanoid: nhân vật người được nhập thành rig Humanoid với Avatar riêng (Hero_riggedAvatar), nên dùng chung animation được với mọi nhân vật Humanoid khác, theo cả hai chiều. Unity tự ghép xương vào các vị trí Humanoid, kể cả ngón tay.
  • Generic: mọi kiểu cơ thể khác, từ cáo đến rồng, được nhập thành rig Generic.
  • Clip: mỗi animation là một clip riêng, đặt tên như trên afk.ai: Idle_A, Walk, Jog, Sprint, Jump_Start, Sword_Attack, v.v.
  • Lặp: các clip có tên cho thấy chúng lặp lại (idle, walk, run, fly, swim và tương tự) được bật Loop Time. Các clip chạy một lần như Jump_Start, Sword_Attack hay Death_A chỉ phát một lần.
  • Root motion: các clip có tên kết thúc bằng _RM (Roll_RM, Dodge_left_RM) tự đẩy nhân vật đi tới; số còn lại phát tại chỗ.

Nếu Unity không ghép được bộ xương vào các xương Humanoid, plugin sẽ thiết lập model thành Generic và cho biết lý do. Animation vẫn phát bình thường; chỉ là không dùng chung được với các nhân vật Humanoid khác.

Nhân vật anime ở T-pose, các khớp afk.ai đã đặt hiện thành chấm, đến tận các ngón tay
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 ... (bên phải cũng vậy)    └ thigh_l      └ calf_l        └ foot_l          └ ball_l    └ thigh_r ... (bên phải cũng vậy)
Bộ xương hình người mà mọi bản rig của afk.ai đều có: 66 xương, với ba khớp ở mỗi ngón tay và ngón cái, được đặt tên theo cách mannequin của Unreal Engine đặt.

Thiết lập Animator

Một blend tree chuyển từ đứng chờ sang đi, chạy bộ rồi chạy nước rút khi nhân vật tăng tốc, cộng thêm một chiêu kiếm gắn vào một nút bấm:

  1. Kéo Hero_rigged.fbx vào scene. Nó đã có sẵn Animator kèm Avatar. Thêm Character Controller cho nó, và tắt Apply Root Motion trên Animator (script sẽ lo việc di chuyển).
  2. Trong cửa sổ Project, chọn Create > Animator Controller (trong Unity 6 là Create > Animation > Animator Controller), đặt tên Hero, rồi kéo nó vào ô Controller của Animator.
  3. Mở nó (Window > Animation > Animator). Trong Parameters, thêm một Float tên Speed và một Trigger tên Attack.
  4. Bấm chuột phải vào graph, chọn Create State > From New Blend Tree. Bấm đúp vào nó, đặt tham số là Speed, rồi thêm bốn motion: Idle_A, Walk, Jog và Sprint từ Hero_rigged.fbx (bấm vào mũi tên của file trong cửa sổ Project để thấy các clip). Tắt Automate Thresholds và đặt ngưỡng bằng các tốc độ nhân vật di chuyển, ví dụ 0, 1.5, 3.5 và 6.
  5. Quay lại Base Layer, kéo clip Sword_Attack vào. Tạo một transition từ blend tree sang clip đó với điều kiện Attack và tắt Has Exit Time để nó bắt đầu ngay, rồi tạo một transition quay về blend tree với Has Exit Time bật.
  6. Gắn script này vào nhân vật:
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);
    }
}

Bấm Play: nhân vật đứng chờ, đi, chạy bộ và chạy nước rút theo cần analog hoặc phím mũi tên, và vung kiếm khi bạn bấm chuột.

EntryLocomotionBlend Tree · Idle_A, Walk, Jog, Sprint↓ Attack↑ Has Exit TimeSword_Attack
Hình vẽ: Animator Controller. Blend tree Locomotion chuyển từ Idle_A đến Sprint theo Speed; trigger Attack phát Sword_Attack, xong thì quay về.

Dùng chung animation với nhân vật khác

Vì nhân vật người đã rig là Humanoid, Unity sẽ retarget giúp bạn. Thả bất kỳ clip Humanoid nào lên nó, từ Asset Store hay thư viện của riêng bạn, và clip sẽ phát. Ngược lại, các clip của nó cũng phát được trên mọi nhân vật Humanoid bạn đang có: kéo clip Sprint của Hero_rigged.fbx vào Animator Controller của nhân vật khác và nhân vật đó sẽ chạy.

Động vật và sinh vật là Generic, nên clip của chúng phát trên bộ xương của chính chúng. Tuy vậy, mọi model được AFK AI rig cùng một kiểu cơ thể đều có cùng tên xương và tên animation, nên Animator Controller của một con cáo điều khiển được mọi con cáo khác mà bạn rig.

Động vật, sinh vật và đạo cụ

Chọn kiểu cơ thể trong cửa sổ trước khi bấm Rig: fox cho chó, mèo và sói, horse cho mọi loài có móng guốc, bird, dragon, kaiju cho khủng long, spider, insect, snake, fish, kangaroo, frog, turtle, ghost, hoặc object cho đạo cụ nảy, xoay và rung lắc. Mỗi kiểu có bộ xương làm riêng cho cơ thể đó và animation làm riêng cho bộ xương đó, được nhập thành rig Generic với các clip và vòng lặp thiết lập sẵn như trên. Hướng dẫn về động vật liệt kê những gì đi kèm mỗi kiểu.

  • Rồng
  • Bốn chân
  • Có móng guốc
  • Khủng long
  • Nhện
  • Cá
Sáu trong số các kiểu cơ thể khác, được rig trên afk.ai/rig và phát các hoạt ảnh riêng của chúng.

Thế nào thì tính là một lượt rig

Mỗi lần bấm Rig được AFK AI nhận là dùng một lượt rig của tháng này, giống như rig trên afk.ai/rig hay trong bất kỳ plugin AFK AI nào khác. Lần rig thất bại thì không bị tính. Stop waiting chỉ dừng việc chờ trong Unity, còn việc rig vẫn tiếp tục và vẫn bị tính. Nếu mất kết nối, Try again sẽ tiếp tục đúng lượt rig đó, và không bao giờ bị tính hai lần. Khi hết lượt, cửa sổ hiện See plans, mở ra các gói của afk.ai.

Khi có trục trặc

Trình duyệt không quay lại được sau khi đăng nhập
Dùng I have a sign-in code.
Không kết nối được với AFK AI
Kiểm tra kết nối mạng, rồi bấm Try again. Nó sẽ tiếp tục đúng lượt rig đó.
Model quá lớn
AFK AI nhận model tối đa 50 MB. Xuất một bản nhẹ hơn, ít polygon hơn hoặc texture nhỏ hơn.
"keeps its data in separate files"
File .gltf có file .bin đi kèm bên cạnh. Hãy xuất .glb thay thế.
Một clip bị lặp khi không nên lặp
Chọn Hero_rigged.fbx, mở tab Animation trong Inspector, chọn clip, đổi Loop Time rồi bấm Apply.
Bấm Rig mà không có gì xảy ra
Chọn trước một file .fbx, .glb hoặc .gltf trong cửa sổ Project. Cửa sổ sẽ cho biết còn thiếu gì.

Câu hỏi thường gặp

Tôi có còn cần Mixamo không?

Không. Plugin rig model và mang animation về trong một bước, thiết lập sẵn kiểu Humanoid. Bạn vẫn dùng được animation của Mixamo cho nó: tải chúng về cho một nhân vật Humanoid bất kỳ, đặt thành Humanoid, và chúng sẽ phát trên nhân vật của bạn.

Package AFK AI có lọt vào bản build game không?

Không. Toàn bộ code của nó nằm trong một assembly chỉ dành cho editor. Thứ ở lại trong dự án là file FBX đã rig, một asset model bình thường.

Package có chạy trên Unity 6 không?

Có. Nó chạy trên Unity 2021.3 và mọi phiên bản sau đó, kể cả Unity 6.

Tôi có rig được model .glb hay .gltf trong Unity không?

Được. Plugin gửi nguyên file như nó vốn có, kể cả khi Unity không có glTF importer để hiện nó thành model. Thứ trả về là một file FBX, Unity nhập được mà không cần cài thêm gì. File .gltf phải nhúng sẵn mọi thứ; nếu không, hãy xuất .glb.

Bộ rig có dùng được cho avatar VRChat không?

Được. Nhân vật người đã rig là Humanoid, có đủ từng ngón tay, đúng thứ VRChat cần. Hướng dẫn VRChat trình bày phần thiết lập còn lại.

Nếu nhân vật quay mặt sai hướng thì sao?

Rig lại với Facing đặt đúng góc mà model đang bị xoay (90°, 180° hoặc 270°). Với phần lớn model, Auto tự xác định được.

Tôi có rig model bằng script, cho cả một thư mục được không?

Plugin rig từng model một. Với việc rig hàng loạt và build pipeline, hãy dùng API rig, từ dòng lệnh hoặc từ code của bạn.

Có plugin cho Unreal, Godot hay Blender không?

Có: Unreal Engine, Godot và Blender đều có hướng dẫn riêng, và tổng quan về mọi plugin AFK AI bao quát cả chín ứng dụng.

Rig và tạo hoạt ảnh cho mô hình của bạn

AI rig mô hình ngay trên trình duyệt của bạn, rồi hàng trăm hoạt ảnh phát trên đó. Tải xuống một file GLB cho mọi engine.

Rig mô hình

Hướng dẫn khác