lowpoly zostanie wycofany 30 paź 2026. Zmień model przed tymi datami, aby uniknąć błędów żądań. Zobacz wszystkie wycofania

Rigging API

Dodaj szkielet (armaturę) do humanoidalnego modelu 3D i powiąż siatkę z nim, aby postać była gotowa do animacji. Aby zastosować animacje do postaci po riggingu, zobacz Animation API.

Rigging działa dobrze tylko w przypadku standardowych postaci humanoidalnych (dwunożnych), które mają wyraźnie zdefiniowaną strukturę kończyn i ciała.


POST/openapi/v1/rigging

Utwórz zadanie Rigging

Tworzy zadanie Rigging dla modelu 3D. Gdy zadanie zakończy się sukcesem, zwraca rigowaną postać w standardowych formatach oraz, opcjonalnie, podstawowe animacje chodzenia i biegania.

Zadanie jest wykonywane w tle. Informacje o typowym czasie trwania zadania znajdziesz w sekcji Czasy przetwarzania.

Rigging nie nadaje się do tych modeli:

  • Siatek bez tekstur
  • Zasobów innych niż humanoidalne
  • Zasobów humanoidalnych o niejasnej strukturze kończyn i ciała

Request

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
  }'

Response

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

Parametry

  • Name
    input_task_id
    Type
    string
    Wymagane
    Description

    Wymagane, chyba że wyślesz model_url. ID zadania, którego model chcesz rigować. Meshy obsługuje teksturowane modele humanoidalne.

    Model może mieć maksymalnie 380 000 trójkątów (czworokąt liczy się jako 2), a model z większą liczbą zwraca 400. Aby nie przekroczyć tego limitu, uruchom na nim najpierw Remesh API z target_polycount równym 300000 lub mniej, albo 150000 lub mniej przy topology: quad.

  • Name
    model_url
    Type
    string
    Wymagane
    Description

    Wymagane, chyba że wyślesz input_task_id. Model do rigowania, jako publiczny URL lub Data URI. Jeśli wyślesz oba, Meshy użyje input_task_id.

    Model musi być plikiem GLB (.glb) o rozmiarze maksymalnie 400 MB z adresu URL http lub https, albo 100 MB jako Data URI. Rigging obsługuje teksturowane modele humanoidalne.

    Model może mieć maksymalnie 380 000 trójkątów (czworokąt liczy się jako 2), a model z większą liczbą zwraca 400. Aby nie przekroczyć tego limitu, uruchom na nim najpierw Remesh API z target_polycount równym 300000 lub mniej, albo 150000 lub mniej przy topology: quad.

    Twarz postaci musi być skierowana w kierunku osi +Z, czyli standardowego kierunku „do przodu” w glTF. Estymacja pozy zawiedzie w przypadku modelu zwróconego w innej osi.

    Plik większy niż 100 MB musi dodatkowo spełniać te zasady:

    • Może mieć maksymalnie 10 000 000 ścian. Plik z większą liczbą zwraca 400. Meshy liczy ściany jako trójkąty, a siatka narysowana więcej niż raz liczy się raz na każdą kopię.
    • Nie może używać kompresji Draco.
  • Name
    height_meters
    Type
    number
    domyślne 1.7
    Description

    Przybliżona wysokość postaci w metrach. Meshy wykorzystuje tę wartość, aby dokładniej przeskalować i rigować model. Wartość ujemna zwraca 400.

  • Name
    texture_image_url
    Type
    string
    ⚠ przestarzałe
    Description

    Pomiń ten parametr, jeśli model ma własne tekstury. Bez niego Meshy użyje tekstur osadzonych w pliku model_url lub tekstur zadania wejściowego. Jeśli go wyślesz, ten obraz stanie się jedyną teksturą rigowanego modelu, a model utraci swoje mapy PBR.

    Rozwinięta w UV tekstura koloru bazowego modelu, jako publiczny URL lub Data URI. Obraz musi być plikiem PNG o rozmiarze maksymalnie 20 MB. Inny format obrazu zwraca 400.

Zwracane dane

Pole result w odpowiedzi zawiera ID nowego zadania Rigging.

Tryby niepowodzenia

  • Name
    400 - Bad Request
    Description

    Żądanie nie może zostać wykonane. Komunikat o błędzie wskazuje, jaki problem wykryto. Na przykład:

    • Brakujący parametr: Nie wysłano ani model_url, ani input_task_id.
    • Nieprawidłowy format modelu: Plik model_url ma nieobsługiwane rozszerzenie. Obsługiwane jest wyłącznie .glb.
    • Nieosiągalny URL: Meshy nie może pobrać pliku model_url.
    • Plik modelu zbyt duży: Plik model_url przekracza 400 MB z adresu URL http lub https, albo przekracza 100 MB jako Data URI.
    • Zbyt wiele ścian: Plik model_url przekracza 100 MB i ma więcej niż 10 000 000 ścian. Zmniejsz liczbę ścian, a następnie wyślij plik ponownie.
    • Nieodczytywalny plik modelu: Plik model_url przekracza 100 MB, a Meshy nie może odczytać jego nagłówka. Na przykład jest to plik GLB skompresowany Draco.
    • Nagłówek modelu zbyt złożony: Plik model_url przekracza 100 MB, a jego nagłówek zawiera zbyt wiele siatek, węzłów lub rekordów do sprawdzenia. Zmniejsz liczbę obiektów w pliku, a następnie wyślij go ponownie.
    • Obraz zbyt duży: Obraz texture_image_url przekracza 20 MB.
    • Nieprawidłowy format tekstury: Obraz texture_image_url nie jest plikiem PNG.
    • Nieprawidłowa wysokość: height_meters jest ujemne.
    • Nieprawidłowe zadanie wejściowe: input_task_id nie odnosi się do prawidłowego zadania API.
    • Zadanie wejściowe nie jest gotowe: Zadanie input_task_id nie osiągnęło statusu SUCCEEDED. Poczekaj, aż się powiedzie, a następnie spróbuj ponownie.
    • Przekroczona liczba ścian: Model wejściowy ma więcej niż 380 000 trójkątów (czworokąt liczy się jako 2). Uruchom na nim Remesh API z target_polycount równym 300000 lub mniej, albo 150000 lub mniej przy topology: quad, zanim zrigujesz model.

    Popraw żądanie, a następnie wyślij je ponownie. Zobacz Błędy.

  • Name
    401 - Unauthorized
    Description

    Brak klucza API lub jest on nieprawidłowy. Sprawdź nagłówek Authorization.

  • Name
    402 - Payment Required
    Description

    Na przykład:

    • Niewystarczające kredyty: Konto nie ma wystarczającej liczby kredytów na to zadanie lub konto osiągnęło limit kredytów. Sprawdź saldo kredytów, a następnie spróbuj ponownie.
    • Plan darmowy: Utworzenie zadania wymaga płatnego planu. Uaktualnij swój plan w ustawieniach subskrypcji, a następnie spróbuj ponownie.
  • Name
    403 - Forbidden
    Description

    input_task_id to model płaskorzeźby (bas-relief), którego ten punkt końcowy nie może zrigować. Komunikat brzmi This model type does not support this operation. Wyślij inny model.

  • Name
    404 - Not Found
    Description

    Meshy nie może znaleźć plików zadania input_task_id. Zastosowanie ma jedno z poniższych:

    • Meshy usunęło pliki zadania po upływie jego expires_at. Utwórz zadanie ponownie, a następnie wyślij ID tego zadania.
    • Zadanie nie ma żadnego z plików potrzebnych do riggingu, np. obrazu podglądu, na przykład zadanie Convert. Zrigguj zadanie, z którego ten model pochodzi, albo wyślij model jako model_url.
  • Name
    422 - Unprocessable Entity
    Description

    Estymacja pozy nie powiodła się. Model może nie być prawidłową postacią humanoidalną. Wyślij model postaci humanoidalnej. W przypadku model_url sprawdź też, czy postać jest zwrócona w kierunku osi +Z.

  • Name
    429 - Too Many Requests
    Description

    Przekroczono limit szybkości. Poczekaj, a następnie spróbuj ponownie. Zobacz Limity szybkości.


GET/openapi/v1/rigging/:id

Pobierz zadanie Rigging

Zwraca zadanie Rigging na podstawie jego ID.

Request

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

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=..."
    }
  }
}

Parametry

  • Name
    id
    Type
    path
    Description

    ID zadania z odpowiedzi tworzącej zadanie.

Zwraca

Obiekt zadania Rigging.


DELETE/openapi/v1/rigging/:id

Usuń zadanie Rigging

Trwale usuwa zadanie Rigging, wraz z jego modelami i danymi. Nie można cofnąć usunięcia.

Request

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

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

Parametry ścieżki

  • Name
    id
    Type
    path
    Description

    ID zadania do usunięcia.

Status zadania

Usunięcie zadania o statusie PENDING zwraca kredyty wykorzystane podczas jego tworzenia.

Zadania o statusie IN_PROGRESS nie można usunąć. Żądanie zwraca 409 Conflict, a zadanie nadal się wykonuje. Meshy nie zwraca kredytów za zadanie, które już się rozpoczęło, więc usunięcie go kosztowałoby Cię zarówno kredyty, jak i wynik. Poczekaj, aż osiągnie status SUCCEEDED, FAILED lub CANCELED, a następnie je usuń.

Usunięcie zadania w statusie końcowym (SUCCEEDED, FAILED lub CANCELED) nie powoduje zwrotu kredytów.

Zwraca

200 OK gdy zadanie zostało usunięte, lub 409 Conflict gdy zadanie ma status IN_PROGRESS.


GET/openapi/v1/rigging

Lista zadań Rigging

Zwraca podzieloną na strony listę Twoich zadań Rigging, od najnowszych. Aby przeglądać listę strona po stronie, użyj page_num i page_size.

Zadania utworzone za pomocą API pozostają w API i nie pojawiają się w My Assets w aplikacji webowej. Aby znaleźć zadanie, którego ID już nie posiadasz, użyj tego punktu końcowego.

Request

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

Przesyłaj strumieniowo zadanie Riggingu

Przesyła strumieniowo aktualizacje zadania Riggingu jako Server-Sent Events (SSE).

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.
// 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?..."
    }
  }
}

Parametry

  • Name
    id
    Type
    path
    Description

    ID zadania z odpowiedzi na żądanie utworzenia.

Zwraca

Strumień obiektów zadania Riggingu w postaci Server-Sent Events.

Każde zdarzenie zawiera pełny obiekt zadania, w tej samej postaci, jaką zwraca punkt końcowy Get. Gdy zadanie ma status PENDING lub IN_PROGRESS, jego pola wynikowe nie mają jeszcze wartości.


Obiekt zadania Rigging

Obiekt zadania Rigging opisuje rigging jednej postaci. Zawiera status, progress oraz pliki wyjściowe, gdy zadanie zakończy się powodzeniem.

Właściwości

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 zadania. Traktuj je jako nieprzezroczysty ciąg znaków i nie polegaj na jego formacie.

  • Name
    type
    Type
    string
    Description

    Typ zadania, zawsze rig.

  • Name
    status
    Type
    string
    Description

    Status zadania, jeden z PENDING, IN_PROGRESS, SUCCEEDED, FAILED lub CANCELED.

  • Name
    progress
    Type
    integer
    Description

    Jaka część zadania została ukończona, wyrażona w procentach. Wynosi 0, dopóki zadanie się nie rozpocznie, i 100, gdy zakończy się powodzeniem.

  • Name
    created_at
    Type
    timestamp
    Description

    Czas utworzenia zadania, w milisekundach Unix.

  • Name
    started_at
    Type
    timestamp
    Description

    Czas rozpoczęcia zadania, w milisekundach Unix. Wynosi 0, dopóki zadanie się nie rozpocznie.

  • Name
    finished_at
    Type
    timestamp
    Description

    Czas zakończenia zadania, w milisekundach Unix. Wynosi 0, dopóki zadanie się nie zakończy.

  • Name
    expires_at
    Type
    timestamp
    Description

    Czas wygaśnięcia plików wynikowych zadania, w milisekundach Unix. Po tym czasie Meshy może usunąć te pliki.

  • Name
    task_error
    Type
    object
    Description

    Szczegóły błędu, gdy zadanie zakończy się niepowodzeniem. Jest null, chyba że status to FAILED. Zobacz Błędy.

  • Name
    consumed_credits
    Type
    integer
    Description

    Liczba kredytów zużytych przez zadanie. Obecne, gdy status to PENDING, IN_PROGRESS lub SUCCEEDED. Dla zadania FAILED wynosi 0, ponieważ Meshy zwraca kredyty, gdy zadanie kończy się niepowodzeniem.

  • Name
    result
    Type
    object
    Description

    Adresy URL plików wyjściowych. Dopóki zadanie nie zakończy się powodzeniem, każdy adres URL jest pustym ciągiem znaków, a basic_animations ma wartość null.

    • Name
      rigged_character_fbx_url
      Type
      string
      Description

      Adres URL do pobrania zriggowanej postaci jako pliku FBX.

    • Name
      rigged_character_glb_url
      Type
      string
      Description

      Adres URL do pobrania zriggowanej postaci jako pliku GLB.

    • Name
      basic_animations
      Type
      object (optional)
      Description

      Adresy URL do pobrania domyślnych animacji chodzenia i biegania.

      • Name
        walking_glb_url
        Type
        string
        Description
        Animacja chodzenia ze skórą, jako plik GLB.
      • Name
        walking_fbx_url
        Type
        string
        Description
        Animacja chodzenia ze skórą, jako plik FBX.
      • Name
        walking_armature_glb_url
        Type
        string
        Description
        Armatura animacji chodzenia, jako plik GLB.
      • Name
        running_glb_url
        Type
        string
        Description
        Animacja biegania ze skórą, jako plik GLB.
      • Name
        running_fbx_url
        Type
        string
        Description
        Animacja biegania ze skórą, jako plik FBX.
      • Name
        running_armature_glb_url
        Type
        string
        Description
        Armatura animacji biegania, jako plik GLB.
  • Name
    preceding_tasks
    Type
    integer
    Description

    Liczba zadań znajdujących się przed tym zadaniem w kolejce. Wartość ta ma znaczenie tylko wtedy, gdy zadanie ma status PENDING. Pole jest pomijane, gdy wartość wynosi 0.