Remesh-API
Mit der Remesh-API können Sie bestehende 3D-Modelle, die von anderen Meshy-APIs (wie Image to 3D oder Text to 3D) generiert wurden, retopologisieren und in verschiedene Formate exportieren. Dieser Abschnitt enthält Details zur Verwendung der Remesh-API.
Remesh-Aufgabe erstellen
Dieser endpoint erstellt eine neue Remesh-Aufgabe.
Verwenden Sie für Formatkonvertierung und Größenänderung die dedizierte Convert API und Resize API. Die unten aufgeführten veralteten Parameter funktionieren weiterhin, aber wir empfehlen die neuen endpoints für neue Integrationen.
Parameter
Nur eines von input_task_id oder model_url ist erforderlich. Wenn beide angegeben werden, hat input_task_id Vorrang.
- Name
- input_task_id
- Type
- string
- Erforderlich
- Description
Die ID der abgeschlossenen Image to 3D- oder Text to 3D-Aufgabe, die Sie remeshen möchten. Diese Aufgabe muss eine der folgenden Aufgaben sein: Text to 3D Preview, Text to 3D Refine, Image to 3D oder Retexture. Außerdem muss sie den Status
SUCCEEDEDhaben.
- Name
- model_url
- Type
- string
- Erforderlich
- Description
Bitte stellen Sie Meshy ein 3D-Modell zum Remeshen über eine öffentlich zugängliche URL oder Daten-URI bereit. Unterstützte Formate:
.glb,.gltf,.obj,.fbx,.stl.Verwenden Sie für Daten-URIs den MIME-Typ:
application/octet-stream.
- Name
- target_formats
- Type
- string[]
- Standard ["glb"]
- Description
Eine Liste der Zielformate für das remeshte Modell. Wenn sie weggelassen wird, wird nur GLB generiert.
Verfügbare Werte:
glb,fbx,obj,usdz,blend,stl,3mf.
- Name
- topology
- Type
- string
- Standard triangle
- Description
Geben Sie die Topologie des generierten Modells an.
Verfügbare Werte:
quad: Generiert ein überwiegend aus Quads bestehendes Mesh.triangle: Generiert ein dezimiertes Dreiecks-Mesh.
- Name
- target_polycount
- Type
- integer
- Standard 30,000
- Description
Geben Sie die Zielanzahl der Polygone im generierten Modell an. Die tatsächliche Anzahl der Polygone kann je nach Komplexität der Geometrie vom Zielwert abweichen.
Der gültige Wertebereich variiert je nach Benutzerstufe:
- 100 bis 300.000 (inklusive)
- Name
- decimation_mode
- Type
- integer
- Description
Aktivieren Sie die adaptive Dezimierung, indem Sie eine Polygonanzahl-Stufe festlegen. Wenn dies festgelegt ist, wird
target_polycountignoriert.Verfügbare Werte:
1: Adaptiv — ultra Polygonanzahl.2: Adaptiv — hohe Polygonanzahl.3: Adaptiv — mittlere Polygonanzahl.4: Adaptiv — niedrige Polygonanzahl.
- Name
- resize_height
- Type
- number
- ⚠ veraltet
- Standard 0
- Description
Ändern Sie die Größe des Modells auf eine bestimmte Höhe, gemessen in Metern. Wir empfehlen stattdessen die Verwendung der dedizierten Resize API.
auto_size,resize_heightundresize_longest_sideschließen sich gegenseitig aus.
- Name
- resize_longest_side
- Type
- number
- ⚠ veraltet
- Standard 0
- Description
Ändern Sie die Größe des Modells so, dass die längste Dimension der Bounding Box dem angegebenen Wert in Metern entspricht. Wir empfehlen stattdessen die Verwendung der dedizierten Resize API.
auto_size,resize_heightundresize_longest_sideschließen sich gegenseitig aus.
- Name
- auto_size
- Type
- boolean
- ⚠ veraltet
- Standard false
- Description
Wenn auf
truegesetzt, verwendet der Dienst KI-Vision, um die reale Höhe des Objekts automatisch zu schätzen und die Größe des Modells entsprechend anzupassen. Wir empfehlen stattdessen die Verwendung der dedizierten Resize API.auto_size,resize_heightundresize_longest_sideschließen sich gegenseitig aus.
auto_size = true- Name
- origin_at
- Type
- string
- ⚠ veraltet
- Standard bottom
- Description
Position des Ursprungs. Wir empfehlen stattdessen die Verwendung der dedizierten Resize API.
Verfügbare Werte:
bottom,center.
- Name
- convert_format_only
- Type
- boolean
- ⚠ veraltet
- Description
Wenn
true, ändert der Dienst nur das Format der Eingabemodelldatei und ignoriert andere Eingaben wietopology,resize_heightundtarget_polycount. Wir empfehlen stattdessen die Verwendung der dedizierten Convert API.target_formatsmuss angegeben werden, wennconvert_format_onlyauftruegesetzt ist.
- Name
- alpha_thumbnail
- Type
- boolean
- Standard false
- Description
Wenn auf
truegesetzt, rendert die Aufgabe zusätzlich eine Version der Vorschau mit transparentem Hintergrund (RGBA) und gibt sie in der GET-Antwort alsalpha_thumbnail_urlzurück. Das vorhandene Feldthumbnail_urlbleibt unverändert.
Rückgaben
Die Eigenschaft result der Antwort enthält die id der neu erstellten Remesh-Aufgabe.
Fehlermodi
- Name
400 - Bad Request- Description
Die Anfrage war nicht akzeptabel. Häufige Ursachen:
- Fehlender Parameter: Entweder
model_urloderinput_task_idmuss angegeben werden. - Ungültige Eingabeaufgabe: Die
input_task_idmuss auf eine erfolgreiche Aufgabe aus einem unterstützten Modell verweisen. - Ungültiges Modellformat: Die
model_urlverweist auf eine Datei mit einer nicht unterstützten Erweiterung. - Nicht erreichbare URL: Die
model_urlkonnte nicht heruntergeladen werden. - Ungültige Topologie: Der Parameter
topologyist ungültig. - Sich gegenseitig ausschließende Parameter:
auto_sizeundresize_heightkönnen nicht beide gesetzt werden.
- Fehlender Parameter: Entweder
- Name
401 - Unauthorized- Description
Authentifizierung fehlgeschlagen. Bitte überprüfen Sie Ihren API key.
- Name
402 - Payment Required- Description
Unzureichende credits, um diese Aufgabe auszuführen.
- Name
429 - Too Many Requests- Description
Sie haben Ihr Ratenlimit überschritten.
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"
}
Eine Remesh-Aufgabe abrufen
Dieser endpoint ruft eine Remesh-Aufgabe anhand ihrer ID ab.
Parameter
- Name
- id
- Type
- path
- Description
Die ID der abzurufenden Remesh-Aufgabe.
Rückgabe
Das Remesh-Aufgabenobjekt.
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,
}
Remesh-Aufgabe löschen
Dieser endpoint löscht eine Remesh-Aufgabe dauerhaft, einschließlich aller zugehörigen Modelle und Daten. Diese Aktion ist unumkehrbar.
Pfadparameter
- Name
- id
- Type
- path
- Description
Die ID der zu löschenden Remesh-Aufgabe.
Rückgabe
Gibt bei Erfolg 200 OK zurück.
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.
Remesh-Aufgaben auflisten
Dieser endpoint ermöglicht es Ihnen, eine Liste von Remesh-Aufgaben abzurufen.
Parameter
- Name
- page_num
- Type
- integer
- Standard 1
- Description
Seitennummer für die Paginierung.
- Name
- page_size
- Type
- integer
- Standard 10
- Description
Begrenzung der Seitengröße. Maximal zulässig sind
50Elemente.
- Name
- sort_by
- Type
- string
- Description
Feld, nach dem sortiert werden soll.
Verfügbare Werte:
+created_at: Nach Erstellungszeit in aufsteigender Reihenfolge sortieren.-created_at: Nach Erstellungszeit in absteigender Reihenfolge sortieren.
Rückgabe
Gibt eine paginierte Liste der Remesh-Aufgabenobjekte zurück.
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
}
]
Remesh-Aufgabe streamen
Dieser endpoint streamt Echtzeit-Updates für eine Remesh-Aufgabe mithilfe von Server-Sent Events (SSE).
Parameter
- Name
- id
- Type
- path
- Description
Eindeutige Kennung der zu streamenden Remesh-Aufgabe.
Rückgabe
Gibt einen Stream von Remesh-Aufgabenobjekten als Server-Sent Events zurück.
Bei Aufgaben mit PENDING oder IN_PROGRESS enthält der Antwort-Stream nur die erforderlichen Felder progress und 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,
}
Das Remesh-Task-Objekt
Das Remesh-Task-Objekt stellt eine Arbeitseinheit dar, die Meshy verwendet, um ein vorhandenes 3D-Modell neu zu topologisieren und in verschiedene Formate zu exportieren. Das Objekt hat die folgenden Eigenschaften:
Eigenschaften
- Name
- id
- Type
- string
- Description
Eindeutiger Bezeichner für die Aufgabe. Obwohl wir als Implementierungsdetail eine k-sortierbare UUID für Aufgaben-IDs verwenden, solltest du keine Annahmen über das Format der ID treffen.
- Name
- type
- Type
- string
- Description
Typ der Remesh-Aufgabe. Der Wert ist
remesh.
- Name
- model_urls
- Type
- object
- Description
Herunterladbare URL zur von Meshy generierten texturierten 3D-Modelldatei. Die Eigenschaft für ein Format wird weggelassen, wenn das Format nicht generiert wurde, anstatt eine leere Zeichenkette zurückzugeben.
- Name
glb- Type
- string
- Description
Herunterladbare URL zur GLB-Datei.
- Name
fbx- Type
- string
- Description
Herunterladbare URL zur FBX-Datei.
- Name
obj- Type
- string
- Description
Herunterladbare URL zur OBJ-Datei.
- Name
usdz- Type
- string
- Description
Herunterladbare URL zur USDZ-Datei.
- Name
blend- Type
- string
- Description
Herunterladbare URL zur Blender-Datei.
- Name
stl- Type
- string
- Description
Herunterladbare URL zur STL-Datei.
- Name
3mf- Type
- string
- Description
Herunterladbare URL zur 3MF-Datei. Nur vorhanden, wenn
3mfübertarget_formatsangefordert wurde.
- Name
- thumbnail_url
- Type
- string
- Description
Herunterladbare URL zu einem Vorschaubild, das aus dem neu vernetzten Modell gerendert wurde.
- Name
- alpha_thumbnail_url
- Type
- string
- Description
Herunterladbare URL zu einer Version von
thumbnail_urlmit transparentem Hintergrund (RGBA). Nur vorhanden, wenn die Aufgabe mitalpha_thumbnail: trueerstellt wurde und die transparente Vorschau erfolgreich gerendert wurde; andernfalls wird dieses Feld weggelassen.
- Name
- progress
- Type
- integer
- Description
Fortschritt der Aufgabe. Wenn die Aufgabe noch nicht gestartet wurde, ist diese Eigenschaft
0. Sobald die Aufgabe erfolgreich abgeschlossen wurde, wird sie zu100.
- Name
- status
- Type
- string
- Description
Status der Aufgabe. Mögliche Werte sind einer von
PENDING,IN_PROGRESS,SUCCEEDED,FAILED.
- Name
- preceding_tasks
- Type
- integer
- Description
Die Anzahl der vorhergehenden Aufgaben.
Der Wert dieses Feldes ist nur aussagekräftig, wenn der Aufgabenstatus
PENDINGist.
- Name
- created_at
- Type
- timestamp
- Description
Zeitstempel, wann die Aufgabe erstellt wurde, in Millisekunden.
- Name
- started_at
- Type
- timestamp
- Description
Zeitstempel, wann die Aufgabe gestartet wurde, in Millisekunden. Wenn die Aufgabe noch nicht gestartet wurde, ist diese Eigenschaft
0.
- Name
- finished_at
- Type
- timestamp
- Description
Zeitstempel, wann die Aufgabe abgeschlossen wurde, in Millisekunden. Wenn die Aufgabe noch nicht abgeschlossen wurde, ist diese Eigenschaft
0.
- Name
- task_error
- Type
- object
- Description
Fehlerdetails für fehlgeschlagene Aufgaben. Siehe Fehler für die vollständige
task_error-Objektreferenz.
- Name
- consumed_credits
- Type
- integer
- Description
Die Anzahl der von dieser Aufgabe verbrauchten Credits. Vorhanden, wenn der Aufgabenstatus
PENDING,IN_PROGRESSoderSUCCEEDEDist. Gibt beiFAILED-Aufgaben0zurück (Credits werden bei einem Fehlschlag erstattet).
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
}