Daha önce iskeletini oluşturduğunuz bir karaktere animasyon uygulayan bir Animasyon görevi oluşturur. Animasyon aşağıdakilerden biri olabilir:
Animasyon kütüphanesinden hazır bir eylem (action_id)
Tek bir dosyada birleştirilmiş birden fazla hazır eylem (action_ids)
Text to Motion API ile oluşturduğunuz bir hareket klibi (motion_task_id)
Çıktıyı ayrıca son işlemden geçirebilirsiniz. Görev arka planda çalışır. Bir görevin genellikle ne kadar sürdüğü hakkında bilgi için bkz. İşlem süreleri.
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 } }'
Response
{"result":"018c425b-b2c6-727e-d333-3c1887i9h791"}
Parametreler
Name
rig_task_id
Type
string
Zorunlu
Description
POST /openapi/v1/rigging çağrısından elde edilen, hangi karakterin canlandırılacağını belirten Rigging görevinin kimliği. Görevin durumu SUCCEEDED olmalıdır.
action_id, action_ids ve motion_task_id parametrelerinden tam olarak birini gönderin.
action_id veya motion_task_id gönderilmedikçe zorunludur. Tekrar olmadan, aynı anda uygulanacak 1 ila 10 hazır animasyonun kimlikleri. 10'dan fazla kimlik veya tekrarlanan bir kimlik 400 döndürür. Kimlikler için Animasyon kütüphanesi referansına bakın.
Meshy, eylem başına bir animasyon klibi içeren tek bir dosya döndürür; bu, bir oyun motorundaki durum makinesine uygundur. Meshy, listedeki her eylem için ücret alır. Bkz. Fiyatlandırma.
Tek bir kimlik içeren bir liste, o kimliği action_id olarak göndermekle aynı şekilde çalışır.
Name
motion_task_id
Type
string
Zorunlu
Description
action_id veya action_ids gönderilmedikçe zorunludur. Hazır bir eylem yerine klibi uygulanacak bir Text to Motion görevinin kimliği. Görevin durumu SUCCEEDED olmalı ve iskelet iki ayaklı (biped) olmalıdır.
Meshy, klibi iskeletlendirilmiş karaktere yeniden hedefler (retarget). Bu görevi oluşturduğunuzda klibi kopyalar, bu nedenle Text to Motion görevi daha sonra sona erse veya onu silseniz bile bu görev etkilenmez. Meshy, Text to Motion görevinin dosyalarını 3 gün boyunca saklar, bu yüzden klibi bu süre dolmadan uygulayın.
Name
post_process
Type
object
Description
Animasyon çıktısı için son işleme. Standart animasyon dosyalarını almak için bunu dışarıda bırakın.
motion_task_id ile, yeniden hedefleme işlemi yalnızca GLB olan bir animasyon üretebilir. post_process gönderirseniz ve kullanılabilir bir FBX dosyası yoksa, görev task_error ile başarısız olur ve Meshy kredilerinizi iade eder. post_process olmadan görev başarılı olur ve animation_fbx_url boş kalır.
Yalnızca şu durumlarda geçerli post_process is set
Name
operation_type
Type
string
Description
Çalıştırılacak işlem. Bu olmadan Meshy ek bir dosya oluşturmaz. Aşağıdaki listede olmayan bir değer 400 döndürür.
Kullanılabilir değerler:
change_fps: kare hızını fps değerine değiştirir
fbx2usdz: animasyonu USDZ'ye dönüştürür
extract_armature: iskeleti bir FBX dosyası olarak çıkarır
Name
fps
Type
integer
varsayılan 30
Description
Değiştirilecek kare hızı; 24, 25, 30 veya 60 değerlerinden biri. Yalnızca operation_type değeri change_fps olduğunda uygulanır. Başka herhangi bir değer 400 döndürür.
action_ids ile görev, eylem başına bir dosya yerine birleştirilmiş tek bir dosya döndürür. animation_glb_url ve animation_fbx_url her biri, istenen her eylemi ayrı bir klip olarak tutan tek bir dosyayı gösterir. Bu dosyada:
Klip sırası: kimliklerin sayısal sırası değil, action_ids dizisinin sırası.
Klip adları: animasyonun kütüphanedeki adı. Bunlar, bir karakterin tüm animasyonlarını Meshy web uygulamasından tek bir dosya olarak dışa aktardığınızda elde ettiğiniz adlarla eşleşir. İstenen iki kimlik aynı klip adına sahipse, Meshy adları benzersiz tutmak için sonraki olana action_id değerini ekler.
Son işleme: Meshy bunu her klibe değil, birleştirilmiş dosyaya uygular.
Dönüş Değerleri
Yanıtın result alanı, yeni Animasyon görevinin kimliğini tutar.
Hata modları
Name
400 - Bad Request
Description
İstek çalıştırılamıyor. Hata mesajı hangi sorunun bulunduğunu belirtir. Örneğin:
Eksik parametre: rig_task_id eksik veya action_id, action_ids ve motion_task_id değerlerinden hiçbiri gönderilmemiş.
Çakışan parametreler: İstek, action_id, action_ids ve motion_task_id değerlerinden birden fazlasını içeriyor. Yalnızca birini gönderin.
Geçersiz rig görevi: rig_task_id geçerli bir görev kimliği değil, bir Rigging görevi değil veya başarıyla tamamlanmamış bir göreve işaret ediyor.
Geçersiz eylem kimliği: Bir action_id veya action_ids içindeki bir öğe geçerli bir animasyon değil.
Çok fazla eylem: action_ids 10'dan fazla kimlik içeriyor.
Yinelenen eylemler: action_ids içinde aynı kimlik birden fazla kez bulunuyor.
Hareket görevi hazır değil: motion_task_id görevi henüz SUCCEEDED durumuna ulaşmadı.
Desteklenmeyen rig: motion_task_id iki ayaklı (biped) bir rig gerektirir ve Meshy dört ayaklı (quadruped) bir rigi reddeder.
API anahtarı eksik veya geçersiz. Authorization başlığını kontrol edin.
Name
402 - Payment Required
Description
Örneğin:
Yetersiz kredi: Hesapta bu görev için yeterli kredi yok veya hesap bir kredi sınırına ulaştı. Kredi bakiyenizi kontrol edip tekrar deneyin.
Ücretsiz plan: Görev oluşturmak için ücretli bir plan gereklidir. Abonelik ayarlarınızdan planınızı yükseltip tekrar deneyin.
Name
403 - Forbidden
Description
rig_task_id görevi, bu uç noktanın canlandıramadığı bir kabartma (bas-relief) modeli. Mesaj This model type does not support this operation şeklindedir. Farklı bir modele rig uygulayın.
Name
404 - Not Found
Description
Meshy, isteğin ihtiyaç duyduğu bir görevi veya dosyayı bulamıyor. Aşağıdakilerden biri geçerlidir:
Meshy, görevleriniz arasında rig_task_id görevini bulamıyor. Kimliği kontrol edin.
Meshy, rig_task_id görevinin dosyalarını expires_at tarihinden sonra sildi. Karakteri yeniden rigleyin.
Meshy, motion_task_id görevini bulamıyor. Kimliği kontrol edin.
Hareket klibinin süresi doldu, çünkü Meshy bir Text to Motion görevinin dosyalarını yalnızca 3 gün boyunca saklar. Başka bir Text to Motion görevi oluşturun.
Name
429 - Too Many Requests
Description
Hız sınırınızı aştınız. Bekleyin, ardından tekrar deneyin. Bkz. Hız sınırları.
// 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."}
Yol parametreleri
Name
id
Type
path
Description
Silinecek görevin ID'si.
Görev durumu
PENDING durumundaki bir görevi silmek, onu oluştururken kullanılan kredileri iade eder.
IN_PROGRESS durumundaki bir görev silinemez. İstek 409 Conflict döndürür
ve görev çalışmaya devam eder. Meshy, başlamış olan bir görev için iade yapmaz,
bu nedenle onu silmek size hem kredileri hem de sonucu kaybettirir. Görevin
SUCCEEDED, FAILED veya CANCELED durumuna ulaşmasını bekleyin, ardından silin.
Son bir durumdaki (SUCCEEDED, FAILED veya CANCELED) bir görevi silmek
kredilerini iade etmez.
Dönüş değerleri
Görev silindiğinde 200 OK, görev IN_PROGRESS durumundayken ise
409 Conflict döner.
Animasyon görevlerinizin, en yeniden en eskiye sıralanmış, sayfalanmış bir listesini döndürür. Liste boyunca sayfalar arasında gezinmek için page_num ve page_size kullanın.
API üzerinden oluşturduğunuz görevler web uygulamasındaki My Assets bölümünde görünmez, bu yüzden bunları API üzerinden yönetirsiniz. Artık kimliğine sahip olmadığınız bir görevi bulmak için bu uç noktayı kullanın.
// Error event exampleevent: errordata: {"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: messagedata: {"id": "018c425b-b2c6-727e-d333-3c1887i9h791","progress": 0,"status": "PENDING"}event: messagedata: {"id": "018c425b-b2c6-727e-d333-3c1887i9h791","progress": 50,"status": "IN_PROGRESS"}event: messagedata: { // Example of a SUCCEEDED task stream item, with the same structure as the Animation task object"id": "018c425b-b2c6-727e-d333-3c1887i9h791","type": "animate","status": "SUCCEEDED","created_at": 1747032440896,"progress": 100,"started_at": 1747032441210,"finished_at": 1747032457530,"expires_at": 1747291657530,"task_error": null,"consumed_credits": 3,"result": {"animation_glb_url":"https://assets.meshy.ai/.../Animation_Reaping_Swing_withSkin.glb?...","animation_fbx_url":"https://assets.meshy.ai/.../Animation_Reaping_Swing_withSkin.fbx?...","processed_usdz_url":"https://assets.meshy.ai/.../processed.usdz?...","processed_armature_fbx_url":"https://assets.meshy.ai/.../processed_armature.fbx?...","processed_animation_fps_fbx_url":"https://assets.meshy.ai/.../processed_60fps.fbx?..." }}
Her olay, Get uç noktasının döndürdüğü ile aynı şekilde, tam görev nesnesini tutar. Görev PENDING veya IN_PROGRESS durumundayken, sonuç alanlarının henüz değeri yoktur.
Bir Animasyon görev nesnesi, rigli bir karaktere uygulanan bir animasyonu tanımlar. Görev başarılı olduğunda durumu, progress'i ve animasyon dosyalarını tutar.
Görevin başladığı zaman, Unix milisaniye cinsinden. Görev başlayana kadar 0'dır.
Name
finished_at
Type
timestamp
Description
Görevin bittiği zaman, Unix milisaniye cinsinden. Görev bitene kadar 0'dır.
Name
expires_at
Type
timestamp
Description
Görevin sonuç dosyalarının süresinin dolacağı zaman, Unix milisaniye cinsinden.
Name
task_error
Type
object
Description
Görev başarısız olduğunda hata ayrıntıları. Durum FAILED olmadığı sürece null'dır. Bkz. Hatalar.
Name
consumed_credits
Type
integer
Description
Görevin kullandığı kredi sayısı. Durum PENDING, IN_PROGRESS veya SUCCEEDED olduğunda mevcuttur. FAILED bir görev için 0'dır, çünkü Meshy bir görev başarısız olduğunda kredileri iade eder.
Name
result
Type
object
Description
Görev SUCCEEDED durumuna sahip olduğunda, animasyon dosyaları için indirme URL'leri.
Name
animation_glb_url
Type
string
Description
Animasyonun GLB dosyası olarak hali. action_ids ile oluşturulan bir görev için, bu tek dosya istenen her aksiyonu ayrı bir klip olarak tutar.
Name
animation_fbx_url
Type
string
Description
Animasyonun FBX dosyası olarak hali. action_ids ile oluşturulan bir görev için, bu tek dosya istenen her aksiyonu ayrı bir klip olarak tutar.
Name
processed_usdz_url
Type
string
Description
İşlenmiş animasyonun USDZ dosyası olarak hali.
Name
processed_armature_fbx_url
Type
string
Description
İşlenmiş iskeletin FBX dosyası olarak hali.
Name
processed_animation_fps_fbx_url
Type
string
Description
Örneğin change_fps işlemini kullandığınızda, değiştirilmiş kare hızındaki animasyonun FBX dosyası olarak hali.
Name
preceding_tasks
Type
integer
Description
Kuyrukta bu görevden önce bulunan görev sayısı. Bu değer yalnızca görev PENDING durumundayken anlamlıdır. Değer 0 olduğunda bu alan dahil edilmez.
Kütüphanedeki her animasyonu, action_id değerine göre sıralanmış şekilde döndürür. Yanıt, sayfalama olmadan tam listedir; böylece tek bir çağrı bir eylem seçiciyi doldurabilir. Filtreler sonucu daraltır. Tüm animasyonları almak için hepsini boş bırakın.
Aranacak metin. Meshy, büyük/küçük harf farkı gözetmeksizin name veya key alanı bu metni içeren animasyonları döndürür. Meshy metni birebir eşleştirir, bu yüzden % ve _ joker karakter değildir.
Name
category
Type
string
Description
Birebir eşleşme olarak listelenecek kategori. Bilinmeyen bir kategori boş bir liste döndürür.
Kullanılabilir değerler:
WalkAndRun
BodyMovements
DailyActions
Fighting
Dancing
Name
sub_category
Type
string
Description
Birebir eşleşme olarak listelenecek alt kategori. Bunu category olmadan da gönderebilirsiniz. Alt kategori adları kategoriler arasında benzersiz değildir. Örneğin, Transitioning hem Fighting hem de DailyActions altında yer alır. Bu yüzden category olmadan, bu filtre her kategorideki alt kategoriyle eşleşir.
Name
action_ids
Type
string
Description
Döndürülecek animasyonlar, virgülle ayrılmış en fazla 200 action_id değeri olarak belirtilir. Göz atmak yerine belirli ID'leri aramak için kullanın. 200'den fazla ID gönderilirse 400 döner.
Yanıt, hiçbir animasyonun sahip olmadığı bir ID'yi dışarıda bırakır. Bu yüzden bu filtreyi, sakladığınız ID'lerin hâlâ kullanılabilir olup olmadığını kontrol etmek için de kullanabilirsiniz.
Filtreleri birleştirme
Meshy filtreleri birlikte uygular. Her biri sonucu daraltır, bu yüzden Meshy bir animasyonu yalnızca hepsiyle eşleştiğinde döndürür. Tek bir filtre içinde, değerlerinden herhangi biri eşleşebilir. Örneğin, searchname veya key ile eşleşir, action_ids ise listedeki herhangi bir ID ile eşleşir.
Bu yüzden örtüşme olmayan bir kombinasyon, hata değil boş bir dizi döndürür. 92 eylemi, bir Fighting animasyonu olan "Double Combo Attack"tır. Örneğin:
Bir Animasyon görevi oluştur, bu uç noktanın döndürdüğü her action_id değerini kabul eder ve bu uç nokta, oluşturma işleminin kabul ettiği her ID'yi döndürür. Her ikisi de kullanımdan kaldırılmış animasyonları içermez. Kütüphaneyi önbelleğe alıyorsanız, zaman zaman yenileyin; böylece kullanımdan kaldırılmış bir ID seçicinizde kalmaz.
Bir Animasyon görevi oluştururken action_id olarak gönderilecek değer. Benzersiz ve sabittir, ancak ardışık değildir. Kullanımdan kaldırılan animasyonlar numaralandırmada boşluklar bırakır, bu yüzden bir aralıktaki her ID'nin geçerli olduğunu varsaymayın.
Name
name
Type
string
Description
Animasyonun görünen adı. Bazı animasyonlar başka bir varyantla aynı adı paylaştığından benzersiz değildir. Bir animasyonu tanımlamak için action_id veya key kullanın.
Name
key
Type
string
Description
Animasyon için benzersiz, sabit bir slug. Kendi depolamanızı anahtarlamak için sayısal olmayan bir ID'ye ihtiyacınız olduğunda bunu kullanın.
Name
category
Type
string
Description
Üst düzey grup, örneğin Fighting.
Name
sub_category
Type
string
Description
Kategori içindeki grup, örneğin AttackingwithWeapon.
Name
preview_url
Type
string
Description
Hareketin animasyonlu GIF önizlemesinin URL'si. Bunu doğrudan kendi seçicinizde gösterebilirsiniz.