Rigging-API

Die Rigging-API ermöglicht es Ihnen, programmatisch ein Skelett (Armature) zu 3D-Humanoidmodellen hinzuzufügen und das Netz daran zu binden, sodass sie bereit für die Animation sind. Um Animationen auf einen geriggten Charakter anzuwenden, siehe die Animations-API.

Bitte beachten Sie, dass das programmatische Rigging derzeit nur gut mit standardmäßigen humanoiden (zweibeinigen) Assets funktioniert, die klar definierte Gliedmaßen und eine Körperstruktur aufweisen.


POST/openapi/v1/rigging

Erstellen einer Rigging-Aufgabe

Dieser Endpunkt ermöglicht es Ihnen, eine neue Rigging-Aufgabe für ein gegebenes 3D-Modell zu erstellen. Bei erfolgreichem Abschluss wird ein geriggter Charakter in Standardformaten bereitgestellt und optional grundlegende Geh-/Laufanimationen.

Derzeit ist Auto-Rigging nicht geeignet für die folgenden Modelle:

  • Untexturierte Meshes
  • Nicht-humanoide Assets
  • Humanoide Assets mit unklarer Gliedmaßen- und Körperstruktur

Parameter

  • Name
    input_task_id
    Type
    string
    Erforderlich
    Description

    Die Eingabeaufgabe, die geriggt werden muss. Wir unterstützen derzeit texturierte humanoide Modelle.

  • Name
    model_url
    Type
    string
    Erforderlich
    Description

    Bitte stellen Sie ein 3D-Modell für Meshy bereit, das über eine öffentlich zugängliche URL oder Data URI geriggt werden soll. Wir unterstützen derzeit texturierte humanoide GLB-Dateien (.glb-Format).

  • Name
    height_meters
    Type
    number
    Standard 1.7
    Description

    Die ungefähre Höhe des Charaktermodells in Metern. Dies hilft bei der Skalierung und der Genauigkeit des Rigging. Es muss eine positive Zahl sein.

  • Name
    texture_image_url
    Type
    string
    Description

    Das UV-abgewickelte Basisfarbtexturbild des Modells. Öffentlich zugängliche URL oder Data URI. Wir unterstützen derzeit .png-Formate.

Rückgaben

Die result-Eigenschaft der Antwort enthält die Aufgaben-id der neu erstellten Rigging-Aufgabe.

Fehlermodi

  • Name
    400 - Bad Request
    Description

    Die Anfrage war nicht akzeptabel. Häufige Ursachen:

    • Fehlender Parameter: Entweder model_url oder input_task_id muss angegeben werden.
    • Ungültiges Modellformat: Die model_url verweist auf eine Datei mit einer nicht unterstützten Erweiterung (nur .glb wird unterstützt).
    • Nicht erreichbare URL: Die model_url konnte nicht heruntergeladen werden.
    • Ungültige Eingabeaufgabe: Die input_task_id verweist nicht auf eine gültige API-Aufgabe.
    • Flächenanzahl überschritten: Das Eingabemodell hat mehr als 300.000 Flächen. Bitte verwenden Sie die Remesh API, um die Flächenanzahl vor dem Rigging zu reduzieren.
  • Name
    401 - Unauthorized
    Description

    Authentifizierung fehlgeschlagen. Bitte überprüfen Sie Ihren API-Schlüssel.

  • Name
    402 - Payment Required
    Description

    Unzureichende Credits, um diese Aufgabe auszuführen.

  • Name
    422 - Unprocessable Entity
    Description

    Pose-Schätzung fehlgeschlagen. Das bereitgestellte Modell ist möglicherweise kein gültiger humanoider Charakter.

  • Name
    429 - Too Many Requests
    Description

    Sie haben Ihre Ratenbegrenzung überschritten.

Anfrage

POST
/openapi/v1/rigging
# 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
  }'

Antwort

{
  "result": "018b314a-a1b5-716d-c222-2f1776f7f579"
}

GET/openapi/v1/rigging/:id

Abrufen einer Rigging-Aufgabe

Dieser Endpunkt ermöglicht es Ihnen, eine Rigging-Aufgabe mit einer gültigen Aufgaben-id abzurufen. Siehe Das Rigging-Aufgabenobjekt, um zu sehen, welche Eigenschaften enthalten sind.

Parameter

  • Name
    id
    Type
    path
    Description

    Eindeutiger Bezeichner für die abzurufende Rigging-Aufgabe.

Rückgabe

Die Antwort enthält das Rigging-Aufgabenobjekt. Überprüfen Sie den Abschnitt Das Rigging-Aufgabenobjekt für Details.

Anfrage

GET
/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579
curl https://api.meshy.ai/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579 
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Antwort

{
  "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
}

DELETE/openapi/v1/rigging/:id

Löschen einer Rigging-Aufgabe

Dieser Endpunkt löscht dauerhaft eine Rigging-Aufgabe, einschließlich aller zugehörigen Modelle und Daten. Diese Aktion ist unwiderruflich.

Pfadparameter

  • Name
    id
    Type
    path
    Description

    Die ID der zu löschenden Rigging-Aufgabe.

Rückgaben

Gibt 200 OK bei Erfolg zurück.

Anfrage

DELETE
/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579
curl --request DELETE \
  --url https://api.meshy.ai/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579 \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Antwort

// Returns 200 Ok on success.

GET/openapi/v1/rigging

Liste der Rigging-Aufgaben

Gibt eine paginierte Liste der Rigging-Aufgaben des Anrufers zurück, beginnend mit den neuesten. Standard-Paginierung über page_num und page_size.

Beachten Sie, dass Aufgaben, die über die API erstellt wurden, auch über die API verwaltet werden – sie erscheinen nicht in der Web-App unter Meine Assets. Verwenden Sie diesen Endpunkt, um eine Aufgabe zu finden, deren ID Sie nicht mehr haben.

Anfrage

GET
/openapi/v1/rigging
curl "https://api.meshy.ai/openapi/v1/rigging?page_num=1&page_size=20" \
-H "Authorization: Bearer ${YOUR_API_KEY}"

GET/openapi/v1/rigging/:id/stream

Streamen einer Rigging-Aufgabe

Dieser Endpunkt streamt Echtzeit-Updates für eine Rigging-Aufgabe unter Verwendung von Server-Sent Events (SSE).

Parameter

  • Name
    id
    Type
    path
    Description

    Eindeutiger Bezeichner für die zu streamende Rigging-Aufgabe.

Rückgaben

Gibt einen Stream von The Rigging Task Objects als Server-Sent Events zurück.

Für PENDING oder IN_PROGRESS Aufgaben enthält der Antwortstream nur die notwendigen Felder progress und status.

Request

GET
/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579/stream
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.
// For PENDING or IN_PROGRESS tasks, the response stream will not include all fields.
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 stream item, mirroring The Rigging Task Object structure
  "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
}

Das Rigging-Task-Objekt

Das Rigging-Task-Objekt repräsentiert die Arbeitseinheit für das Rigging eines Charakters.

Eigenschaften

  • Name
    id
    Type
    string
    Description

    Eindeutiger Bezeichner für die Aufgabe.

  • Name
    type
    Type
    string
    Description

    Typ der Rigging-Aufgabe. Der Wert ist rig.

  • Name
    status
    Type
    string
    Description

    Status der Aufgabe. Mögliche Werte: PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.

  • Name
    progress
    Type
    integer
    Description

    Fortschritt der Aufgabe (0-100). 0 wenn nicht gestartet, 100 wenn erfolgreich.

  • Name
    created_at
    Type
    timestamp
    Description

    Zeitstempel (Millisekunden seit dem Epoch) wann die Aufgabe erstellt wurde.

  • Name
    started_at
    Type
    timestamp
    Description

    Zeitstempel (Millisekunden seit dem Epoch) wann die Aufgabe mit der Verarbeitung begann. 0 wenn nicht gestartet.

  • Name
    finished_at
    Type
    timestamp
    Description

    Zeitstempel (Millisekunden seit dem Epoch) wann die Aufgabe beendet wurde. 0 wenn nicht beendet.

  • Name
    expires_at
    Type
    timestamp
    Description

    Zeitstempel (Millisekunden seit dem Epoch) wann die Ergebnis-Assets der Aufgabe ablaufen und möglicherweise gelöscht werden.

  • Name
    task_error
    Type
    object
    Description

    Fehlerdetails für fehlgeschlagene Aufgaben. Siehe Fehler für die vollständige task_error Objekt-Referenz.

  • Name
    consumed_credits
    Type
    integer
    Description

    Die Anzahl der Credits, die von dieser Aufgabe verbraucht wurden. Vorhanden, wenn der Aufgabenstatus PENDING, IN_PROGRESS oder SUCCEEDED ist. Gibt 0 für FAILED Aufgaben zurück (Credits werden bei Fehlern zurückerstattet).

  • Name
    result
    Type
    object
    Description

    Enthält die URLs der Ausgabe-Assets, wenn die Aufgabe SUCCEEDED, andernfalls null.

    • Name
      rigged_character_fbx_url
      Type
      string
      Description

      Herunterladbare URL für den geriggten Charakter im FBX-Format.

    • Name
      rigged_character_glb_url
      Type
      string
      Description

      Herunterladbare URL für den geriggten Charakter im GLB-Format.

    • Name
      basic_animations
      Type
      object (optional)
      Description

      Enthält URLs für Standardanimationen. (z.B. wenn generate_basic_animations implizit wahr oder standardmäßig aktiviert war).

      • Name
        walking_glb_url
        Type
        string
        Description
        Herunterladbare URL für die Geh-Animation im GLB-Format (mit Skin).
      • Name
        walking_fbx_url
        Type
        string
        Description
        Herunterladbare URL für die Geh-Animation im FBX-Format (mit Skin).
      • Name
        walking_armature_glb_url
        Type
        string
        Description
        Herunterladbare URL für die Geh-Animation-Armatur im GLB-Format.
      • Name
        running_glb_url
        Type
        string
        Description
        Herunterladbare URL für die Lauf-Animation im GLB-Format (mit Skin).
      • Name
        running_fbx_url
        Type
        string
        Description
        Herunterladbare URL für die Lauf-Animation im FBX-Format (mit Skin).
      • Name
        running_armature_glb_url
        Type
        string
        Description
        Herunterladbare URL für die Lauf-Animation-Armatur im GLB-Format.
  • Name
    preceding_tasks
    Type
    integer
    Description

    Die Anzahl der vorhergehenden Aufgaben in der Warteschlange. Bedeutend nur, wenn der Status PENDING ist.

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
}