Remesh API
Interfejs Remesh API umożliwia remeshowanie i eksportowanie istniejących modeli 3D wygenerowanych za pomocą innych API Meshy (takich jak Obraz na 3D lub Tekst na 3D) do różnych formatów. Ta sekcja zawiera szczegółowe informacje na temat korzystania z Remesh API.
Utwórz zadanie Remesh
Ten punkt końcowy tworzy nowe zadanie remesh.
Do konwersji formatu i zmiany rozmiaru użyj dedykowanego Convert API oraz Resize API. Poniższe przestarzałe parametry nadal będą działać, ale w przypadku nowych integracji zalecamy korzystanie z nowych punktów końcowych.
Parametry
Wymagany jest tylko jeden z parametrów input_task_id lub model_url. Jeśli podano oba, priorytet ma input_task_id.
- Name
- input_task_id
- Type
- string
- Wymagane
- Description
ID ukończonego zadania Obraz na 3D lub Tekst na 3D, które chcesz poddać remeshowi. Zadanie to musi być jednym z następujących: Text to 3D Preview, Text to 3D Refine, Image to 3D lub Retexture. Dodatkowo musi mieć status
SUCCEEDED.
- Name
- model_url
- Type
- string
- Wymagane
- Description
Podaj model 3D, który Meshy ma poddać remeshowi, za pomocą publicznie dostępnego adresu URL lub identyfikatora Data URI. Obsługiwane formaty:
.glb,.gltf,.obj,.fbx,.stl.W przypadku Data URI użyj typu MIME:
application/octet-stream.
- Name
- target_formats
- Type
- string[]
- domyślne ["glb"]
- Description
Lista docelowych formatów dla przetworzonego modelu. Jeśli parametr zostanie pominięty, generowany jest tylko format GLB.
Dostępne wartości:
glb,fbx,obj,usdz,blend,stl,3mf.
- Name
- topology
- Type
- string
- domyślne triangle
- Description
Określa topology generowanego modelu.
Dostępne wartości:
quad: Generuje siatkę z przewagą czworokątów.triangle: Generuje zdecymowaną siatkę trójkątną.
- Name
- target_polycount
- Type
- integer
- domyślne 30,000
- Description
Określa docelową liczbę wielokątów w generowanym 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 zależy od poziomu użytkownika:
- od 100 do 300 000 (włącznie)
- Name
- decimation_mode
- Type
- integer
- Description
Włącza adaptacyjną decymację poprzez ustawienie poziomu liczby wielokątów. Gdy ten parametr jest ustawiony,
target_polycountjest ignorowany.Dostępne wartości:
1: Adaptacyjnie — bardzo wysoka liczba wielokątów.2: Adaptacyjnie — wysoka liczba wielokątów.3: Adaptacyjnie — średnia liczba wielokątów.4: Adaptacyjnie — niska liczba wielokątów.
- Name
- resize_height
- Type
- number
- ⚠ przestarzałe
- domyślne 0
- Description
Zmienia rozmiar modelu do określonej wysokości mierzonej w metrach. Zalecamy korzystanie z dedykowanego Resize API.
auto_size,resize_heightiresize_longest_sidewzajemnie się wykluczają.
- Name
- resize_longest_side
- Type
- number
- ⚠ przestarzałe
- domyślne 0
- Description
Zmienia rozmiar modelu tak, aby najdłuższy wymiar bounding-boxa był równy podanej wartości w metrach. Zalecamy korzystanie z dedykowanego Resize API.
auto_size,resize_heightiresize_longest_sidewzajemnie się wykluczają.
- Name
- auto_size
- Type
- boolean
- ⚠ przestarzałe
- domyślne false
- Description
Gdy ustawione na
true, usługa wykorzystuje wizję AI do automatycznego oszacowania rzeczywistej wysokości obiektu i odpowiedniej zmiany rozmiaru modelu. Zalecamy korzystanie z dedykowanego Resize API.auto_size,resize_heightiresize_longest_sidewzajemnie się wykluczają.
auto_size = true- Name
- origin_at
- Type
- string
- ⚠ przestarzałe
- domyślne bottom
- Description
Pozycja punktu początkowego. Zalecamy korzystanie z dedykowanego Resize API.
Dostępne wartości:
bottom,center.
- Name
- convert_format_only
- Type
- boolean
- ⚠ przestarzałe
- Description
Jeśli
true, usługa zmieni tylko format pliku wejściowego modelu, ignorując inne dane wejściowe, takie jaktopology,resize_heightitarget_polycount. Zalecamy korzystanie z dedykowanego Convert API.target_formatsmusi zostać podane, jeśliconvert_format_onlyjest ustawione natrue.
- Name
- alpha_thumbnail
- Type
- boolean
- domyślne false
- Description
Gdy ustawione na
true, zadanie 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 wartości
Właściwość result odpowiedzi zawiera id nowo utworzonego zadania remesh.
Tryby niepowodzeń
- Name
400 - Bad Request- Description
Żądanie było nieprawidłowe. Typowe przyczyny:
- Brakujący parametr: Należy podać albo
model_url, alboinput_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 na plik o nieobsługiwanym rozszerzeniu. - Niedostępny URL: Nie udało się pobrać pliku spod
model_url. - Nieprawidłowy topology: Parametr
topologyjest nieprawidłowy. - Wzajemnie wykluczające się parametry: Nie można jednocześnie ustawić
auto_sizeiresize_height.
- Brakujący parametr: Należy podać albo
- 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 na podstawie 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,
}
Usuwanie zadania Remesh
Ten punkt końcowy trwale usuwa zadanie remesh, wraz ze wszystkimi powiązanymi modelami i danymi. Ta operacja jest nieodwracalna.
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 wartość to
50elementów.
- Name
- sort_by
- Type
- string
- Description
Pole, według którego ma nastąpić sortowanie.
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 zadania 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
}
]
Strumieniowanie zadania 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ł wyłącznie 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 wykonania remeshu i eksportu istniejącego modelu 3D do różnych formatów. Obiekt posiada następujące właściwości:
Właściwości
- Name
- id
- Type
- string
- Description
Unikalny identyfikator zadania. Chociaż jako szczegół implementacyjny używamy dla identyfikatorów zadań k-sortowalnego UUID, nie powinieneś zakładać żadnego konkretnego formatu identyfikatora.
- Name
- type
- Type
- string
- Description
Typ zadania Remesh. Wartość to
remesh.
- Name
- model_urls
- Type
- object
- Description
Adres URL do pobrania pliku modelu 3D z teksturą wygenerowanego przez Meshy. Właściwość dla danego formatu zostanie pominięta, jeśli dany format nie został wygenerowany, zamiast zwracać pusty ciąg znaków.
- 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. Obecne tylko wtedy, gdy
3mfzostało zażądane poprzeztarget_formats.
- Name
- thumbnail_url
- Type
- string
- Description
Adres URL do pobrania podglądu wygenerowanego z modelu po remeshu.
- Name
- alpha_thumbnail_url
- Type
- string
- Description
Adres URL do pobrania wersji
thumbnail_urlz przezroczystym tłem (RGBA). Obecne tylko wtedy, gdy zadanie zostało utworzone zalpha_thumbnail: true, a przezroczysty podgląd został pomyślnie wyrenderowany; w przeciwnym razie to pole jest pomijane.
- Name
- progress
- Type
- integer
- Description
Postęp zadania. Jeśli zadanie jeszcze się nie rozpoczęło, ta właściwość będzie miała wartość
0. Gdy zadanie zakończy się powodzeniem, przyjmie wartość100.
- 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 jeszcze się nie rozpoczęło, 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 jeszcze się nie zakończyło, ta właściwość będzie miała wartość
0.
- Name
- task_error
- Type
- object
- Description
Szczegóły błędu dla nieudanych zadań. Zobacz Błędy, aby poznać pełny opis obiektu
task_error.
- Name
- consumed_credits
- Type
- integer
- Description
Liczba kredytów zużytych przez to zadanie. Obecne, 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
}