Endpoint này cho phép bạn tạo một tác vụ mới để áp dụng hoạt ảnh cho một nhân vật đã được rigging trước đó — một hành động dựng sẵn từ thư viện hoạt hình (action_id), nhiều hành động dựng sẵn được gộp vào một tệp (action_ids), hoặc một đoạn chuyển động bạn đã tạo bằng Text to Motion API (motion_task_id). Bao gồm các tùy chọn xử lý hậu kỳ.
Tác vụ chạy ở chế độ nền. Để biết thời gian xử lý thường mất bao lâu, xem Thời Gian Xử Lý.
Tham số
Name
rig_task_id
Type
string
Bắt buộc
Description
id của một tác vụ rigging đã hoàn thành thành công (từ POST /openapi/v1/rigging). Nhân vật từ tác vụ này sẽ được tạo hoạt ảnh.
Name
action_id
Type
integer
Description
Định danh của hành động hoạt ảnh dựng sẵn cần áp dụng. Xem Tài Liệu Tham Khảo Thư Viện Hoạt Hình để biết danh sách đầy đủ các hoạt ảnh có sẵn. Chỉ cung cấp đúng một trong ba: action_id, action_ids hoặc motion_task_id.
Name
action_ids
Type
array of integers
Description
Nhiều hành động hoạt ảnh dựng sẵn được áp dụng cùng lúc, trả về dưới dạng một tệp duy nhất chứa một đoạn hoạt ảnh cho mỗi hành động — hữu ích khi điều khiển nhân vật từ một state machine trong game engine. Cung cấp từ 1 đến 10 giá trị action_id từ Tài Liệu Tham Khảo Thư Viện Hoạt Hình; các id phải là duy nhất. Tốn 3 tín dụng cho mỗi hành động. Chỉ cung cấp đúng một trong ba: action_id, action_ids hoặc motion_task_id.
Truyền action_ids chỉ gồm một phần tử tương đương với việc truyền giá trị đó dưới dạng action_id.
Name
motion_task_id
Type
string
Description
id của một tác vụ Text to Motion đã hoàn thành thành công để áp dụng thay cho một hành động dựng sẵn. Đoạn hoạt ảnh được tạo ra sẽ được retarget vào nhân vật đã rigging và đoạn clip được chụp nhanh (snapshot) tại thời điểm tạo, do đó tác vụ này không bị ảnh hưởng nếu tác vụ nguồn sau đó hết hạn hoặc bị xóa. Các asset của tác vụ nguồn được giữ lại trong 3 ngày — hãy áp dụng đoạn clip trước khi nó hết hạn. Yêu cầu rig dạng hai chân (biped). Chỉ cung cấp đúng một trong ba: action_id, action_ids hoặc motion_task_id.
Name
post_process
Type
object
Description
Tùy chọn xử lý hậu kỳ cho đầu ra hoạt ảnh. Bỏ qua tham số này để nhận các tệp hoạt ảnh tiêu chuẩn.
Chỉ áp dụng khi post_process is set
Name
operation_type
Type
string
Bắt buộc
Description
Loại thao tác cần thực hiện. Các giá trị khả dụng: change_fps, fbx2usdz, extract_armature.
Name
fps
Type
integer
mặc định 30
Description
Tốc độ khung hình mục tiêu. Chỉ áp dụng khi operation_type là change_fps. Các giá trị được phép: 24, 25, 30, 60.
Với action_ids, tác vụ trả về một tệp gộp duy nhất thay vì một tệp cho mỗi hành động: animation_glb_url và animation_fbx_url mỗi cái đều trỏ đến một asset duy nhất chứa mọi hành động được yêu cầu dưới dạng các đoạn clip riêng biệt.
Thứ tự clip: theo thứ tự của mảng action_ids, không phải theo thứ tự số của các id.
Tên clip: tên của hoạt ảnh trong thư viện, khớp với tên bạn nhận được khi xuất tất cả hoạt ảnh của một nhân vật dưới dạng một tệp duy nhất từ ứng dụng web Meshy. Nếu hai id được yêu cầu trùng tên clip, id xuất hiện sau sẽ được gắn thêm hậu tố là action_id của nó để giữ tên duy nhất.
Xử lý hậu kỳ: được áp dụng cho tệp đã gộp, không áp dụng cho từng clip riêng lẻ.
Với motion_task_id, quá trình retarget có thể chỉ tạo ra hoạt ảnh dạng GLB. Nếu bạn đã yêu cầu post_process nhưng không có FBX khả dụng, tác vụ sẽ thất bại với lỗi task_error và tín dụng của bạn sẽ được hoàn lại tự động; nếu không có post_process, tác vụ sẽ thành công và animation_fbx_url sẽ trống.
Giá trị trả về
Thuộc tính result của phản hồi chứa id của tác vụ hoạt ảnh vừa được tạo.
Các trường hợp thất bại
Name
400 - Bad Request
Description
Yêu cầu không hợp lệ. Các nguyên nhân thường gặp:
Thiếu tham số: rig_task_id bị thiếu, hoặc không có tham số nào trong action_id, action_ids và motion_task_id được cung cấp.
Tham số xung đột: nhiều hơn một trong số action_id, action_ids và motion_task_id được cung cấp — chúng loại trừ lẫn nhau.
Tác vụ rig không hợp lệ: rig_task_id không hợp lệ hoặc trỏ đến một tác vụ thất bại/không tồn tại.
ID hành động không hợp lệ: một action_id — hoặc một phần tử của action_ids — không tương ứng với một hoạt ảnh hợp lệ.
Quá nhiều hành động: action_ids chứa nhiều hơn 10 id.
Hành động trùng lặp: action_ids chứa cùng một id nhiều hơn một lần.
Tác vụ motion chưa sẵn sàng: tác vụ motion_task_id chưa đạt trạng thái SUCCEEDED.
Rig không được hỗ trợ: motion_task_id yêu cầu rig dạng hai chân (biped); rig dạng bốn chân (quadruped) sẽ bị từ chối.
Name
401 - Unauthorized
Description
Xác thực thất bại. Vui lòng kiểm tra khóa API của bạn.
Name
402 - Payment Required
Description
Không đủ tín dụng để thực hiện tác vụ này.
Name
404 - Not Found
Description
Không tìm thấy tác vụ rigging được chỉ định bởi rig_task_id, không tìm thấy tác vụ motion được chỉ định bởi motion_task_id, hoặc đoạn clip motion đã hết hạn (các asset của tác vụ nguồn được giữ lại trong 3 ngày).
Name
429 - Too Many Requests
Description
Bạn đã vượt quá giới hạn tốc độ của mình.
Request
POST
/openapi/v1/animations
# Animate a rigged model with required params onlycurlhttps://api.meshy.ai/openapi/v1/animations \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json' \-d'{ "rig_task_id": "018b314a-a1b5-716d-c222-2f1776f7f579", "action_id": 92 }'# Apply several preset actions and get one file with one clip per actioncurlhttps://api.meshy.ai/openapi/v1/animations \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json' \-d'{ "rig_task_id": "018b314a-a1b5-716d-c222-2f1776f7f579", "action_ids": [10, 25, 92] }'# Apply a generated Text to Motion clip instead of a preset actioncurlhttps://api.meshy.ai/openapi/v1/animations \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json' \-d'{ "rig_task_id": "018b314a-a1b5-716d-c222-2f1776f7f579", "motion_task_id": "018c425b-b2c6-727e-d333-3c1887i9h791" }'# With post-processing to change FPScurlhttps://api.meshy.ai/openapi/v1/animations \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json' \-d'{ "rig_task_id": "018b314a-a1b5-716d-c222-2f1776f7f579", "action_id": 92, "post_process": { "operation_type": "change_fps", "fps": 24 } }'
Endpoint này xóa vĩnh viễn một tác vụ hoạt hình, bao gồm tất cả các mô hình và dữ liệu liên quan. Hành động này không thể hoàn tác.
Tham số đường dẫn
Name
id
Type
path
Description
ID của tác vụ hoạt hình cần xóa.
Trạng thái tác vụ
Một tác vụ vẫn còn ở trạng thái PENDING sẽ được xóa và số tín dụng đã
tiêu tốn tại thời điểm tạo sẽ được hoàn lại.
Một tác vụ đã ở trạng thái IN_PROGRESS thì không thể xóa: yêu cầu sẽ bị
từ chối với mã 409 Conflict và tác vụ vẫn tiếp tục chạy. Tín dụng cho
một tác vụ mà worker đã bắt đầu xử lý sẽ không được hoàn lại, vì vậy việc
xóa nó giữa chừng sẽ khiến bạn mất cả tín dụng lẫn kết quả. Hãy đợi cho
đến khi nó đạt trạng thái SUCCEEDED, FAILED hoặc CANCELED, rồi mới
xóa.
Một tác vụ ở trạng thái cuối cùng (SUCCEEDED, FAILED hoặc CANCELED)
sẽ được xóa mà không được hoàn tín dụng.
Giá trị trả về
Trả về 200 OK khi thành công, hoặc 409 Conflict khi tác vụ đang ở
trạng thái IN_PROGRESS.
// 200 OK on success, with an empty body.//// 409 Conflict when the task is IN_PROGRESS — the task is left running:{"message":"Task is IN_PROGRESS and cannot be deleted. Credits for a task the worker has already started are not refundable; wait for it to reach SUCCEEDED, FAILED or CANCELED, then delete it."}
Trả về danh sách có phân trang các tác vụ hoạt hình của người gọi, mới nhất trước. Phân trang tiêu chuẩn thông qua page_num và page_size.
Lưu ý rằng các tác vụ được tạo thông qua API sẽ được quản lý thông qua API — chúng không xuất hiện trong My Assets của ứng dụng web. Hãy sử dụng endpoint này để tìm một tác vụ mà bạn không còn ID của nó.
Đối tượng Animation Task đại diện cho đơn vị công việc áp dụng một hoạt hình cho một nhân vật đã được gắn bộ xương.
Properties
Name
id
Type
string
Description
Mã định danh duy nhất cho tác vụ.
Name
type
Type
string
Description
Loại của tác vụ Animation. Giá trị là animate.
Name
status
Type
string
Description
Trạng thái của tác vụ. Các giá trị có thể có: PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.
Name
progress
Type
integer
Description
Tiến độ của tác vụ (0-100).
Name
created_at
Type
timestamp
Description
Dấu thời gian (mili giây kể từ epoch) khi tác vụ được tạo.
Dấu thời gian đại diện cho số mili giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970 UTC, theo
tiêu chuẩn RFC 3339.
Ví dụ, Thứ Sáu, ngày 1 tháng 9 năm 2023 lúc 12:00:00 PM GMT được biểu diễn là 1693569600000. Điều này áp dụng
cho tất cả các dấu thời gian trong Meshy API.
Name
started_at
Type
timestamp
Description
Dấu thời gian (mili giây kể từ epoch) khi tác vụ bắt đầu xử lý. 0 nếu chưa bắt đầu.
Name
finished_at
Type
timestamp
Description
Dấu thời gian (mili giây kể từ epoch) khi tác vụ hoàn thành. 0 nếu chưa hoàn thành.
Name
expires_at
Type
timestamp
Description
Dấu thời gian (mili giây kể từ epoch) khi các asset kết quả của tác vụ hết hạn.
Name
task_error
Type
object
Description
Chi tiết lỗi cho các tác vụ thất bại. Xem Lỗi để biết đầy đủ tham chiếu đối tượng task_error.
Name
consumed_credits
Type
integer
Description
Số lượng tín dụng đã tiêu thụ bởi tác vụ này. Có mặt khi trạng thái tác vụ là PENDING, IN_PROGRESS, hoặc SUCCEEDED. Trả về 0 đối với các tác vụ FAILED (tín dụng được hoàn lại khi thất bại).
Name
result
Type
object
Description
Chứa các URL hoạt hình đầu ra nếu tác vụ SUCCEEDED.
Name
animation_glb_url
Type
string
Description
URL có thể tải xuống cho hoạt hình ở định dạng GLB. Đối với tác vụ được tạo với action_ids, tệp duy nhất này chứa mọi action được yêu cầu dưới dạng một clip riêng biệt.
Name
animation_fbx_url
Type
string
Description
URL có thể tải xuống cho hoạt hình ở định dạng FBX. Đối với tác vụ được tạo với action_ids, tệp duy nhất này chứa mọi action được yêu cầu dưới dạng một clip riêng biệt.
Name
processed_usdz_url
Type
string
Description
URL có thể tải xuống cho hoạt hình đã xử lý ở định dạng USDZ.
Name
processed_armature_fbx_url
Type
string
Description
URL có thể tải xuống cho bộ xương đã xử lý ở định dạng FBX.
Name
processed_animation_fps_fbx_url
Type
string
Description
URL có thể tải xuống cho hoạt hình với FPS đã thay đổi ở định dạng FBX (ví dụ, nếu thao tác change_fps đã được sử dụng).
Name
preceding_tasks
Type
integer
Description
Số lượng tác vụ đứng trước trong hàng đợi. Chỉ có ý nghĩa nếu trạng thái là PENDING.
Trả về mọi hoạt hình trong thư viện, được sắp xếp theo action_id. Phản hồi là một danh sách đầy đủ chứ không phải một trang, vì vậy chỉ cần một lệnh gọi là đủ để điền dữ liệu cho một bộ chọn hành động. Các bộ lọc sẽ thu hẹp kết quả; bỏ qua tất cả để lấy mọi thứ.
Endpoint này miễn phí — không tiêu tốn tín dụng nào.
Tham số
Name
search
Type
string
Description
So khớp chuỗi con không phân biệt chữ hoa/thường trên name hoặc key. Được so khớp theo nghĩa đen, vì vậy % và _ là các ký tự thông thường chứ không phải ký tự đại diện.
Name
category
Type
string
Description
So khớp chính xác trên category.
Các giá trị khả dụng:
WalkAndRun
BodyMovements
DailyActions
Fighting
Dancing
Name
sub_category
Type
string
Description
So khớp chính xác trên sub_category. Được chấp nhận độc lập — tên sub-category không phải là duy nhất trên các category (Transitioning xuất hiện ở cả Fighting và DailyActions), vì vậy nếu không có category, bộ lọc sẽ khớp với sub-category đó ở bất cứ nơi nào nó xuất hiện.
Name
action_ids
Type
string
Description
Danh sách các giá trị action_id phân tách bằng dấu phẩy để trả về, dùng để xác định các id cụ thể thay vì duyệt xem. Chấp nhận tối đa 200 id. Các id mà không hoạt hình nào mang theo sẽ đơn giản là không xuất hiện trong phản hồi, vì vậy bạn cũng có thể dùng cách này để kiểm tra xem các id bạn đã lưu trữ có còn khả dụng hay không.
Kết hợp các bộ lọc
Các bộ lọc được áp dụng cùng nhau — mỗi bộ lọc sẽ thu hẹp kết quả thêm một bước, vì vậy một hoạt hình chỉ được trả về nếu nó thỏa mãn tất cả các bộ lọc. Trong một bộ lọc đơn lẻ, nhiều giá trị sẽ khớp với bất kỳ giá trị nào trong số đó: search khớp với name hoặc key, và action_ids khớp với bất kỳ id nào trong danh sách.
Điều đó có nghĩa là một tổ hợp không có sự giao nhau sẽ trả về một mảng rỗng thay vì lỗi. Hành động 92 là "Double Combo Attack", một hoạt hình Fighting:
?action_ids=92&category=Fighting trả về hành động 92.
?action_ids=92&category=Dancing trả về [] — đây không phải là hoạt hình Dancing.
?action_ids=92&search=walk trả về [] — tên của nó không khớp với walk.
Để lấy các hoạt hình cụ thể bất kể category của chúng, hãy truyền action_ids một cách độc lập.
Mọi action_id được trả về ở đây đều được chấp nhận bởi Tạo một tác vụ Hoạt hình ở trên, và mọi id được chấp nhận ở đó đều được trả về ở đây. Các hoạt hình đã ngừng sử dụng sẽ không xuất hiện ở cả hai nơi. Nếu bạn lưu bộ nhớ đệm cho thư viện, hãy làm mới nó định kỳ để một id đã ngừng sử dụng không còn tồn tại dai dẳng trong bộ chọn của bạn.
Giá trị cần truyền dưới dạng action_id khi tạo một tác vụ hoạt hình. Duy nhất và ổn định, nhưng không liên tục — các hoạt hình đã ngừng sử dụng để lại khoảng trống trong đánh số, vì vậy đừng bao giờ giả định rằng một dải id nào đó là hợp lệ.
Name
name
Type
string
Description
Nhãn dễ đọc, dùng để hiển thị. Không duy nhất: một số hoạt hình có cùng tên với một biến thể khác, vì vậy hãy dùng action_id hoặc key làm định danh.
Name
key
Type
string
Description
Slug duy nhất và ổn định cho hoạt hình. Hãy dùng nó khi bạn cần một định danh không phải dạng số để làm khóa cho hệ thống lưu trữ của riêng bạn.
Name
category
Type
string
Description
Nhóm cấp cao nhất, ví dụ Fighting.
Name
sub_category
Type
string
Description
Nhóm trong phạm vi category, ví dụ AttackingwithWeapon.
Name
preview_url
Type
string
Description
URL của một ảnh GIF động xem trước hành động, phù hợp để hiển thị trực tiếp trong bộ chọn (picker) của riêng bạn.