API Rigging
Ajoutez un squelette (armature) à un modèle 3D humanoïde et liez le maillage à celui-ci, afin que le personnage soit prêt à être animé. Pour appliquer des animations à un personnage riggé, consultez l'API Animation.
Le rigging fonctionne uniquement avec des personnages humanoïdes standards (bipèdes) possédant une structure corporelle et des membres clairement définis.
Créer une tâche de Rigging
Crée une tâche de Rigging pour un modèle 3D. Lorsque la tâche réussit, elle renvoie un personnage riggé dans des formats standard et, en option, des animations de base de marche et de course.
La tâche s'exécute en arrière-plan. Pour connaître la durée habituelle d'une tâche, consultez Temps de traitement.
Le rigging ne convient pas à ces modèles :
- Maillages non texturés
- Assets non humanoïdes
- Assets humanoïdes dont la structure des membres et du corps n'est pas claire
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"
}
Paramètres
- Name
- input_task_id
- Type
- string
- Requis
- Description
Obligatoire sauf si vous envoyez
model_url. L'ID de la tâche dont vous souhaitez riguer le modèle. Meshy prend en charge les modèles humanoïdes texturés.Le modèle peut comporter au maximum 380 000 triangles (un quadrilatère compte pour 2), et un modèle qui en comporte davantage renvoie
400. Pour rester sous cette limite, exécutez d'abord l'API Remesh sur celui-ci avec untarget_polycountde300000ou moins, ou de150000ou moins avectopology: quad.
- Name
- model_url
- Type
- string
- Requis
- Description
Obligatoire sauf si vous envoyez
input_task_id. Le modèle à riguer, sous forme d'URL publique ou de Data URI. Si vous envoyez les deux, Meshy utiliseinput_task_id.Le modèle doit être un fichier GLB (
.glb) d'au plus 400 Mo provenant d'une URLhttpouhttps, ou de 100 Mo en tant que Data URI. Le rigging prend en charge les modèles humanoïdes texturés.Le modèle peut comporter au maximum 380 000 triangles (un quadrilatère compte pour 2), et un modèle qui en comporte davantage renvoie
400. Pour rester sous cette limite, exécutez d'abord l'API Remesh sur celui-ci avec untarget_polycountde300000ou moins, ou de150000ou moins avectopology: quad.Le visage du personnage doit être orienté vers l'axe +Z, la direction avant standard de glTF. L'estimation de pose échoue pour un modèle orienté vers un autre axe.
Un fichier de plus de 100 Mo doit également respecter ces règles :
- Il peut comporter au maximum 10 000 000 faces. Un fichier qui en comporte davantage renvoie
400. Meshy compte les faces comme des triangles, et un maillage dessiné plusieurs fois compte une fois par copie. - Il ne doit pas utiliser la compression Draco.
- Il peut comporter au maximum 10 000 000 faces. Un fichier qui en comporte davantage renvoie
- Name
- height_meters
- Type
- number
- défaut 1.7
- Description
La taille approximative du personnage, en mètres. Meshy l'utilise pour mettre à l'échelle et riguer le modèle plus précisément. Une valeur négative renvoie
400.
- Name
- texture_image_url
- Type
- string
- ⚠ obsolète
- Description
Ne l'incluez pas lorsque le modèle possède ses propres textures. Sans ce paramètre, Meshy utilise les textures intégrées dans le fichier
model_url, ou les textures de la tâche d'entrée. Si vous l'envoyez, cette image devient l'unique texture du modèle riggé, et le modèle perd ses cartes PBR.La texture de couleur de base dépliée en UV du modèle, sous forme d'URL publique ou de Data URI. L'image doit être un fichier PNG d'au plus 20 Mo. Un autre format d'image renvoie
400.
Résultats
Le champ result de la réponse contient l'ID de la nouvelle tâche de Rigging.
Modes d'échec
- Name
400 - Bad Request- Description
La requête ne peut pas s'exécuter. Le message d'erreur indique le problème détecté. Par exemple :
- Paramètre manquant : ni
model_urlniinput_task_idn'a été envoyé. - Format de modèle invalide : le fichier
model_urla une extension non prise en charge. Seul.glbest pris en charge. - URL inaccessible : Meshy ne parvient pas à télécharger le fichier
model_url. - Fichier modèle trop volumineux : le fichier
model_urldépasse 400 Mo depuis une URLhttpouhttps, ou dépasse 100 Mo en tant que Data URI. - Trop de faces : le fichier
model_urldépasse 100 Mo et comporte plus de 10 000 000 faces. Réduisez le nombre de faces, puis renvoyez le fichier. - Fichier modèle illisible : le fichier
model_urldépasse 100 Mo, et Meshy ne parvient pas à lire son en-tête. Par exemple, il s'agit d'un GLB compressé avec Draco. - En-tête du modèle trop complexe : le fichier
model_urldépasse 100 Mo, et son en-tête comporte trop de maillages, de nœuds ou d'enregistrements à vérifier. Réduisez le nombre d'objets dans le fichier, puis renvoyez-le. - Image trop volumineuse : l'image
texture_image_urldépasse 20 Mo. - Format de texture invalide : l'image
texture_image_urln'est pas un fichier PNG. - Hauteur invalide :
height_metersest négatif. - Tâche d'entrée invalide :
input_task_idne correspond pas à une tâche API valide. - Nombre de faces dépassé : le modèle d'entrée comporte plus de 380 000 triangles (un quadrilatère compte pour 2). Exécutez l'API Remesh sur celui-ci avec un
target_polycountde300000ou moins, ou de150000ou moins avectopology: quad, avant de riguer le modèle.
Corrigez la requête, puis renvoyez-la. Consultez Erreurs.
- Paramètre manquant : ni
- Name
401 - Unauthorized- Description
La clé API est manquante ou invalide. Vérifiez l'en-tête
Authorization.
- Name
402 - Payment Required- Description
Par exemple :
- Crédits insuffisants : le compte ne dispose pas de suffisamment de crédits pour cette tâche, ou le compte a atteint une limite de crédits. Vérifiez votre solde de crédits, puis réessayez.
- Plan gratuit : la création d'une tâche nécessite un plan payant. Mettez à niveau votre plan dans vos paramètres d'abonnement, puis réessayez.
- Name
403 - Forbidden- Description
input_task_idcorrespond à un modèle en bas-relief, que ce point de terminaison ne peut pas riguer. Le message estThis model type does not support this operation. Envoyez un modèle différent.
- Name
422 - Unprocessable Entity- Description
L'estimation de pose a échoué. Le modèle n'est peut-être pas un personnage humanoïde valide. Envoyez un modèle de personnage humanoïde. Pour
model_url, vérifiez également que le personnage est orienté vers l'axe +Z.
- Name
429 - Too Many Requests- Description
Vous avez dépassé votre limite de débit. Patientez, puis réessayez. Consultez Limites de débit.
Récupérer une tâche de rigging
Retourne une tâche de rigging à partir de son ID.
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": {
"message": ""
},
"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=..."
}
},
"preceding_tasks": 0
}
Paramètres
- Name
- id
- Type
- path
- Description
L'ID de la tâche provenant de la réponse de création.
Retours
Supprimer une tâche de Rigging
Supprime définitivement une tâche de Rigging, y compris ses modèles et ses données. Vous ne pouvez pas annuler une suppression.
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."
}
Paramètres de chemin
- Name
- id
- Type
- path
- Description
L'ID de la tâche à supprimer.
Statut de la tâche
La suppression d'une tâche PENDING rembourse les crédits utilisés lors de sa création.
Une tâche IN_PROGRESS ne peut pas être supprimée. La requête renvoie 409 Conflict,
et la tâche continue de s'exécuter. Meshy ne rembourse pas une tâche qui a démarré,
donc la supprimer vous ferait perdre à la fois les crédits et le résultat. Attendez
qu'elle atteigne le statut SUCCEEDED, FAILED ou CANCELED, puis supprimez-la.
La suppression d'une tâche dans un statut final (SUCCEEDED, FAILED ou CANCELED)
ne rembourse pas ses crédits.
Retours
200 OK lorsque la tâche est supprimée, ou 409 Conflict lorsque la tâche est
IN_PROGRESS.
Lister les tâches de Rigging
Renvoie une liste paginée de vos tâches de Rigging, les plus récentes en premier. Pour parcourir la liste, utilisez page_num et page_size.
Les tâches que vous créez avec l'API restent dans l'API et n'apparaissent pas dans Mes assets dans l'application web. Pour retrouver une tâche dont vous n'avez plus l'ID, utilisez ce point de terminaison.
Request
curl "https://api.meshy.ai/openapi/v1/rigging?page_num=1&page_size=20" \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Diffuser une tâche de Rigging en flux
Diffuse les mises à jour d'une tâche de Rigging sous forme d'événements envoyés par le serveur (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": {
"message": ""
},
"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?..."
}
},
"preceding_tasks": 0
}
Paramètres
- Name
- id
- Type
- path
- Description
L'ID de la tâche provenant de la réponse de création.
Retours
Un flux d'objets de tâche de Rigging sous forme d'événements envoyés par le serveur.
Chaque événement contient l'objet de tâche complet, dans le même format que celui renvoyé par le point de terminaison Get. Tant que la tâche est PENDING ou IN_PROGRESS, ses champs de résultat n'ont pas encore de valeurs.
L'objet de tâche de rigging
Un objet de tâche de rigging décrit le rigging d'un personnage. Il contient le statut, la progression, et les fichiers de sortie lorsque la tâche réussit.
Propriétés
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": {
"message": ""
},
"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=..."
}
},
"preceding_tasks": 0
}
- Name
- id
- Type
- string
- Description
L'ID de la tâche. Traitez-le comme une chaîne opaque, et ne vous fiez pas à son format.
- Name
- type
- Type
- string
- Description
Le type de tâche, toujours
rig.
- Name
- status
- Type
- string
- Description
Le statut de la tâche, l'un de
PENDING,IN_PROGRESS,SUCCEEDED,FAILED, ouCANCELED.
- Name
- progress
- Type
- integer
- Description
La progression de la tâche, en pourcentage. Elle est
0jusqu'à ce que la tâche démarre et100lorsqu'elle réussit.
- Name
- created_at
- Type
- timestamp
- Description
Heure de création de la tâche, en millisecondes Unix.
- Name
- started_at
- Type
- timestamp
- Description
Heure de début de la tâche, en millisecondes Unix. Elle est
0jusqu'à ce que la tâche démarre.
- Name
- finished_at
- Type
- timestamp
- Description
Heure de fin de la tâche, en millisecondes Unix. Elle est
0jusqu'à ce que la tâche se termine.
- Name
- expires_at
- Type
- timestamp
- Description
Heure d'expiration des fichiers de résultat de la tâche, en millisecondes Unix. Après cette heure, Meshy peut supprimer les fichiers.
- Name
- task_error
- Type
- object
- Description
Les détails de l'erreur lorsque la tâche échoue. Voir Erreurs.
- Name
- consumed_credits
- Type
- integer
- Description
Le nombre de crédits utilisés par la tâche. Présent lorsque le statut est
PENDING,IN_PROGRESS, ouSUCCEEDED. Il est0pour une tâcheFAILED, car Meshy rembourse les crédits lorsqu'une tâche échoue.
- Name
- result
- Type
- object
- Description
Les URL des fichiers de sortie. Tant que la tâche n'a pas réussi, chaque URL est une chaîne vide, et
basic_animationsestnull.- Name
rigged_character_fbx_url- Type
- string
- Description
URL de téléchargement du personnage riggé sous forme de fichier FBX.
- Name
rigged_character_glb_url- Type
- string
- Description
URL de téléchargement du personnage riggé sous forme de fichier GLB.
- Name
basic_animations- Type
- object (optional)
- Description
URL de téléchargement des animations de marche et de course par défaut.
- Name
walking_glb_url- Type
- string
- Description
- L'animation de marche avec peau, sous forme de fichier GLB.
- Name
walking_fbx_url- Type
- string
- Description
- L'animation de marche avec peau, sous forme de fichier FBX.
- Name
walking_armature_glb_url- Type
- string
- Description
- L'armature de l'animation de marche, sous forme de fichier GLB.
- Name
running_glb_url- Type
- string
- Description
- L'animation de course avec peau, sous forme de fichier GLB.
- Name
running_fbx_url- Type
- string
- Description
- L'animation de course avec peau, sous forme de fichier FBX.
- Name
running_armature_glb_url- Type
- string
- Description
- L'armature de l'animation de course, sous forme de fichier GLB.
- Name
- preceding_tasks
- Type
- integer
- Description
Le nombre de tâches qui précèdent celle-ci dans la file d'attente. La valeur n'a de sens que pendant que la tâche est
PENDING.