API Remesh
API Remesh umożliwia przeprowadzanie Remesh i eksport istniejących modeli 3D wygenerowanych przez inne API Meshy (takie jak Obraz na 3D lub Tekst na 3D) do różnych formatów. Ta sekcja zawiera szczegółowe informacje o tym, jak korzystać z API Remesh.
Utwórz zadanie Remesh
Ten punkt końcowy tworzy nowe zadanie Remesh.
Do konwersji formatu i zmiany rozmiaru użyj dedykowanych API Konwertuj i API Zmień rozmiar. Poniższe przestarzałe parametry będą nadal działać, ale dla nowych integracji zalecamy nowe punkty końcowe.
Parametry
Wymagane jest tylko jedno z input_task_id lub model_url. Jeśli podano oba, input_task_id ma priorytet.
- Name
- input_task_id
- Type
- string
- Wymagane
- Description
ID ukończonego zadania Obraz na 3D lub Tekst na 3D, które chcesz poddać Remesh. To zadanie musi być jednym z następujących zadań: Podgląd Tekst na 3D, Udoskonalenie Tekst na 3D, Obraz na 3D lub Reteksturowanie. Ponadto musi mieć status
SUCCEEDED.
- Name
- model_url
- Type
- string
- Wymagane
- Description
Podaj model 3D dla Meshy do wykonania Remesh za pośrednictwem publicznie dostępnego adresu URL lub Data URI. Obsługiwane formaty:
.glb,.gltf,.obj,.fbx,.stl.Dla Data URI użyj MIME type:
application/octet-stream.
- Name
- target_formats
- Type
- string[]
- domyślne ["glb"]
- Description
Lista formatów docelowych dla modelu po Remesh. Jeśli zostanie pominięta, generowany jest tylko GLB.
Dostępne wartości:
glb,fbx,obj,usdz,blend,stl,3mf.
- Name
- topology
- Type
- string
- domyślne triangle
- Description
Określ topology wygenerowanego modelu.
Dostępne wartości:
quad: Wygeneruj siatkę z przewagą czworokątów.triangle: Wygeneruj zdecymowaną siatkę trójkątną.
- Name
- target_polycount
- Type
- integer
- domyślne 30,000
- Description
Określ docelową liczbę wielokątów w wygenerowanym modelu. Rzeczywista liczba wielokątów może odbiegać od wartości docelowej w zależności od złożoności geometrii.
Prawidłowy zakres wartości różni się w zależności od poziomu użytkownika:
- Od 100 do 300 000 (włącznie)
- Name
- decimation_mode
- Type
- integer
- Description
Włącz adaptacyjną decymację, ustawiając poziom liczby wielokątów. Po ustawieniu
target_polycountjest ignorowane.Dostępne wartości:
1: Adaptacyjna — ultra liczba wielokątów.2: Adaptacyjna — wysoka liczba wielokątów.3: Adaptacyjna — średnia liczba wielokątów.4: Adaptacyjna — niska liczba wielokątów.
- Name
- resize_height
- Type
- number
- ⚠ przestarzałe
- domyślne 0
- Description
Zmień rozmiar modelu do określonej wysokości mierzonej w metrach. Zamiast tego zalecamy użycie dedykowanego API Zmień rozmiar.
auto_size,resize_heightiresize_longest_sidewzajemnie się wykluczają.
- Name
- resize_longest_side
- Type
- number
- ⚠ przestarzałe
- domyślne 0
- Description
Zmień rozmiar modelu tak, aby najdłuższy wymiar ramki ograniczającej był równy określonej wartości w metrach. Zamiast tego zalecamy użycie dedykowanego API Zmień rozmiar.
auto_size,resize_heightiresize_longest_sidewzajemnie się wykluczają.
- Name
- auto_size
- Type
- boolean
- ⚠ przestarzałe
- domyślne false
- Description
Po ustawieniu na
trueusługa używa wizji AI do automatycznego oszacowania rzeczywistej wysokości obiektu i odpowiedniej zmiany rozmiaru modelu. Zamiast tego zalecamy użycie dedykowanego API Zmień rozmiar.auto_size,resize_heightiresize_longest_sidewzajemnie się wykluczają.
auto_size = true- Name
- origin_at
- Type
- string
- ⚠ przestarzałe
- domyślne bottom
- Description
Położenie punktu początkowego. Zamiast tego zalecamy użycie dedykowanego API Zmień rozmiar.
Dostępne wartości:
bottom,center.
- Name
- convert_format_only
- Type
- boolean
- ⚠ przestarzałe
- Description
Jeśli
true, usługa zmieni tylko format wejściowego pliku modelu, ignorując inne dane wejściowe, takie jaktopology,resize_heightitarget_polycount. Zamiast tego zalecamy użycie dedykowanego API Konwertuj.target_formatsmusi zostać podane, jeśliconvert_format_onlyjest ustawione natrue.
- Name
- alpha_thumbnail
- Type
- boolean
- domyślne false
- Description
Po ustawieniu na
truezadanie dodatkowo renderuje wersję podglądu z przezroczystym tłem (RGBA) i zwraca ją jakoalpha_thumbnail_urlw odpowiedzi GET. Istniejące polethumbnail_urlpozostaje bez zmian.
Zwracane dane
Właściwość result odpowiedzi zawiera id nowo utworzonego zadania Remesh.
Tryby niepowodzenia
- Name
400 - Bad Request- Description
Żądanie było niedopuszczalne. Typowe przyczyny:
- Brakujący parametr: Należy podać
model_urlalboinput_task_id. - Nieprawidłowe zadanie wejściowe:
input_task_idmusi odnosić się do zakończonego powodzeniem zadania z obsługiwanego modelu. - Nieprawidłowy format modelu:
model_urlwskazuje plik z nieobsługiwanym rozszerzeniem. - Nieosiągalny URL: Nie można było pobrać
model_url. - Nieprawidłowa topology: Parametr
topologyjest nieprawidłowy. - Parametry wzajemnie się wykluczające:
auto_sizeiresize_heightnie mogą być ustawione jednocześnie.
- Brakujący parametr: Należy podać
- Name
401 - Unauthorized- Description
Uwierzytelnianie nie powiodło się. Sprawdź swój klucz API.
- Name
402 - Payment Required- Description
Niewystarczająca liczba kredytów do wykonania tego zadania.
- Name
429 - Too Many Requests- Description
Przekroczono limit szybkości.
Request
# Basic remesh with custom formats and resize
curl https://api.meshy.ai/openapi/v1/remesh \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
"target_formats": ["glb", "fbx"],
"topology": "quad",
"target_polycount": 50000,
"resize_height": 1.0,
"origin_at": "bottom"
}'
# Quad remesh with auto-size
curl https://api.meshy.ai/openapi/v1/remesh \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
"target_formats": ["glb", "fbx"],
"topology": "quad",
"target_polycount": 50000,
"auto_size": true
}'
Response
{
"result": "0193bfc5-ee4f-73f8-8525-44b398884ce9"
}
Pobierz zadanie Remesh
Ten punkt końcowy pobiera zadanie Remesh według jego ID.
Parametry
- Name
- id
- Type
- path
- Description
ID zadania Remesh do pobrania.
Zwraca
Obiekt zadania Remesh.
Request
curl https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null,
}
Usuń zadanie Remesh
Ten punkt końcowy trwale usuwa zadanie Remesh, w tym wszystkie powiązane modele i dane. Tej akcji nie można cofnąć.
Parametry ścieżki
- Name
- id
- Type
- path
- Description
ID zadania Remesh do usunięcia.
Zwraca
Zwraca 200 OK w przypadku powodzenia.
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
// Returns 200 Ok on success.
Lista zadań Remesh
Ten punkt końcowy umożliwia pobranie listy zadań Remesh.
Parametry
- Name
- page_num
- Type
- integer
- domyślne 1
- Description
Numer strony do stronicowania.
- Name
- page_size
- Type
- integer
- domyślne 10
- Description
Limit rozmiaru strony. Maksymalna dozwolona liczba to
50elementów.
- Name
- sort_by
- Type
- string
- Description
Pole, według którego należy sortować.
Dostępne wartości:
+created_at: Sortuj według czasu utworzenia w kolejności rosnącej.-created_at: Sortuj według czasu utworzenia w kolejności malejącej.
Zwraca
Zwraca stronicowaną listę obiektów zadań Remesh.
Request
curl https://api.meshy.ai/openapi/v1/remesh?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
[
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null
}
]
Strumieniuj zadanie Remesh
Ten punkt końcowy strumieniuje aktualizacje w czasie rzeczywistym dla zadania Remesh przy użyciu Server-Sent Events (SSE).
Parametry
- Name
- id
- Type
- path
- Description
Unikalny identyfikator zadania Remesh do strumieniowania.
Zwraca
Zwraca strumień obiektów zadania Remesh jako Server-Sent Events.
W przypadku zadań PENDING lub IN_PROGRESS strumień odpowiedzi będzie zawierał tylko niezbędne pola progress i status.
Request
curl -N https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f/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": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"progress": 0,
"status": "PENDING"
}
event: message
data: {
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null,
}
Obiekt zadania Remesh
Obiekt zadania Remesh reprezentuje jednostkę pracy, której Meshy używa do wykonywania Remesh i eksportowania istniejącego modelu 3D do różnych formatów. Obiekt ma następujące właściwości:
Właściwości
- Name
- id
- Type
- string
- Description
Unikalny identyfikator zadania. Chociaż używamy sortowalnego typu k UUID dla identyfikatorów zadań jako szczegółu implementacyjnego, nie należy przyjmować żadnych założeń dotyczących formatu identyfikatora.
- Name
- type
- Type
- string
- Description
Typ zadania Remesh. Wartość to
remesh.
- Name
- model_urls
- Type
- object
- Description
Adres URL do pobrania pliku teksturowanego modelu 3D wygenerowanego przez Meshy. Właściwość dla danego formatu zostanie pominięta, jeśli format nie zostanie wygenerowany, zamiast zwracać pusty ciąg.
- Name
glb- Type
- string
- Description
Adres URL do pobrania pliku GLB.
- Name
fbx- Type
- string
- Description
Adres URL do pobrania pliku FBX.
- Name
obj- Type
- string
- Description
Adres URL do pobrania pliku OBJ.
- Name
usdz- Type
- string
- Description
Adres URL do pobrania pliku USDZ.
- Name
blend- Type
- string
- Description
Adres URL do pobrania pliku Blender.
- Name
stl- Type
- string
- Description
Adres URL do pobrania pliku STL.
- Name
3mf- Type
- string
- Description
Adres URL do pobrania pliku 3MF. Obecny tylko wtedy, gdy zażądano
3mfprzeztarget_formats.
- Name
- thumbnail_url
- Type
- string
- Description
Adres URL do pobrania obrazu podglądu wyrenderowanego z modelu po Remesh.
- Name
- alpha_thumbnail_url
- Type
- string
- Description
Adres URL do pobrania wersji
thumbnail_urlz przezroczystym tłem (RGBA). Obecny tylko wtedy, gdy zadanie zostało utworzone zalpha_thumbnail: truei przezroczysty podgląd został pomyślnie wyrenderowany; w przeciwnym razie to pole jest pomijane.
- Name
- progress
- Type
- integer
- Description
Progress zadania. Jeśli zadanie nie zostało jeszcze rozpoczęte, ta właściwość będzie miała wartość
0. Po pomyślnym zakończeniu zadania zmieni się na100.
- Name
- status
- Type
- string
- Description
Status zadania. Możliwe wartości to jedna z:
PENDING,IN_PROGRESS,SUCCEEDED,FAILED.
- Name
- preceding_tasks
- Type
- integer
- Description
Liczba poprzedzających zadań.
Wartość tego pola ma znaczenie tylko wtedy, gdy status zadania to
PENDING.
- Name
- created_at
- Type
- timestamp
- Description
Znacznik czasu utworzenia zadania, w milisekundach.
- Name
- started_at
- Type
- timestamp
- Description
Znacznik czasu rozpoczęcia zadania, w milisekundach. Jeśli zadanie nie zostało jeszcze rozpoczęte, ta właściwość będzie miała wartość
0.
- Name
- finished_at
- Type
- timestamp
- Description
Znacznik czasu zakończenia zadania, w milisekundach. Jeśli zadanie nie zostało jeszcze zakończone, ta właściwość będzie miała wartość
0.
- Name
- task_error
- Type
- object
- Description
Szczegóły błędu dla zadań zakończonych niepowodzeniem. Zobacz Błędy, aby uzyskać pełną referencję obiektu
task_error.
- Name
- consumed_credits
- Type
- integer
- Description
Liczba kredytów zużytych przez to zadanie. Obecna, gdy status zadania to
PENDING,IN_PROGRESSlubSUCCEEDED. Zwraca0dla zadańFAILED(kredyty są zwracane w przypadku niepowodzenia).
Example Remesh Task Object
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"preceding_tasks": 0,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": {
"message": ""
},
"consumed_credits": 5
}