Endpoint này cho phép bạn tạo một tác vụ mới để áp dụng hoạt hì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ỳ.
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 hình.
Name
action_id
Type
integer
Description
Định danh của hành động hoạt hì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 hình khả dụng. Chỉ cung cấp đúng một trong ba tham số action_id, action_ids hoặc motion_task_id.
Name
action_ids
Type
array of integers
Description
Nhiều hành động hoạt hì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 hình cho mỗi hành động — hữu ích để điều khiển một nhân vật từ một máy trạng thái (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 tham số action_id, action_ids hoặc motion_task_id.
Truyền action_ids chỉ chứa 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 hình được tạo ra sẽ được ánh xạ lại (retarget) lên nhân vật đã rigging và đoạn hoạt hình đượ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 lưu giữ trong 3 ngày — hãy áp dụng đoạn hoạt hình 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 tham số action_id, action_ids hoặc motion_task_id.
Name
post_process
Type
object
Description
Xử lý hậu kỳ tùy chọn cho đầu ra hoạt hình. Bỏ qua tham số này để nhận các tệp hoạt hì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 hoạt hình riêng biệt.
Thứ tự đoạn hoạt hình: theo thứ tự của mảng action_ids, không phải theo thứ tự số của các id.
Tên đoạn hoạt hình: tên của hoạt hình trong thư viện, khớp với tên bạn nhận được khi xuất tất cả hoạt hình của một nhân vật thành một tệp duy nhất từ ứng dụng web Meshy. Nếu hai id được yêu cầu trùng cùng một tên đoạn hoạt hình, id sau sẽ được thêm hậu tố là action_id của nó để giữ tên là 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 đoạn hoạt hình riêng lẻ.
Với motion_task_id, quá trình retarget có thể tạo ra một hoạt hình chỉ có định dạng GLB. Nếu bạn đã yêu cầu post_process và 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 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 hình vừa được tạo.
Các chế độ lỗi
Name
400 - Bad Request
Description
Yêu cầu không hợp lệ. Các nguyên nhân phổ biến:
Thiếu tham số: rig_task_id bị thiếu, hoặc không có tham số nào trong số action_id, action_ids và motion_task_id được cung cấp.
Tham số xung đột: có 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ệ: action_id — hoặc một phần tử của action_ids — không tương ứng với một hoạt hì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ụ chuyển động chưa sẵn sàng: tác vụ motion_task_id chưa 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ụ chuyển động được chỉ định bởi motion_task_id, hoặc đoạn chuyển động đã hết hạn (các asset của tác vụ nguồn được lưu giữ trong 3 ngày).
Name
429 - Too Many Requests
Description
Bạn đã vượt quá giới hạn tốc độ.
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 đang ở trạng thái PENDING sẽ bị 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ể bị 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, sau đó mới xóa.
Một tác vụ ở trạng thái cuối cùng (SUCCEEDED, FAILED hoặc CANCELED)
sẽ bị xóa mà không được hoàn tiền.
Kết quả 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 đã 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 qua API được quản lý qua API — chúng không xuất hiện trong My Assets của ứng dụng web. 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 hoạt hình cho một nhân vật đã có bộ xương (rigged).
Thuộc tính
Name
id
Type
string
Description
Định danh duy nhất cho tác vụ.
Name
type
Type
string
Description
Loại 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, 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 về đố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 một tác vụ được tạo với action_ids, tệp duy nhất này chứa mọi hành động (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 một tác vụ được tạo với action_ids, tệp duy nhất này chứa mọi hành động (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 đã thay đổi FPS ở đị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, 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 vào bộ chọn hành động. Các bộ lọc thu hẹp kết quả; bỏ qua tất cả để lấy toàn bộ.
Khớp chuỗi con không phân biệt hoa thường trên name hoặc key. Được 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
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
Khớp chính xác trên sub_category. Có thể chấp nhận riêng lẻ — tên sub-category không duy nhất giữa 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 cách nhau bằng dấu phẩy để trả về, dùng để xác định các id cụ thể thay vì duyệt tìm. Chấp nhận tối đa 200 id. Các id mà không có hoạt hình nào mang 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 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 nữa, 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 duy nhất, 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 sự kết hợp không có phần giao nhau sẽ trả về một mảng rỗng thay vì báo 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ề [] — nó 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 mình.
Mọi action_id được trả về ở đây đều được Tạo tác vụ Hoạt hình ở trên chấp nhận, và mọi id mà nó 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 thư viện, hãy làm mới nó định kỳ để id đã ngừng sử dụng không tồn đọng trong bộ chọn của bạn.
Giá trị cần truyền vào 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 các khoảng trống trong dãy số, vì vậy đừng bao giờ cho rằng một dải id 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 nhưng khác biến thể, 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. Sử 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 con trong danh mục, 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 của riêng bạn.