Remesh API
Remesh API umožňuje remeshovat a exportovat existující 3D modely vygenerované jinými API Meshy (jako Obrázek na 3D nebo Text na 3D) do různých formátů. Tato sekce poskytuje podrobnosti o tom, jak Remesh API používat.
Create a Remesh Task
Tento koncový bod vytvoří novou remesh úlohu.
Úloha běží na pozadí. Informace o obvyklé době zpracování najdete v části Doby zpracování.
Pro konverzi formátu a změnu velikosti použijte vyhrazené Convert API a Resize API. Níže uvedené zastaralé parametry budou nadále fungovat, ale pro nové integrace doporučujeme nové koncové body.
Parametry
Je vyžadován pouze jeden z parametrů input_task_id nebo model_url. Pokud jsou zadány oba, má přednost input_task_id.
- Name
- input_task_id
- Type
- string
- Povinné
- Description
ID dokončené úlohy Obrázek na 3D nebo Text na 3D, kterou chcete remeshovat. Tato úloha musí být jednou z následujících: Text na 3D Preview, Text na 3D Refine, Obrázek na 3D nebo Retexturování. Kromě toho musí mít stav
SUCCEEDED.
- Name
- model_url
- Type
- string
- Povinné
- Description
Poskytněte 3D model, který má Meshy remeshovat, prostřednictvím veřejně přístupné URL adresy nebo data URI. Podporované formáty:
.glb,.gltf,.obj,.fbx,.stl.Pro Data URI použijte MIME type:
application/octet-stream.Maximální velikost souboru: 400 MB pro
httpnebohttpsURL, 100 MB prodata:URI.Soubor GLB, glTF, FBX nebo OBJ nad 100 MB může mít nejvýše 10 000 000 ploch. Plochy se počítají jako trojúhelníky: čtyřúhelník se počítá jako 2 a síť vykreslená vícekrát se počítá jednou za každou kopii. Nad 100 MB musí být soubor FBX binární FBX 7.1 nebo novější a soubor GLB nebo glTF nesmí používat kompresi Draco.
- Name
- target_formats
- Type
- string[]
- výchozí ["glb"]
- Description
Seznam cílových formátů pro remeshovaný model. Pokud není uveden, vygeneruje se pouze GLB.
Dostupné hodnoty:
glb,fbx,obj,usdz,blend,stl,3mf.
- Name
- topology
- Type
- string
- výchozí triangle
- Description
Určuje topology vygenerovaného modelu.
Dostupné hodnoty:
quad: Vygeneruje síť s převahou čtyřúhelníků.triangle: Vygeneruje decimovanou trojúhelníkovou síť.
- Name
- target_polycount
- Type
- integer
- výchozí 30,000
- Description
Určuje cílový počet polygonů ve vygenerovaném modelu. Skutečný počet polygonů se může od cíle lišit v závislosti na složitosti geometrie.
Platný rozsah je 100 až 300 000 (včetně).
- Name
- decimation_mode
- Type
- integer
- Description
Povolí adaptivní decimaci nastavením úrovně počtu polygonů. Je-li nastaveno, parametr
target_polycountse ignoruje.Dostupné hodnoty:
1: Adaptivní — ultra počet polygonů.2: Adaptivní — vysoký počet polygonů.3: Adaptivní — střední počet polygonů.4: Adaptivní — nízký počet polygonů.
- Name
- resize_height
- Type
- number
- ⚠ zastaralé
- výchozí 0
- Description
Změní velikost modelu na určitou výšku měřenou v metrech. Doporučujeme místo toho použít vyhrazené Resize API.
auto_size,resize_heightaresize_longest_sidese vzájemně vylučují.
- Name
- resize_longest_side
- Type
- number
- ⚠ zastaralé
- výchozí 0
- Description
Změní velikost modelu tak, aby nejdelší rozměr ohraničujícího rámečku odpovídal zadané hodnotě v metrech. Doporučujeme místo toho použít vyhrazené Resize API.
auto_size,resize_heightaresize_longest_sidese vzájemně vylučují.
- Name
- auto_size
- Type
- boolean
- ⚠ zastaralé
- výchozí false
- Description
Je-li nastaveno na
true, služba použije AI vidění k automatickému odhadu reálné výšky objektu a odpovídajícím způsobem změní velikost modelu. Doporučujeme místo toho použít vyhrazené Resize API.auto_size,resize_heightaresize_longest_sidese vzájemně vylučují.
auto_size = true- Name
- origin_at
- Type
- string
- ⚠ zastaralé
- výchozí bottom
- Description
Pozice počátku. Doporučujeme místo toho použít vyhrazené Resize API.
Dostupné hodnoty:
bottom,center.
- Name
- convert_format_only
- Type
- boolean
- ⚠ zastaralé
- Description
Je-li
true, služba pouze změní formát vstupního souboru modelu a ignoruje ostatní vstupy, jako jsoutopology,resize_heightatarget_polycount. Doporučujeme místo toho použít vyhrazené Convert API.Pokud je
convert_format_onlynastaveno natrue, musí být zadánotarget_formats.
- Name
- alpha_thumbnail
- Type
- boolean
- výchozí false
- Description
Je-li nastaveno na
true, úloha navíc vykreslí verzi náhledu s průhledným pozadím (RGBA) a vrátí ji jakoalpha_thumbnail_urlv odpovědi GET. Stávající polethumbnail_urlzůstává beze změny.
Návratové hodnoty
Vlastnost result v odpovědi obsahuje id nově vytvořené remesh úlohy.
Režimy selhání
- Name
400 - Bad Request- Description
Požadavek byl nepřijatelný. Časté příčiny:
- Chybějící parametr: Musí být zadán buď
model_url, neboinput_task_id. - Neplatná vstupní úloha:
input_task_idmusí odkazovat na úspěšnou úlohu z podporovaného modelu. - Neplatný formát modelu:
model_urlodkazuje na soubor s nepodporovanou příponou. - Nedostupná URL adresa:
model_urlse nepodařilo stáhnout. - Soubor modelu je příliš velký: Soubor
model_urlpřesahuje 400 MB (URLhttpnebohttps) nebo 100 MB (data:URI). - Příliš mnoho ploch: Soubor
model_urlje větší než 100 MB a má více než 10 000 000 ploch. Snižte počet ploch a soubor odešlete znovu. - ASCII FBX nad 100 MB: Soubor
model_urlje ASCII FBX větší než 100 MB. Odešlete jej jako binární FBX nebo GLB. - Nečitelný soubor modelu: Soubor
model_urlje větší než 100 MB a jeho hlavičku nelze přečíst, například u GLB nebo glTF komprimovaného pomocí Draco nebo u binárního FBX staršího než 7.1. - Příliš složitá hlavička modelu: Soubor
model_urlje větší než 100 MB a jeho hlavička obsahuje příliš mnoho sítí, uzlů nebo záznamů ke kontrole. Snižte počet objektů v souboru a odešlete jej znovu. - Neplatná topology: Parametr
topologyje neplatný. - Vzájemně se vylučující parametry:
auto_sizearesize_heightnelze nastavit současně.
- Chybějící parametr: Musí být zadán buď
- Name
401 - Unauthorized- Description
Autentizace selhala. Zkontrolujte prosím svůj API klíč.
- Name
402 - Payment Required- Description
Nedostatek kreditů k provedení této úlohy.
- Name
429 - Too Many Requests- Description
Překročili jste limit rychlosti.
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"
}
Získání úlohy Remesh
Tento koncový bod načte úlohu remesh podle jejího ID.
Parametry
- Name
- id
- Type
- path
- Description
ID úlohy remesh, kterou chcete načíst.
Návratová hodnota
Objekt úlohy 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,
}
Delete a Remesh Task
Tento koncový bod trvale smaže úlohu remesh, včetně všech souvisejících modelů a dat. Tato akce je nevratná.
Parametry cesty
- Name
- id
- Type
- path
- Description
ID úlohy remesh, kterou chcete smazat.
Stav úlohy
Úloha, která je stále ve stavu PENDING, je smazána a kredity spotřebované
při vytvoření jsou vráceny.
Úlohu, která je již ve stavu IN_PROGRESS, nelze smazat: požadavek je
odmítnut s 409 Conflict a úloha pokračuje v běhu. Kredity za úlohu,
kterou worker již začal zpracovávat, nejsou vratné, takže smazání
uprostřed běhu by vás stálo kredity i výsledek zároveň. Počkejte, až úloha
dosáhne stavu SUCCEEDED, FAILED nebo CANCELED, a poté ji smažte.
Úloha v konečném stavu (SUCCEEDED, FAILED nebo CANCELED) je smazána
bez vrácení kreditů.
Návratové hodnoty
Vrací 200 OK v případě úspěchu, nebo 409 Conflict, pokud je úloha
ve stavu IN_PROGRESS.
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-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 is left 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."
}
Seznam úloh Remesh
Tento koncový bod umožňuje načíst seznam úloh Remesh.
Parametry
- Name
- page_num
- Type
- integer
- výchozí 1
- Description
Číslo stránky pro stránkování.
- Name
- page_size
- Type
- integer
- výchozí 10
- Description
Limit velikosti stránky. Maximální povolená hodnota je
100položek.
- Name
- sort_by
- Type
- string
- Description
Pole, podle kterého se má řadit.
Dostupné hodnoty:
+created_at: Řazení podle času vytvoření vzestupně.-created_at: Řazení podle času vytvoření sestupně.
Návratová hodnota
Vrací stránkovaný seznam objektů úlohy 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
}
]
Stream úlohy Remesh
Tento koncový bod streamuje aktualizace v reálném čase pro úlohu Remesh pomocí Server-Sent Events (SSE).
Parametry
- Name
- id
- Type
- path
- Description
Jedinečný identifikátor úlohy Remesh, kterou chcete streamovat.
Návratová hodnota
Vrací proud objektů úlohy Remesh formou Server-Sent Events.
U úloh ve stavu PENDING nebo IN_PROGRESS bude datový proud odpovědi obsahovat pouze nezbytná pole progress a 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,
}
Objekt úkolu Remesh
Objekt Remesh Task představuje pracovní jednotku, kterou Meshy používá k přegenerování (remesh) a exportu existujícího 3D modelu do různých formátů. Objekt má následující vlastnosti:
Vlastnosti
- Name
- id
- Type
- string
- Description
Jedinečný identifikátor úkolu. Ačkoliv jako implementační detail používáme pro id úkolů k-sortovatelné UUID, neměli byste činit žádné předpoklady o formátu id.
- Name
- type
- Type
- string
- Description
Typ úkolu Remesh. Hodnota je
remesh.
- Name
- model_urls
- Type
- object
- Description
Stažitelná URL adresa k texturovanému souboru 3D modelu vygenerovanému Meshy. Vlastnost pro daný formát bude vynechána, pokud daný formát nebyl vygenerován, místo vrácení prázdného řetězce.
- Name
glb- Type
- string
- Description
Stažitelná URL adresa k souboru GLB.
- Name
fbx- Type
- string
- Description
Stažitelná URL adresa k souboru FBX.
- Name
obj- Type
- string
- Description
Stažitelná URL adresa k souboru OBJ.
- Name
usdz- Type
- string
- Description
Stažitelná URL adresa k souboru USDZ.
- Name
blend- Type
- string
- Description
Stažitelná URL adresa k souboru Blender.
- Name
stl- Type
- string
- Description
Stažitelná URL adresa k souboru STL.
- Name
3mf- Type
- string
- Description
Stažitelná URL adresa k souboru 3MF. Přítomno pouze pokud byl formát
3mfpožadován pomocítarget_formats.
- Name
- thumbnail_url
- Type
- string
- Description
Stažitelná URL adresa k náhledovému obrázku vykreslenému z přegenerovaného (remesh) modelu.
- Name
- alpha_thumbnail_url
- Type
- string
- Description
Stažitelná URL adresa k verzi
thumbnail_urls průhledným pozadím (RGBA). Přítomno pouze pokud byl úkol vytvořen salpha_thumbnail: truea průhledný náhled byl úspěšně vykreslen; jinak je toto pole vynecháno.
- Name
- progress
- Type
- integer
- Description
Průběh úkolu. Pokud úkol ještě nebyl zahájen, tato vlastnost bude
0. Jakmile úkol uspěje, stane se100.
- Name
- status
- Type
- string
- Description
Stav úkolu. Možné hodnoty jsou jedna z
PENDING,IN_PROGRESS,SUCCEEDED,FAILED.
- Name
- preceding_tasks
- Type
- integer
- Description
Počet předcházejících úkolů.
Hodnota tohoto pole má smysl pouze pokud je stav úkolu
PENDING.
- Name
- created_at
- Type
- timestamp
- Description
Časové razítko vytvoření úkolu, v milisekundách.
- Name
- started_at
- Type
- timestamp
- Description
Časové razítko zahájení úkolu, v milisekundách. Pokud úkol ještě nebyl zahájen, tato vlastnost bude
0.
- Name
- finished_at
- Type
- timestamp
- Description
Časové razítko dokončení úkolu, v milisekundách. Pokud úkol ještě nebyl dokončen, tato vlastnost bude
0.
- Name
- task_error
- Type
- object
- Description
Podrobnosti chyby pro neúspěšné úkoly. Úplný popis objektu
task_errornajdete v části Chyby.
- Name
- consumed_credits
- Type
- integer
- Description
Počet kreditů spotřebovaných tímto úkolem. Přítomno, pokud je stav úkolu
PENDING,IN_PROGRESSneboSUCCEEDED. Pro úkoly se stavemFAILEDvrací0(kredity jsou v případě neúspěchu vráceny).
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
}