Rigging API
Tambahkan kerangka (armature) ke model 3D humanoid dan ikat mesh ke kerangka tersebut, sehingga karakter siap untuk dianimasikan. Untuk menerapkan Animasi ke karakter yang sudah di-rig, lihat Animation API.
Rigging hanya bekerja dengan baik pada karakter humanoid (berkaki dua) standar yang memiliki struktur anggota tubuh dan tubuh yang jelas.
Membuat tugas Rigging
Membuat tugas Rigging untuk model 3D. Ketika tugas berhasil, tugas ini mengembalikan karakter yang sudah di-rig dalam format standar dan, secara opsional, animasi berjalan dan berlari dasar.
Tugas ini berjalan di latar belakang. Untuk mengetahui berapa lama tugas biasanya berlangsung, lihat Waktu pemrosesan.
Rigging tidak cocok untuk model berikut:
- Mesh tanpa tekstur
- Aset non-humanoid
- Aset humanoid dengan struktur anggota tubuh dan badan yang tidak jelas
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"
}
Parameter
- Name
- input_task_id
- Type
- string
- Wajib
- Description
Wajib kecuali Anda mengirim
model_url. ID tugas yang modelnya ingin Anda rig. Meshy mendukung model humanoid bertekstur.Model dapat memiliki paling banyak 380.000 segitiga (quad dihitung sebagai 2), dan model dengan jumlah lebih banyak akan mengembalikan
400. Untuk tetap berada di bawah batas, jalankan Remesh API pada model tersebut terlebih dahulu dengantarget_polycount300000 atau kurang, atau 150000 atau kurang dengantopology: quad.
- Name
- model_url
- Type
- string
- Wajib
- Description
Wajib kecuali Anda mengirim
input_task_id. Model yang akan di-rig, sebagai URL publik atau data URI. Jika Anda mengirim keduanya, Meshy menggunakaninput_task_id.Model harus berupa file GLB (
.glb) berukuran paling banyak 400 MB dari URLhttpatauhttps, atau 100 MB sebagai data URI. Rigging mendukung model humanoid bertekstur.Model dapat memiliki paling banyak 380.000 segitiga (quad dihitung sebagai 2), dan model dengan jumlah lebih banyak akan mengembalikan
400. Untuk tetap berada di bawah batas, jalankan Remesh API pada model tersebut terlebih dahulu dengantarget_polycount300000 atau kurang, atau 150000 atau kurang dengantopology: quad.Wajah karakter harus menghadap ke sumbu +Z, arah hadap standar glTF. Estimasi pose akan gagal untuk model yang menghadap ke sumbu lain.
File di atas 100 MB juga harus mengikuti aturan berikut:
- File dapat memiliki paling banyak 10.000.000 wajah (face). File dengan jumlah lebih banyak akan mengembalikan
400. Meshy menghitung wajah sebagai segitiga, dan mesh yang digambar lebih dari sekali dihitung sekali per salinan. - File tidak boleh menggunakan kompresi Draco.
- File dapat memiliki paling banyak 10.000.000 wajah (face). File dengan jumlah lebih banyak akan mengembalikan
- Name
- height_meters
- Type
- number
- default 1.7
- Description
Perkiraan tinggi karakter, dalam meter. Meshy menggunakannya untuk menskalakan dan me-rig model dengan lebih akurat. Nilai negatif akan mengembalikan
400.
- Name
- texture_image_url
- Type
- string
- ⚠ usang
- Description
Hilangkan parameter ini jika model sudah memiliki tekstur sendiri. Tanpa itu, Meshy menggunakan tekstur yang tertanam dalam file
model_url, atau tekstur dari tugas input. Jika Anda mengirimkannya, gambar ini menjadi satu-satunya tekstur model yang di-rig, dan model kehilangan peta PBR-nya.Tekstur warna dasar model yang di-UV-unwrap, sebagai URL publik atau data URI. Gambar harus berupa file PNG berukuran paling banyak 20 MB. Format gambar lain akan mengembalikan
400.
Hasil yang dikembalikan
Bidang result pada respons menyimpan ID tugas Rigging yang baru.
Mode kegagalan
- Name
400 - Bad Request- Description
Permintaan tidak dapat dijalankan. Pesan kesalahan menyebutkan masalah apa yang ditemukan. Contohnya:
- Parameter hilang: Baik
model_urlmaupuninput_task_idtidak dikirim. - Format model tidak valid: File
model_urlmemiliki ekstensi yang tidak didukung. Hanya.glbyang didukung. - URL tidak dapat dijangkau: Meshy tidak dapat mengunduh file
model_url. - Ukuran file model terlalu besar: File
model_urlberukuran di atas 400 MB dari URLhttpatauhttps, atau di atas 100 MB sebagai data URI. - Terlalu banyak wajah (face): File
model_urlberukuran di atas 100 MB dan memiliki lebih dari 10.000.000 wajah. Kurangi jumlah wajah, lalu kirim file tersebut lagi. - File model tidak dapat dibaca: File
model_urlberukuran di atas 100 MB, dan Meshy tidak dapat membaca headernya. Misalnya, file tersebut adalah GLB yang dikompresi dengan Draco. - Header model terlalu kompleks: File
model_urlberukuran di atas 100 MB, dan headernya memiliki terlalu banyak mesh, node, atau record untuk diperiksa. Kurangi jumlah objek dalam file, lalu kirim lagi. - Gambar terlalu besar: Gambar
texture_image_urlberukuran di atas 20 MB. - Format tekstur tidak valid: Gambar
texture_image_urlbukan file PNG. - Tinggi tidak valid:
height_metersbernilai negatif. - Tugas input tidak valid:
input_task_idtidak merujuk ke tugas API yang valid. - Tugas input belum siap: Tugas
input_task_idbelum mencapai statusSUCCEEDED. Tunggu hingga berhasil, lalu coba lagi. - Jumlah wajah melebihi batas: Model input memiliki lebih dari 380.000 segitiga (quad dihitung sebagai 2). Jalankan Remesh API pada model tersebut dengan
target_polycount300000 atau kurang, atau 150000 atau kurang dengantopology: quad, sebelum me-rig model.
Perbaiki permintaan, lalu kirim lagi. Lihat Kesalahan.
- Parameter hilang: Baik
- Name
401 - Unauthorized- Description
Kunci API hilang atau tidak valid. Periksa header
Authorization.
- Name
402 - Payment Required- Description
Contohnya:
- Kredit tidak cukup: Akun tidak memiliki cukup kredit untuk tugas ini, atau akun telah mencapai batas kredit. Periksa saldo kredit Anda, lalu coba lagi.
- Paket gratis: Membuat tugas memerlukan paket berbayar. Tingkatkan paket Anda di pengaturan langganan, lalu coba lagi.
- Name
403 - Forbidden- Description
input_task_idadalah model relief (bas-relief), yang tidak dapat di-rig oleh endpoint ini. Pesannya adalahThis model type does not support this operation. Kirim model yang berbeda.
- Name
404 - Not Found- Description
Meshy tidak dapat menemukan file dari tugas
input_task_id. Salah satu dari berikut ini berlaku:- Meshy menghapus file tugas setelah
expires_at-nya. Buat tugas tersebut lagi, lalu kirim ID tugas tersebut. - Tugas tersebut tidak memiliki file yang diperlukan untuk rigging, seperti gambar pratinjau, misalnya tugas Konversi. Rig tugas asal file tersebut, atau kirim model sebagai
model_url.
- Meshy menghapus file tugas setelah
- Name
422 - Unprocessable Entity- Description
Estimasi pose gagal. Model mungkin bukan karakter humanoid yang valid. Kirim model karakter humanoid. Untuk
model_url, periksa juga apakah karakter menghadap ke sumbu +Z.
- Name
429 - Too Many Requests- Description
Anda melebihi batas laju. Tunggu, lalu coba lagi. Lihat Batas laju.
Dapatkan task Rigging
Mengembalikan task Rigging berdasarkan ID-nya.
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=..."
}
}
}
Menghapus task Rigging
Menghapus task Rigging secara permanen, termasuk model dan datanya. Anda tidak dapat membatalkan penghapusan.
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."
}
Parameter path
- Name
- id
- Type
- path
- Description
ID dari task yang akan dihapus.
Status task
Menghapus task PENDING akan mengembalikan kredit yang digunakan saat Anda membuatnya.
Task IN_PROGRESS tidak dapat dihapus. Permintaan akan mengembalikan 409 Conflict,
dan task tersebut tetap berjalan. Meshy tidak mengembalikan kredit untuk task yang sudah dimulai,
sehingga menghapusnya akan membuat Anda kehilangan baik kredit maupun hasilnya. Tunggu hingga
mencapai status SUCCEEDED, FAILED, atau CANCELED, baru kemudian hapus.
Menghapus task dengan status akhir (SUCCEEDED, FAILED, atau CANCELED)
tidak akan mengembalikan kreditnya.
Mengembalikan
200 OK saat task berhasil dihapus, atau 409 Conflict saat task
berstatus IN_PROGRESS.
Daftar tugas Rigging
Mengembalikan daftar tugas Rigging Anda secara berpaginasi, dari yang terbaru. Untuk menelusuri halaman daftar, gunakan page_num dan page_size.
Tugas yang Anda buat dengan API tetap berada di API dan tidak muncul di My Assets pada aplikasi web. Untuk menemukan tugas yang ID-nya sudah tidak Anda miliki lagi, gunakan endpoint ini.
Request
curl "https://api.meshy.ai/openapi/v1/rigging?page_num=1&page_size=20" \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Melakukan Streaming Tugas Rigging
Melakukan streaming pembaruan tugas Rigging sebagai 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?..."
}
}
}
Parameter
- Name
- id
- Type
- path
- Description
ID tugas dari respons pembuatan.
Returns
Sebuah stream dari objek tugas Rigging sebagai Server-Sent Events.
Setiap event menyimpan objek tugas lengkap, dengan bentuk yang sama seperti yang dikembalikan oleh endpoint Get. Selama tugas masih PENDING atau IN_PROGRESS, kolom hasilnya belum memiliki nilai.
Objek task Rigging
Objek task Rigging menjelaskan proses rigging untuk satu karakter. Objek ini menyimpan status, progress, dan file output saat task berhasil.
Properties
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 task. Perlakukan sebagai string opaque, dan jangan bergantung pada formatnya.
- Name
- type
- Type
- string
- Description
Jenis task, selalu
rig.
- Name
- status
- Type
- string
- Description
Status task, salah satu dari
PENDING,IN_PROGRESS,SUCCEEDED,FAILED, atauCANCELED.
- Name
- progress
- Type
- integer
- Description
Seberapa banyak task telah selesai, dalam persentase. Nilainya
0hingga task dimulai dan100saat task berhasil.
- Name
- created_at
- Type
- timestamp
- Description
Waktu task dibuat, dalam milidetik Unix.
- Name
- started_at
- Type
- timestamp
- Description
Waktu task dimulai, dalam milidetik Unix. Nilainya
0hingga task dimulai.
- Name
- finished_at
- Type
- timestamp
- Description
Waktu task selesai, dalam milidetik Unix. Nilainya
0hingga task selesai.
- Name
- expires_at
- Type
- timestamp
- Description
Waktu file hasil task kedaluwarsa, dalam milidetik Unix. Setelah waktu ini, Meshy dapat menghapus file tersebut.
- Name
- task_error
- Type
- object
- Description
Detail kesalahan saat task gagal. Nilainya
nullkecuali statusnyaFAILED. Lihat Kesalahan.
- Name
- consumed_credits
- Type
- integer
- Description
Jumlah kredit yang digunakan oleh task. Muncul saat statusnya
PENDING,IN_PROGRESS, atauSUCCEEDED. Nilainya0untuk taskFAILED, karena Meshy mengembalikan kredit saat task gagal.
- Name
- result
- Type
- object
- Description
URL file output. Sampai task berhasil, setiap URL berupa string kosong, dan
basic_animationsbernilainull.- Name
rigged_character_fbx_url- Type
- string
- Description
URL unduhan untuk karakter yang sudah di-rig sebagai file FBX.
- Name
rigged_character_glb_url- Type
- string
- Description
URL unduhan untuk karakter yang sudah di-rig sebagai file GLB.
- Name
basic_animations- Type
- object (optional)
- Description
URL unduhan untuk animasi berjalan dan berlari bawaan.
- Name
walking_glb_url- Type
- string
- Description
- Animasi berjalan dengan skin, sebagai file GLB.
- Name
walking_fbx_url- Type
- string
- Description
- Animasi berjalan dengan skin, sebagai file FBX.
- Name
walking_armature_glb_url- Type
- string
- Description
- Armature animasi berjalan, sebagai file GLB.
- Name
running_glb_url- Type
- string
- Description
- Animasi berlari dengan skin, sebagai file GLB.
- Name
running_fbx_url- Type
- string
- Description
- Animasi berlari dengan skin, sebagai file FBX.
- Name
running_armature_glb_url- Type
- string
- Description
- Armature animasi berlari, sebagai file GLB.
- Name
- preceding_tasks
- Type
- integer
- Description
Jumlah task yang berada di depan task ini dalam antrean. Nilai ini hanya berarti selama task berstatus
PENDING. Kolom ini tidak disertakan saat nilainya0.