Rigging API
Fügen Sie einem humanoiden 3D-Modell ein Skelett (Armature) hinzu und binden Sie das Netz daran, sodass der Charakter animationsbereit ist. Um Animationen auf einen geriggten Charakter anzuwenden, siehe die Animation API.
Rigging funktioniert nur gut mit standardmäßigen humanoiden (zweibeinigen) Charakteren, die eine klar definierte Gliedmaßen- und Körperstruktur haben.
Rigging-Task erstellen
Erstellt einen Rigging-Task für ein 3D-Modell. Wenn der Task erfolgreich abgeschlossen wird, liefert er einen gerigten Charakter in Standardformaten und optional grundlegende Geh- und Lauf-Animationen zurück.
Der Task läuft im Hintergrund. Wie lange ein Task üblicherweise dauert, erfahren Sie unter Verarbeitungszeiten.
Rigging ist für folgende Modelle nicht geeignet:
- Netze ohne Textur
- Nicht-humanoide Assets
- Humanoide Assets mit unklarer Gliedmaßen- und Körperstruktur
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
- Erforderlich
- Description
Erforderlich, sofern nicht
model_urlgesendet wird. Die ID des Tasks, dessen Modell geriggt werden soll. Meshy unterstützt texturierte humanoide Modelle.Das Modell darf höchstens 380.000 Dreiecke aufweisen (ein Viereck zählt als 2), bei mehr liefert die Anfrage
400zurück. Um unter dem Limit zu bleiben, führen Sie zuerst die Remesh-API mit einemtarget_polycountvon höchstens300000aus, oder höchstens150000mittopology: quad.
- Name
- model_url
- Type
- string
- Erforderlich
- Description
Erforderlich, sofern nicht
input_task_idgesendet wird. Das zu riggende Modell, als öffentliche URL oder als Data URI. Wenn Sie beides senden, verwendet Meshyinput_task_id.Das Modell muss eine GLB-Datei (
.glb) mit höchstens 400 MB sein, wenn es über einehttp- oderhttps-URL bereitgestellt wird, bzw. höchstens 100 MB als Data URI. Rigging unterstützt texturierte humanoide Modelle.Das Modell darf höchstens 380.000 Dreiecke aufweisen (ein Viereck zählt als 2), bei mehr liefert die Anfrage
400zurück. Um unter dem Limit zu bleiben, führen Sie zuerst die Remesh-API mit einemtarget_polycountvon höchstens300000aus, oder höchstens150000mittopology: quad.Das Gesicht des Charakters muss zur +Z-Achse zeigen, der standardmäßigen Vorwärtsrichtung in glTF. Bei einem Modell, das in eine andere Richtung blickt, schlägt die Posenschätzung fehl.
Für eine Datei über 100 MB gelten zusätzlich folgende Regeln:
- Sie darf höchstens 10.000.000 Flächen aufweisen. Bei mehr liefert die Anfrage
400zurück. Meshy zählt Flächen als Dreiecke, und ein mehrfach gezeichnetes Netz wird pro Kopie einmal gezählt. - Sie darf keine Draco-Kompression verwenden.
- Sie darf höchstens 10.000.000 Flächen aufweisen. Bei mehr liefert die Anfrage
- Name
- height_meters
- Type
- number
- Standard 1.7
- Description
Die ungefähre Körpergröße des Charakters in Metern. Meshy nutzt diesen Wert, um das Modell präziser zu skalieren und zu riggen. Ein negativer Wert liefert
400zurück.
- Name
- texture_image_url
- Type
- string
- ⚠ veraltet
- Description
Lassen Sie diesen Parameter weg, wenn das Modell über eigene Texturen verfügt. Ohne ihn verwendet Meshy die in der
model_url-Datei eingebetteten Texturen bzw. die Texturen des Eingabe-Tasks. Wenn Sie ihn senden, wird dieses Bild zur einzigen Textur des gerigten Modells, und das Modell verliert seine PBR-Texturen.Die UV-entfaltete Grundfarbtextur des Modells, als öffentliche URL oder als Data URI. Das Bild muss eine PNG-Datei mit höchstens 20 MB sein. Ein anderes Bildformat liefert
400zurück.
Rückgabewerte
Das Feld result der Antwort enthält die ID des neuen Rigging-Tasks.
Fehlerarten
- Name
400 - Bad Request- Description
Die Anfrage kann nicht ausgeführt werden. Die Fehlermeldung gibt an, welches Problem gefunden wurde. Zum Beispiel:
- Fehlender Parameter: Weder
model_urlnochinput_task_idwurde gesendet. - Ungültiges Modellformat: Die
model_url-Datei hat eine nicht unterstützte Dateiendung. Nur.glbwird unterstützt. - Nicht erreichbare URL: Meshy kann die
model_url-Datei nicht herunterladen. - Modelldatei zu groß: Die
model_url-Datei ist größer als 400 MB bei einerhttp- oderhttps-URL, bzw. größer als 100 MB als Data URI. - Zu viele Flächen: Die
model_url-Datei ist größer als 100 MB und hat mehr als 10.000.000 Flächen. Reduzieren Sie die Flächenanzahl und senden Sie die Datei erneut. - Modelldatei nicht lesbar: Die
model_url-Datei ist größer als 100 MB, und Meshy kann deren Header nicht lesen. Beispielsweise handelt es sich um eine Draco-komprimierte GLB-Datei. - Modell-Header zu komplex: Die
model_url-Datei ist größer als 100 MB, und ihr Header enthält zu viele Netze, Knoten oder Einträge, um sie zu prüfen. Reduzieren Sie die Anzahl der Objekte in der Datei und senden Sie sie erneut. - Bild zu groß: Das Bild unter
texture_image_urlist größer als 20 MB. - Ungültiges Texturformat: Das Bild unter
texture_image_urlist keine PNG-Datei. - Ungültige Höhe:
height_metersist negativ. - Ungültiger Eingabe-Task:
input_task_idverweist nicht auf einen gültigen API-Task. - Flächenanzahl überschritten: Das Eingabemodell hat mehr als 380.000 Dreiecke (ein Viereck zählt als 2). Führen Sie zuerst die Remesh-API mit einem
target_polycountvon höchstens300000aus, oder höchstens150000mittopology: quad, bevor Sie das Modell riggen.
Beheben Sie das Problem in der Anfrage und senden Sie sie erneut. Siehe Fehler.
- Fehlender Parameter: Weder
- Name
401 - Unauthorized- Description
Der API-Schlüssel fehlt oder ist ungültig. Überprüfen Sie den
Authorization-Header.
- Name
402 - Payment Required- Description
Zum Beispiel:
- Unzureichende Credits: Das Konto verfügt nicht über genügend Credits für diesen Task, oder das Konto hat ein Credit-Limit erreicht. Prüfen Sie Ihr Credit-Guthaben und versuchen Sie es erneut.
- Kostenloser Plan: Das Erstellen eines Tasks erfordert einen kostenpflichtigen Plan. Führen Sie ein Upgrade Ihres Plans in Ihren Abonnement-Einstellungen durch und versuchen Sie es erneut.
- Name
403 - Forbidden- Description
input_task_idist ein Halbrelief-Modell, das dieser Endpunkt nicht riggen kann. Die Meldung lautetThis model type does not support this operation. Senden Sie ein anderes Modell.
- Name
422 - Unprocessable Entity- Description
Die Posenschätzung ist fehlgeschlagen. Das Modell ist möglicherweise kein gültiger humanoider Charakter. Senden Sie ein Modell eines humanoiden Charakters. Prüfen Sie bei
model_urlaußerdem, ob der Charakter zur +Z-Achse ausgerichtet ist.
- Name
429 - Too Many Requests- Description
Sie haben Ihre Ratenbegrenzung überschritten. Warten Sie und versuchen Sie es erneut. Siehe Ratenbegrenzungen.
Einen Rigging-Task abrufen
Gibt einen Rigging-Task anhand seiner ID zurück.
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
}
Parameter
- Name
- id
- Type
- path
- Description
Die Task-ID aus der Antwort der Erstellung.
Rückgabe
Das Rigging-Task-Objekt.
Rigging-Task löschen
Löscht einen Rigging-Task dauerhaft, einschließlich seiner Modelle und Daten. Das Löschen kann nicht rückgängig gemacht werden.
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."
}
Pfadparameter
- Name
- id
- Type
- path
- Description
Die ID des zu löschenden Tasks.
Task-Status
Das Löschen eines PENDING-Tasks erstattet die Credits, die bei seiner Erstellung verwendet wurden.
Ein IN_PROGRESS-Task kann nicht gelöscht werden. Die Anfrage liefert 409 Conflict,
und der Task läuft weiter. Meshy erstattet keine Credits für einen bereits gestarteten Task,
weshalb ein Löschen Sie sowohl die Credits als auch das Ergebnis kosten würde. Warten Sie, bis
er den Status SUCCEEDED, FAILED oder CANCELED erreicht, und löschen Sie ihn dann.
Das Löschen eines Tasks in einem finalen Status (SUCCEEDED, FAILED oder CANCELED)
erstattet dessen Credits nicht.
Rückgabe
200 OK, wenn der Task gelöscht wurde, oder 409 Conflict, wenn der Task
IN_PROGRESS ist.
Rigging-Aufgaben auflisten
Gibt eine paginierte Liste deiner Rigging-Aufgaben zurück, die neuesten zuerst. Um durch die Liste zu blättern, verwende page_num und page_size.
Aufgaben, die du über die API erstellst, bleiben in der API und erscheinen nicht unter My Assets in der Web-App. Um eine Aufgabe zu finden, deren ID dir nicht mehr vorliegt, verwende diesen Endpunkt.
Request
curl "https://api.meshy.ai/openapi/v1/rigging?page_num=1&page_size=20" \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Einen Rigging-Task streamen
Streamt die Updates eines Rigging-Tasks als 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": {
"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
}
Parameter
- Name
- id
- Type
- path
- Description
Die Task-ID aus der Antwort beim Erstellen.
Rückgabe
Ein Stream von Rigging-Task-Objekten als Server-Sent Events.
Jedes Event enthält das vollständige Task-Objekt, in derselben Struktur, die der Get-Endpunkt zurückgibt. Solange der Task PENDING oder IN_PROGRESS ist, haben seine Ergebnisfelder noch keine Werte.
Das Rigging-Task-Objekt
Ein Rigging-Task-Objekt beschreibt das Rigging eines Charakters. Es enthält den Status, den progress und die Ausgabedateien, wenn die Aufgabe erfolgreich abgeschlossen wird.
Eigenschaften
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
Die Task-ID. Behandeln Sie sie als eine undurchsichtige Zeichenfolge und verlassen Sie sich nicht auf ihr Format.
- Name
- type
- Type
- string
- Description
Der Task-Typ, immer
rig.
- Name
- status
- Type
- string
- Description
Der Task-Status, einer von
PENDING,IN_PROGRESS,SUCCEEDED,FAILEDoderCANCELED.
- Name
- progress
- Type
- integer
- Description
Wie viel von der Aufgabe erledigt ist, in Prozent. Der Wert ist
0, bis die Aufgabe beginnt, und100, wenn sie erfolgreich abgeschlossen wird.
- Name
- created_at
- Type
- timestamp
- Description
Zeitpunkt der Erstellung der Aufgabe, in Unix-Millisekunden.
- Name
- started_at
- Type
- timestamp
- Description
Zeitpunkt des Starts der Aufgabe, in Unix-Millisekunden. Der Wert ist
0, bis die Aufgabe startet.
- Name
- finished_at
- Type
- timestamp
- Description
Zeitpunkt des Abschlusses der Aufgabe, in Unix-Millisekunden. Der Wert ist
0, bis die Aufgabe abgeschlossen ist.
- Name
- expires_at
- Type
- timestamp
- Description
Zeitpunkt, zu dem die Ergebnisdateien der Aufgabe ablaufen, in Unix-Millisekunden. Nach diesem Zeitpunkt kann Meshy die Dateien löschen.
- Name
- task_error
- Type
- object
- Description
Die Fehlerdetails, wenn die Aufgabe fehlschlägt. Siehe Fehler.
- Name
- consumed_credits
- Type
- integer
- Description
Die Anzahl der von der Aufgabe verbrauchten Credits. Vorhanden, wenn der Status
PENDING,IN_PROGRESSoderSUCCEEDEDist. Bei einer Aufgabe mit StatusFAILEDist der Wert0, da Meshy die Credits erstattet, wenn eine Aufgabe fehlschlägt.
- Name
- result
- Type
- object
- Description
Die URLs der Ausgabedateien. Bis die Aufgabe erfolgreich abgeschlossen ist, ist jede URL eine leere Zeichenfolge und
basic_animationsistnull.- Name
rigged_character_fbx_url- Type
- string
- Description
Download-URL für den geriggten Charakter als FBX-Datei.
- Name
rigged_character_glb_url- Type
- string
- Description
Download-URL für den geriggten Charakter als GLB-Datei.
- Name
basic_animations- Type
- object (optional)
- Description
Download-URLs für die standardmäßigen Geh- und Lauf-Animationen.
- Name
walking_glb_url- Type
- string
- Description
- Die Geh-Animation mit Skin, als GLB-Datei.
- Name
walking_fbx_url- Type
- string
- Description
- Die Geh-Animation mit Skin, als FBX-Datei.
- Name
walking_armature_glb_url- Type
- string
- Description
- Die Armature der Geh-Animation, als GLB-Datei.
- Name
running_glb_url- Type
- string
- Description
- Die Lauf-Animation mit Skin, als GLB-Datei.
- Name
running_fbx_url- Type
- string
- Description
- Die Lauf-Animation mit Skin, als FBX-Datei.
- Name
running_armature_glb_url- Type
- string
- Description
- Die Armature der Lauf-Animation, als GLB-Datei.
- Name
- preceding_tasks
- Type
- integer
- Description
Die Anzahl der Aufgaben, die in der Warteschlange vor dieser Aufgabe stehen. Der Wert ist nur relevant, solange die Aufgabe
PENDINGist.