API Rigging
Thêm khung xương (bộ xương) vào một mô hình 3D dạng người và gắn lưới vào nó, để nhân vật sẵn sàng để tạo hoạt hình. Để áp dụng hoạt ảnh cho một nhân vật đã được rigging, xem API Hoạt hình.
Rigging chỉ hoạt động tốt với các nhân vật dạng người tiêu chuẩn (hai chân) có cấu trúc chi và cơ thể được xác định rõ ràng.
Tạo một tác vụ Rigging
Tạo một tác vụ Rigging cho một mô hình 3D. Khi tác vụ thành công, nó trả về một nhân vật đã được rig ở các định dạng tiêu chuẩn và, tùy chọn, các hoạt ảnh đi bộ và chạy cơ bản.
Tác vụ chạy ngầm. Để biết thời gian một tác vụ thường mất, xem Thời gian xử lý.
Rigging không phù hợp với các mô hình sau:
- Lưới chưa có texture
- Các asset không phải hình người
- Các asset hình người có cấu trúc chi và cơ thể không rõ ràng
Request
# Rig a model from a URL
curl https://api.meshy.ai/openapi/v1/rigging \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"model_url": "YOUR_MODEL_URL_OR_DATA_URI",
"height_meters": 1.8
}'
Response
{
"result": "018b314a-a1b5-716d-c222-2f1776f7f579"
}
Tham số
- Name
- input_task_id
- Type
- string
- Bắt buộc
- Description
Bắt buộc trừ khi bạn gửi
model_url. ID của tác vụ có mô hình mà bạn muốn rig. Meshy hỗ trợ các mô hình hình người có texture.Mô hình có thể có tối đa 380.000 tam giác (một tứ giác được tính là 2), và một mô hình có nhiều hơn sẽ trả về
400. Để giữ dưới giới hạn này, hãy chạy Remesh API trên đó trước vớitarget_polycountlà300000hoặc thấp hơn, hoặc150000hoặc thấp hơn vớitopology: quad.
- Name
- model_url
- Type
- string
- Bắt buộc
- Description
Bắt buộc trừ khi bạn gửi
input_task_id. Mô hình cần rig, dưới dạng URL công khai hoặc data URI. Nếu bạn gửi cả hai, Meshy sẽ sử dụnginput_task_id.Mô hình phải là một tệp GLB (
.glb) có kích thước tối đa 400 MB từ URLhttphoặchttps, hoặc 100 MB dưới dạng data URI. Rigging hỗ trợ các mô hình hình người có texture.Mô hình có thể có tối đa 380.000 tam giác (một tứ giác được tính là 2), và một mô hình có nhiều hơn sẽ trả về
400. Để giữ dưới giới hạn này, hãy chạy Remesh API trên đó trước vớitarget_polycountlà300000hoặc thấp hơn, hoặc150000hoặc thấp hơn vớitopology: quad.Mặt của nhân vật phải hướng về trục +Z, hướng tiến chuẩn của glTF. Ước lượng tư thế sẽ thất bại đối với một mô hình hướng theo trục khác.
Một tệp trên 100 MB cũng phải tuân theo các quy tắc sau:
- Nó có thể có tối đa 10.000.000 mặt. Một tệp có nhiều hơn sẽ trả về
400. Meshy tính các mặt là tam giác, và một lưới được vẽ nhiều hơn một lần sẽ được tính một lần cho mỗi bản sao. - Nó không được sử dụng nén Draco.
- Nó có thể có tối đa 10.000.000 mặt. Một tệp có nhiều hơn sẽ trả về
- Name
- height_meters
- Type
- number
- mặc định 1.7
- Description
Chiều cao xấp xỉ của nhân vật, tính bằng mét. Meshy sử dụng giá trị này để tỷ lệ và rig mô hình chính xác hơn. Một giá trị âm sẽ trả về
400.
- Name
- texture_image_url
- Type
- string
- ⚠ không dùng nữa
- Description
Bỏ trống khi mô hình đã có texture riêng. Nếu không có giá trị này, Meshy sẽ sử dụng các texture được nhúng trong tệp
model_url, hoặc texture của tác vụ đầu vào. Nếu bạn gửi giá trị này, hình ảnh này sẽ trở thành texture duy nhất của mô hình đã rig, và mô hình sẽ mất các bản đồ PBR.Texture màu cơ bản đã trải UV của mô hình, dưới dạng URL công khai hoặc data URI. Hình ảnh phải là tệp PNG có kích thước tối đa 20 MB. Một định dạng hình ảnh khác sẽ trả về
400.
Giá trị trả về
Trường result trong phản hồi chứa ID của tác vụ Rigging mới.
Các chế độ lỗi
- Name
400 - Bad Request- Description
Yêu cầu không thể chạy. Thông báo lỗi cho biết vấn đề mà nó phát hiện. Ví dụ:
- Thiếu tham số: Không có
model_urlhayinput_task_idnào được gửi. - Định dạng mô hình không hợp lệ: Tệp
model_urlcó phần mở rộng không được hỗ trợ. Chỉ.glbđược hỗ trợ. - URL không thể truy cập: Meshy không thể tải xuống tệp
model_url. - Tệp mô hình quá lớn: Tệp
model_urlvượt quá 400 MB từ URLhttphoặchttps, hoặc vượt quá 100 MB dưới dạng data URI. - Quá nhiều mặt: Tệp
model_urlvượt quá 100 MB và có nhiều hơn 10.000.000 mặt. Giảm số lượng mặt, sau đó gửi lại tệp. - Tệp mô hình không đọc được: Tệp
model_urlvượt quá 100 MB, và Meshy không thể đọc tiêu đề của nó. Ví dụ, đó là một GLB đã nén Draco. - Tiêu đề mô hình quá phức tạp: Tệp
model_urlvượt quá 100 MB, và tiêu đề của nó có quá nhiều lưới, node, hoặc bản ghi cần kiểm tra. Giảm số lượng đối tượng trong tệp, sau đó gửi lại. - Hình ảnh quá lớn: Hình ảnh
texture_image_urlvượt quá 20 MB. - Định dạng texture không hợp lệ: Hình ảnh
texture_image_urlkhông phải là tệp PNG. - Chiều cao không hợp lệ:
height_meterslà số âm. - Tác vụ đầu vào không hợp lệ:
input_task_idkhông trỏ đến một tác vụ API hợp lệ. - Tác vụ đầu vào chưa sẵn sàng: Tác vụ
input_task_idchưa đạt trạng tháiSUCCEEDED. Đợi cho đến khi nó thành công, sau đó thử lại. - Vượt quá số lượng mặt: Mô hình đầu vào có nhiều hơn 380.000 tam giác (một tứ giác được tính là 2). Chạy Remesh API trên đó với
target_polycountlà300000hoặc thấp hơn, hoặc150000hoặc thấp hơn vớitopology: quad, trước khi rig mô hình.
Sửa yêu cầu, sau đó gửi lại. Xem Lỗi.
- Thiếu tham số: Không có
- Name
401 - Unauthorized- Description
Khóa API bị thiếu hoặc không hợp lệ. Kiểm tra header
Authorization.
- Name
402 - Payment Required- Description
Ví dụ:
- Không đủ tín dụng: Tài khoản không có đủ tín dụng cho tác vụ này, hoặc tài khoản đã đạt giới hạn tín dụng. Kiểm tra số dư tín dụng của bạn, sau đó thử lại.
- Gói miễn phí: Tạo một tác vụ yêu cầu gói trả phí. Nâng cấp gói của bạn trong cài đặt đăng ký, sau đó thử lại.
- Name
403 - Forbidden- Description
input_task_idlà một mô hình phù điêu, mà endpoint này không thể rig. Thông báo làThis model type does not support this operation. Gửi một mô hình khác.
- Name
404 - Not Found- Description
Meshy không thể tìm thấy các tệp của tác vụ
input_task_id. Một trong các trường hợp sau áp dụng:- Meshy đã xóa các tệp của tác vụ sau
expires_atcủa nó. Tạo lại tác vụ, sau đó gửi ID của tác vụ đó. - Tác vụ không có bất kỳ tệp nào mà rigging cần, chẳng hạn như hình ảnh xem trước, ví dụ như một tác vụ Convert. Rig tác vụ mà nó bắt nguồn từ đó, hoặc gửi mô hình dưới dạng
model_url.
- Meshy đã xóa các tệp của tác vụ sau
- Name
422 - Unprocessable Entity- Description
Ước lượng tư thế thất bại. Mô hình có thể không phải là một nhân vật hình người hợp lệ. Gửi một mô hình của nhân vật hình người. Đối với
model_url, cũng hãy kiểm tra rằng nhân vật hướng về trục +Z.
- Name
429 - Too Many Requests- Description
Bạn đã vượt quá giới hạn tốc độ. Đợi, sau đó thử lại. Xem Giới hạn tốc độ.
Lấy tác vụ Rigging
Trả về một tác vụ Rigging theo ID của nó.
Request
curl https://api.meshy.ai/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
{
"id": "018b314a-a1b5-716d-c222-2f1776f7f579",
"type": "rig",
"status": "SUCCEEDED",
"created_at": 1747032400453,
"progress": 100,
"started_at": 1747032401314,
"finished_at": 1747032418417,
"expires_at": 1747291618417,
"task_error": null,
"consumed_credits": 5,
"result": {
"rigged_character_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Character_output.fbx?Expires=...",
"rigged_character_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Character_output.glb?Expires=...",
"basic_animations": {
"walking_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin.glb?Expires=...",
"walking_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin.fbx?Expires=...",
"walking_armature_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin_armature.glb?Expires=...",
"running_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin.glb?Expires=...",
"running_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin.fbx?Expires=...",
"running_armature_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin_armature.glb?Expires=..."
}
}
}
Tham số
- Name
- id
- Type
- path
- Description
ID tác vụ từ phản hồi tạo tác vụ.
Giá trị trả về
Xóa một tác vụ Rigging
Xóa vĩnh viễn một tác vụ Rigging, bao gồm các model và dữ liệu của nó. Bạn không thể hoàn tác thao tác xóa.
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
// 200 OK on success, with an empty body.
//
// 409 Conflict when the task is IN_PROGRESS. The task keeps 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."
}
Tham số đường dẫn
- Name
- id
- Type
- path
- Description
ID của tác vụ cần xóa.
Trạng thái tác vụ
Xóa một tác vụ PENDING sẽ hoàn lại số tín dụng đã sử dụng khi bạn tạo tác vụ đó.
Một tác vụ IN_PROGRESS không thể bị xóa. Yêu cầu sẽ trả về 409 Conflict,
và tác vụ vẫn tiếp tục chạy. Meshy không hoàn tín dụng cho một tác vụ đã bắt đầu,
vì vậy việc xóa nó sẽ khiến bạn mất cả tín dụng lẫn kết quả. Hãy đợi cho đến khi
tác vụ đạt trạng thái SUCCEEDED, FAILED, hoặc CANCELED, sau đó mới xóa nó.
Xóa một tác vụ ở trạng thái cuối cùng (SUCCEEDED, FAILED, hoặc CANCELED)
sẽ không hoàn lại tín dụng.
Kết quả trả về
200 OK khi tác vụ được xóa, hoặc 409 Conflict khi tác vụ đang ở trạng thái
IN_PROGRESS.
Liệt kê các tác vụ Rigging
Trả về danh sách phân trang các tác vụ Rigging của bạn, mới nhất trước. Để chuyển qua các trang trong danh sách, hãy dùng page_num và page_size.
Các tác vụ bạn tạo bằng API sẽ ở lại trong API và không xuất hiện trong My Assets trên ứng dụng web. Để tìm một tác vụ mà bạn không còn ID, hãy dùng endpoint này.
Request
curl "https://api.meshy.ai/openapi/v1/rigging?page_num=1&page_size=20" \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Stream a Rigging task
Truyền trực tiếp (stream) các cập nhật của một tác vụ Rigging dưới dạng Server-Sent Events (SSE).
Request
curl -N https://api.meshy.ai/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response Stream
// Error event example
event: error
data: {
"status_code": 404,
"message": "Task not found"
}
// Message event examples illustrate task progress.
// These examples are shortened. Each event holds the full task object.
event: message
data: {
"id": "018b314a-a1b5-716d-c222-2f1776f7f579",
"progress": 0,
"status": "PENDING"
}
event: message
data: {
"id": "018b314a-a1b5-716d-c222-2f1776f7f579",
"progress": 50,
"status": "IN_PROGRESS"
}
event: message
data: { // Example of a SUCCEEDED task event, with the same fields as the Rigging task object
"id": "018b314a-a1b5-716d-c222-2f1776f7f579",
"type": "rig",
"status": "SUCCEEDED",
"created_at": 1747032400453,
"progress": 100,
"started_at": 1747032401314,
"finished_at": 1747032418417,
"expires_at": 1747291618417,
"task_error": null,
"consumed_credits": 5,
"result": {
"rigged_character_fbx_url": "https://assets.meshy.ai/.../Character_output.fbx?...",
"rigged_character_glb_url": "https://assets.meshy.ai/.../Character_output.glb?...",
"basic_animations": {
"walking_glb_url": "https://assets.meshy.ai/.../Animation_Walking_withSkin.glb?...",
"walking_fbx_url": "https://assets.meshy.ai/.../Animation_Walking_withSkin.fbx?...",
"walking_armature_glb_url": "https://assets.meshy.ai/.../Animation_Walking_withSkin_armature.glb?...",
"running_glb_url": "https://assets.meshy.ai/.../Animation_Running_withSkin.glb?...",
"running_fbx_url": "https://assets.meshy.ai/.../Animation_Running_withSkin.fbx?...",
"running_armature_glb_url": "https://assets.meshy.ai/.../Animation_Running_withSkin_armature.glb?..."
}
}
}
Tham số
- Name
- id
- Type
- path
- Description
ID tác vụ từ phản hồi tạo (create response).
Giá trị trả về
Một luồng (stream) các đối tượng tác vụ Rigging dưới dạng Server-Sent Events.
Mỗi sự kiện chứa toàn bộ đối tượng tác vụ, theo cùng cấu trúc mà endpoint Get trả về. Trong khi tác vụ đang ở trạng thái PENDING hoặc IN_PROGRESS, các trường kết quả của nó vẫn chưa có giá trị.
Đối tượng tác vụ Rigging
Một đối tượng tác vụ Rigging mô tả việc rigging của một nhân vật. Nó chứa trạng thái, progress, và các tệp đầu ra khi tác vụ thành công.
Thuộc tính
Example Rigging Task Object
{
"id": "018b314a-a1b5-716d-c222-2f1776f7f579",
"type": "rig",
"status": "SUCCEEDED",
"created_at": 1747032400453,
"progress": 100,
"started_at": 1747032401314,
"finished_at": 1747032418417,
"expires_at": 1747291618417,
"task_error": null,
"consumed_credits": 5,
"result": {
"rigged_character_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Character_output.fbx?Expires=...",
"rigged_character_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Character_output.glb?Expires=...",
"basic_animations": {
"walking_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin.glb?Expires=...",
"walking_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin.fbx?Expires=...",
"walking_armature_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin_armature.glb?Expires=...",
"running_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin.glb?Expires=...",
"running_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin.fbx?Expires=...",
"running_armature_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin_armature.glb?Expires=..."
}
}
}
- Name
- id
- Type
- string
- Description
ID của tác vụ. Hãy coi đây là một chuỗi không minh bạch (opaque), và đừng phụ thuộc vào định dạng của nó.
- Name
- type
- Type
- string
- Description
Loại tác vụ, luôn là
rig.
- Name
- status
- Type
- string
- Description
Trạng thái tác vụ, là một trong các giá trị
PENDING,IN_PROGRESS,SUCCEEDED,FAILED, hoặcCANCELED.
- Name
- progress
- Type
- integer
- Description
Mức độ hoàn thành của tác vụ, tính theo phần trăm. Giá trị là
0cho đến khi tác vụ bắt đầu và100khi tác vụ thành công.
- Name
- created_at
- Type
- timestamp
- Description
Thời điểm tác vụ được tạo, tính bằng mili giây Unix.
- Name
- started_at
- Type
- timestamp
- Description
Thời điểm tác vụ bắt đầu, tính bằng mili giây Unix. Giá trị là
0cho đến khi tác vụ bắt đầu.
- Name
- finished_at
- Type
- timestamp
- Description
Thời điểm tác vụ kết thúc, tính bằng mili giây Unix. Giá trị là
0cho đến khi tác vụ kết thúc.
- Name
- expires_at
- Type
- timestamp
- Description
Thời điểm các tệp kết quả của tác vụ hết hạn, tính bằng mili giây Unix. Sau thời điểm này, Meshy có thể xóa các tệp này.
- Name
- task_error
- Type
- object
- Description
Thông tin chi tiết về lỗi khi tác vụ thất bại. Giá trị là
nulltrừ khi trạng thái làFAILED. Xem Lỗi.
- Name
- consumed_credits
- Type
- integer
- Description
Số lượng tín dụng mà tác vụ đã sử dụng. Có mặt khi trạng thái là
PENDING,IN_PROGRESS, hoặcSUCCEEDED. Giá trị là0đối với tác vụFAILED, vì Meshy sẽ hoàn lại tín dụng khi một tác vụ thất bại.
- Name
- result
- Type
- object
- Description
Các URL tệp đầu ra. Cho đến khi tác vụ thành công, mỗi URL là một chuỗi rỗng, và
basic_animationslànull.- Name
rigged_character_fbx_url- Type
- string
- Description
URL tải xuống cho nhân vật đã được rigging dưới dạng tệp FBX.
- Name
rigged_character_glb_url- Type
- string
- Description
URL tải xuống cho nhân vật đã được rigging dưới dạng tệp GLB.
- Name
basic_animations- Type
- object (optional)
- Description
URL tải xuống cho các hoạt hình đi bộ và chạy mặc định.
- Name
walking_glb_url- Type
- string
- Description
- Hoạt hình đi bộ kèm da (skin), dưới dạng tệp GLB.
- Name
walking_fbx_url- Type
- string
- Description
- Hoạt hình đi bộ kèm da (skin), dưới dạng tệp FBX.
- Name
walking_armature_glb_url- Type
- string
- Description
- Bộ xương của hoạt hình đi bộ, dưới dạng tệp GLB.
- Name
running_glb_url- Type
- string
- Description
- Hoạt hình chạy kèm da (skin), dưới dạng tệp GLB.
- Name
running_fbx_url- Type
- string
- Description
- Hoạt hình chạy kèm da (skin), dưới dạng tệp FBX.
- Name
running_armature_glb_url- Type
- string
- Description
- Bộ xương của hoạt hình chạy, dưới dạng tệp GLB.
- Name
- preceding_tasks
- Type
- integer
- Description
Số lượng tác vụ đứng trước tác vụ này trong hàng đợi. Giá trị này chỉ có ý nghĩa khi tác vụ đang ở trạng thái
PENDING. Trường này sẽ không xuất hiện khi giá trị là0.