Remesh API
Ricostruisci la mesh di un modello 3D con una nuova topology e un nuovo numero di facce, ed esportala nei formati che preferisci. Il modello può provenire da un altro task di Meshy, come Immagine in 3D o Testo in 3D, oppure da un file di modello.
Crea un task di Remesh
Crea un task di Remesh. Il task viene eseguito in background. Per sapere quanto tempo richiede di solito un task, vedi Tempi di elaborazione.
Per convertire il formato di un modello o ridimensionarlo, usa la Convert API o la Resize API. I parametri deprecati in questa pagina funzionano ancora, ma le nuove integrazioni dovrebbero usare quegli endpoint.
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"
}
Parametri
- Name
- input_task_id
- Type
- string
- Obbligatorio
- Description
Obbligatorio a meno che tu non invii
model_url. L'ID del task il cui modello vuoi sottoporre a remesh, ad esempio un task di Testo in 3D, Immagine in 3D, Retexture o Remesh. Il task deve essere uno creato da te con l'API e avere lo statoSUCCEEDED.
- Name
- model_url
- Type
- string
- Obbligatorio
- Description
Obbligatorio a meno che tu non invii
input_task_id. Il modello da sottoporre a remesh, come URL pubblico o data URI. Se invii entrambi, Meshy usainput_task_id.Il modello deve essere un file GLB, glTF, OBJ, FBX o STL di al massimo 400 MB da un URL
httpohttps, oppure 100 MB come data URI. Per un data URI, usa il MIME typeapplication/octet-stream.Un file oltre i 100 MB deve inoltre rispettare queste regole:
- Un file GLB, glTF, FBX o OBJ può avere al massimo 10.000.000 di facce. Meshy conta le facce come triangoli, quindi un quad conta come 2, e una mesh disegnata più volte conta una volta per copia.
- Un file FBX deve essere binario FBX 7.1 o più recente.
- Un file GLB o glTF non deve usare la compressione Draco.
- Name
- target_formats
- Type
- string[]
- predefinito ["glb"]
- Description
I formati di file da generare.
Valori disponibili:
glbfbxobjusdzblendstl3mf
- Name
- topology
- Type
- string
- predefinito triangle
- Description
Il tipo di faccia del modello sottoposto a remesh.
Valori disponibili:
quad: una mesh a predominanza di quadtriangle: una mesh triangolare decimata
- Name
- target_polycount
- Type
- integer
- predefinito 30000
- Description
Il numero di facce da ottenere come obiettivo, da
100a300000. Il risultato può differire dall'obiettivo, a seconda della geometria del modello. Un valore fuori dall'intervallo restituisce400.
- Name
- decimation_mode
- Type
- integer
- Description
Conteggio adattivo delle facce, per livello. Quando lo imposti, Meshy ignora
target_polycount.Valori disponibili:
1: ultra2: alto3: medio4: basso
- Name
- resize_height
- Type
- number
- ⚠ deprecato
- predefinito 0
- Description
Usa invece la Resize API. L'altezza a cui ridimensionare il modello, in metri. Invia al massimo uno tra
resize_height,resize_longest_sideeauto_size.
- Name
- resize_longest_side
- Type
- number
- ⚠ deprecato
- predefinito 0
- Description
Usa invece la Resize API. La lunghezza a cui ridimensionare il lato più lungo della bounding box del modello, in metri. Invia al massimo uno tra
resize_height,resize_longest_sideeauto_size.
- Name
- auto_size
- Type
- boolean
- ⚠ deprecato
- predefinito false
- Description
Usa invece la Resize API. Se stimare l'altezza reale dell'oggetto tramite visione artificiale e ridimensionare il modello di conseguenza. Invia al massimo uno tra
resize_height,resize_longest_sideeauto_size.
- Name
- origin_at
- Type
- string
- ⚠ deprecato
- predefinito bottom
- Description
Usa invece la Resize API. Dove posizionare l'origine del modello,
bottomocenter. Il valore predefinito si applica quando inviiresize_height,resize_longest_sideoauto_size. Senza uno di questi, Meshy sposta l'origine solo se inviiorigin_at.
- Name
- convert_format_only
- Type
- boolean
- ⚠ deprecato
- Description
Usa invece la Convert API. Se convertire soltanto il modello in
target_formats. Quandotrue, Meshy ignoratopology,target_polycount,decimation_mode,resize_height,resize_longest_sideeauto_size, ma ne controlla comunque i valori, quindi un valore non valido restituisce400. Conconvert_format_only: true, untarget_formatsvuoto onullrestituisce400.
- Name
- alpha_thumbnail
- Type
- boolean
- predefinito false
- Description
Se generare anche un'anteprima con sfondo trasparente (RGBA), restituita in
alpha_thumbnail_urlquando recuperi il task.thumbnail_urlnon cambia.
Valori restituiti
Il campo result della risposta contiene l'ID del nuovo task di Remesh.
Modalità di errore
- Name
400 - Bad Request- Description
La richiesta non può essere eseguita. Il messaggio di errore indica quale problema è stato rilevato. Ad esempio:
- Parametro mancante: Non è stato inviato né
model_urlnéinput_task_id. - Task di input non valido:
input_task_idnon è un task API completato con successo, oppure il suo modello AI non supporta il remesh. - Formato del modello non valido: Il file
model_urlha un'estensione non supportata. - URL non raggiungibile: Meshy non riesce a scaricare il file
model_url. - File del modello troppo grande: Il file
model_urlsupera i 400 MB da un URLhttpohttps, oppure supera i 100 MB come data URI. - Troppe facce: Il file
model_urlsupera i 100 MB e ha più di 10.000.000 di facce. Riduci il numero di facce, poi invia nuovamente il file. - FBX ASCII oltre 100 MB: Il file
model_urlè un FBX ASCII che supera i 100 MB. Invialo come FBX binario o GLB. - File del modello illeggibile: Il file
model_urlsupera i 100 MB e Meshy non riesce a leggerne l'intestazione. Ad esempio, è un GLB o glTF compresso con Draco, oppure un FBX binario precedente alla versione 7.1. - Intestazione del modello troppo complessa: Il file
model_urlsupera i 100 MB e la sua intestazione ha troppe mesh, nodi o record da controllare. Riduci il numero di oggetti nel file, poi invialo nuovamente. - Topologia non valida:
topologynon èquadnétriangle. - Parametri reciprocamente esclusivi: La richiesta contiene più di uno tra
auto_size,resize_heighteresize_longest_side. Inviane solo uno.
Correggi la richiesta, poi inviala di nuovo. Vedi Errori.
- Parametro mancante: Non è stato inviato né
- Name
401 - Unauthorized- Description
La chiave API è mancante o non valida. Controlla l'header
Authorization.
- Name
402 - Payment Required- Description
Ad esempio:
- Crediti insufficienti: L'account non ha abbastanza crediti per questo task, oppure l'account ha raggiunto un limite di crediti. Controlla il tuo saldo crediti, poi riprova.
- Piano gratuito: Creare un task richiede un piano a pagamento. Aggiorna il tuo piano nelle impostazioni dell'abbonamento, poi riprova.
- Name
403 - Forbidden- Description
input_task_idè un modello a bassorilievo, che questo endpoint non può sottoporre a remesh. Il messaggio èThis model type does not support this operation. Invia un modello diverso.
- Name
404 - Not Found- Description
input_task_idnon corrisponde a nessuno dei tuoi task. Controlla l'ID del task, poi invia di nuovo la richiesta.
- Name
429 - Too Many Requests- Description
Hai superato il tuo limite di frequenza. Attendi, poi riprova. Vedi Limiti di frequenza.
Ottenere un task di Remesh
Restituisce un task di Remesh tramite il suo ID.
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,
}
Parametri
- Name
- id
- Type
- path
- Description
L'ID del task dalla risposta di creazione.
Restituisce
Elimina un'attività di Remesh
Elimina definitivamente un'attività di Remesh, inclusi i suoi modelli e dati. Non è possibile annullare un'eliminazione.
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 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."
}
Parametri del percorso
- Name
- id
- Type
- path
- Description
L'ID dell'attività da eliminare.
Stato dell'attività
Eliminare un'attività PENDING rimborsa i crediti utilizzati al momento della sua creazione.
Un'attività IN_PROGRESS non può essere eliminata. La richiesta restituisce 409 Conflict,
e l'attività continua a essere eseguita. Meshy non rimborsa un'attività che è già iniziata,
quindi eliminarla ti farebbe perdere sia i crediti che il risultato. Attendi che
raggiunga lo stato SUCCEEDED, FAILED o CANCELED, quindi eliminala.
Eliminare un'attività in uno stato finale (SUCCEEDED, FAILED o CANCELED)
non rimborsa i relativi crediti.
Restituisce
200 OK quando l'attività viene eliminata, oppure 409 Conflict quando l'attività è
IN_PROGRESS.
Elenca i task di Remesh
Restituisce un elenco dei tuoi task di 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
}
]
Parametri
- Name
- page_num
- Type
- integer
- predefinito 1
- Description
Il numero di pagina da restituire.
- Name
- page_size
- Type
- integer
- predefinito 10
- Description
Il numero di task per pagina, fino a
100.
- Name
- sort_by
- Type
- string
- Description
L'ordine di ordinamento.
Valori disponibili:
+created_at: dal più vecchio al più recente-created_at: dal più recente al più vecchio
Restituisce
Un elenco paginato di oggetti task Remesh.
Stream di un task di Remesh
Trasmette in streaming gli aggiornamenti di un task di Remesh come Server-Sent Events (SSE).
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.
// These examples are shortened. Each event holds the full task object.
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,
}
Parametri
- Name
- id
- Type
- path
- Description
L'ID del task restituito dalla risposta di creazione.
Valori restituiti
Uno stream di oggetti task di Remesh come Server-Sent Events.
Ogni evento contiene l'oggetto task completo, nello stesso formato restituito dall'endpoint Get. Mentre il task è PENDING o IN_PROGRESS, i suoi campi di risultato non hanno ancora valori.
L'oggetto task Remesh
Un oggetto task Remesh descrive un remesh di un modello 3D. Contiene lo stato, il progresso e i file del modello quando il task ha successo.
Proprietà
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
}
- Name
- id
- Type
- string
- Description
L'ID del task. Trattalo come una stringa opaca e non fare affidamento sul suo formato.
- Name
- type
- Type
- string
- Description
Il tipo di task, sempre
remesh.
- Name
- model_urls
- Type
- object
- Description
URL di download per il modello remeshato, uno per ogni formato di file. Un formato non generato dal task non ha una chiave, invece di avere una stringa vuota.
- Name
glb- Type
- string
- Description
Il file GLB.
- Name
fbx- Type
- string
- Description
Il file FBX.
- Name
obj- Type
- string
- Description
Il file OBJ.
- Name
usdz- Type
- string
- Description
Il file USDZ.
- Name
blend- Type
- string
- Description
Il file Blender.
- Name
stl- Type
- string
- Description
Il file STL.
- Name
3mf- Type
- string
- Description
Il file 3MF. Presente solo quando
target_formatsinclude3mf.
- Name
- thumbnail_url
- Type
- string
- Description
URL di download per un'immagine di anteprima del modello remeshato.
- Name
- alpha_thumbnail_url
- Type
- string
- Description
URL di download per una versione di
thumbnail_urlcon sfondo trasparente (RGBA). Presente solo quando hai creato il task conalpha_thumbnail: truee Meshy ha renderizzato l'anteprima trasparente.
- Name
- progress
- Type
- integer
- Description
Quanta parte del task è completata, in percentuale. È
0finché il task non inizia e100quando ha successo.
- Name
- status
- Type
- string
- Description
Lo stato del task, uno tra
PENDING,IN_PROGRESS,SUCCEEDEDoFAILED.
- Name
- preceding_tasks
- Type
- integer
- Description
Il numero di task davanti a questo nella coda. Il valore è significativo solo mentre il task è
PENDING.
- Name
- created_at
- Type
- timestamp
- Description
Ora di creazione del task, in millisecondi Unix.
- Name
- started_at
- Type
- timestamp
- Description
Ora di avvio del task, in millisecondi Unix. È
0finché il task non inizia.
- Name
- finished_at
- Type
- timestamp
- Description
Ora di completamento del task, in millisecondi Unix. È
0finché il task non termina.
- Name
- task_error
- Type
- object
- Description
I dettagli dell'errore quando il task fallisce. Vedi Errori.
- Name
- consumed_credits
- Type
- integer
- Description
Il numero di crediti utilizzati dal task. Presente quando lo stato è
PENDING,IN_PROGRESSoSUCCEEDED. È0per un taskFAILED, perché Meshy rimborsa i crediti quando un task fallisce.