Remesh API
Reconstrua a malha de um modelo 3D com uma nova topology e contagem de faces, e exporte-a nos formatos que escolher. O modelo pode provir de outra tarefa Meshy, como Imagem para 3D ou Texto para 3D, ou de um ficheiro de modelo.
Criar uma tarefa de Remesh
Cria uma tarefa de Remesh. A tarefa é executada em segundo plano. Para saber quanto tempo uma tarefa normalmente demora, consulte Tempos de processamento.
Para converter o formato de um modelo ou redimensioná-lo, utilize a API de Converter ou a API de Redimensionar. Os parâmetros obsoletos nesta página continuam a funcionar, mas as novas integrações devem utilizar esses endpoints.
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"
}
Parâmetros
- Name
- input_task_id
- Type
- string
- Obrigatório
- Description
Obrigatório, a menos que envie
model_url. O ID da tarefa cujo modelo pretende remesh, por exemplo, uma tarefa de Texto para 3D, Imagem para 3D, Retexturizar ou Remesh. A tarefa tem de ser uma que tenha criado com a API e que tenha o estadoSUCCEEDED.
- Name
- model_url
- Type
- string
- Obrigatório
- Description
Obrigatório, a menos que envie
input_task_id. O modelo a fazer remesh, como um URL público ou um data URI. Se enviar ambos, o Meshy utilizainput_task_id.O modelo tem de ser um ficheiro GLB, glTF, OBJ, FBX ou STL de, no máximo, 400 MB a partir de um URL
httpouhttps, ou 100 MB como data URI. Para um data URI, utilize o MIME typeapplication/octet-stream.Um ficheiro com mais de 100 MB também deve seguir estas regras:
- Um ficheiro GLB, glTF, FBX ou OBJ pode ter, no máximo, 10 000 000 faces. O Meshy conta as faces como triângulos, pelo que um quad conta como 2, e uma malha desenhada mais do que uma vez conta uma vez por cópia.
- Um ficheiro FBX tem de ser FBX binário 7.1 ou mais recente.
- Um ficheiro GLB ou glTF não pode utilizar compressão Draco.
- Name
- target_formats
- Type
- string[]
- predefinição ["glb"]
- Description
Os formatos de ficheiro a gerar.
Valores disponíveis:
glbfbxobjusdzblendstl3mf
- Name
- topology
- Type
- string
- predefinição triangle
- Description
O tipo de face do modelo remeshed.
Valores disponíveis:
quad: uma malha predominantemente de quadstriangle: uma malha de triângulos decimada
- Name
- target_polycount
- Type
- integer
- predefinição 30000
- Description
O número de faces pretendido, de
100a300000. O resultado pode diferir do valor-alvo, consoante a geometria do modelo. Um valor fora do intervalo devolve400.
- Name
- decimation_mode
- Type
- integer
- Description
Contagem de faces adaptativa, por nível. Quando o define, o Meshy ignora
target_polycount.Valores disponíveis:
1: ultra2: alto3: médio4: baixo
- Name
- resize_height
- Type
- number
- ⚠ obsoleto
- predefinição 0
- Description
Utilize a API de Redimensionar em vez disso. A altura para a qual redimensionar o modelo, em metros. Envie, no máximo, um de
resize_height,resize_longest_sideeauto_size.
- Name
- resize_longest_side
- Type
- number
- ⚠ obsoleto
- predefinição 0
- Description
Utilize a API de Redimensionar em vez disso. O comprimento para o qual redimensionar o lado mais longo da caixa delimitadora do modelo, em metros. Envie, no máximo, um de
resize_height,resize_longest_sideeauto_size.
- Name
- auto_size
- Type
- boolean
- ⚠ obsoleto
- predefinição false
- Description
Utilize a API de Redimensionar em vez disso. Se deve estimar a altura real do objeto com visão por IA e redimensionar o modelo em conformidade. Envie, no máximo, um de
resize_height,resize_longest_sideeauto_size.
- Name
- origin_at
- Type
- string
- ⚠ obsoleto
- predefinição bottom
- Description
Utilize a API de Redimensionar em vez disso. Onde colocar a origem do modelo,
bottomoucenter. O valor predefinido aplica-se quando enviaresize_height,resize_longest_sideouauto_size. Sem um deles, o Meshy só move a origem se enviarorigin_at.
- Name
- convert_format_only
- Type
- boolean
- ⚠ obsoleto
- Description
Utilize a API de Converter em vez disso. Se deve apenas converter o modelo para
target_formats. Quandotrue, o Meshy ignoratopology,target_polycount,decimation_mode,resize_height,resize_longest_sideeauto_size, mas continua a verificar os respetivos valores, pelo que um valor inválido devolve400. Comconvert_format_only: true, umtarget_formatsvazio ounulldevolve400.
- Name
- alpha_thumbnail
- Type
- boolean
- predefinição false
- Description
Se deve também gerar uma pré-visualização com fundo transparente (RGBA), devolvida em
alpha_thumbnail_urlquando obtém a tarefa.thumbnail_urlnão muda.
Devolve
O campo result da resposta contém o ID da nova tarefa de Remesh.
Modos de falha
- Name
400 - Bad Request- Description
O pedido não pode ser executado. A mensagem de erro indica qual o problema encontrado. Por exemplo:
- Parâmetro em falta: Nem
model_urlneminput_task_idforam enviados. - Tarefa de entrada inválida:
input_task_idnão corresponde a uma tarefa API bem-sucedida, ou o respetivo modelo de IA não suporta remesh. - Formato de modelo inválido: O ficheiro
model_urltem uma extensão não suportada. - URL inacessível: O Meshy não consegue transferir o ficheiro
model_url. - Ficheiro de modelo demasiado grande: O ficheiro
model_urltem mais de 400 MB a partir de um URLhttpouhttps, ou mais de 100 MB como data URI. - Demasiadas faces: O ficheiro
model_urltem mais de 100 MB e mais de 10 000 000 faces. Reduza o número de faces e volte a enviar o ficheiro. - FBX ASCII com mais de 100 MB: O ficheiro
model_urlé um FBX ASCII com mais de 100 MB. Envie-o como FBX binário ou GLB. - Ficheiro de modelo ilegível: O ficheiro
model_urltem mais de 100 MB, e o Meshy não consegue ler o respetivo cabeçalho. Por exemplo, é um GLB ou glTF comprimido com Draco, ou um FBX binário anterior à versão 7.1. - Cabeçalho do modelo demasiado complexo: O ficheiro
model_urltem mais de 100 MB, e o respetivo cabeçalho tem demasiadas malhas, nós ou registos para verificar. Reduza o número de objetos no ficheiro e volte a enviá-lo. - Topologia inválida:
topologynão équadnemtriangle. - Parâmetros mutuamente exclusivos: O pedido tem mais do que um de
auto_size,resize_heighteresize_longest_side. Envie apenas um.
Corrija o pedido e volte a enviá-lo. Consulte Erros.
- Parâmetro em falta: Nem
- Name
401 - Unauthorized- Description
A chave de API está em falta ou é inválida. Verifique o cabeçalho
Authorization.
- Name
402 - Payment Required- Description
Por exemplo:
- Créditos insuficientes: A conta não tem créditos suficientes para esta tarefa, ou a conta atingiu um limite de créditos. Verifique o seu saldo de créditos e tente novamente.
- Plano gratuito: Criar uma tarefa requer um plano pago. Atualize o seu plano nas definições de subscrição e tente novamente.
- Name
403 - Forbidden- Description
input_task_idé um modelo de baixo-relevo, que este endpoint não pode remesh. A mensagem éThis model type does not support this operation. Envie um modelo diferente.
- Name
404 - Not Found- Description
input_task_idnão corresponde a nenhuma das suas tarefas. Verifique o ID da tarefa e volte a enviar o pedido.
- Name
429 - Too Many Requests- Description
Excedeu o seu limite de taxa. Aguarde e tente novamente. Consulte Limites de taxa.
Obter uma tarefa de Remesh
Devolve uma tarefa de Remesh através do seu 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
}
Parâmetros
- Name
- id
- Type
- path
- Description
O ID da tarefa proveniente da resposta de criação.
Devolve
Eliminar uma tarefa de Remesh
Elimina permanentemente uma tarefa de Remesh, incluindo os seus modelos e dados. Não é possível anular uma eliminação.
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."
}
Parâmetros de percurso
- Name
- id
- Type
- path
- Description
O ID da tarefa a eliminar.
Estado da tarefa
Eliminar uma tarefa PENDING reembolsa os créditos que utilizou quando a criou.
Uma tarefa IN_PROGRESS não pode ser eliminada. O pedido devolve 409 Conflict,
e a tarefa continua a ser executada. O Meshy não reembolsa uma tarefa que já começou,
pelo que eliminá-la custar-lhe-ia tanto os créditos como o resultado. Aguarde até que
atinja o estado SUCCEEDED, FAILED ou CANCELED, e só depois a elimine.
Eliminar uma tarefa num estado final (SUCCEEDED, FAILED ou CANCELED)
não reembolsa os seus créditos.
Devolve
200 OK quando a tarefa é eliminada, ou 409 Conflict quando a tarefa está
IN_PROGRESS.
Listar tarefas de Remesh
Devolve uma lista das suas tarefas de 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
}
]
Parâmetros
- Name
- page_num
- Type
- integer
- predefinição 1
- Description
O número de página a devolver, até
255. Um valor superior devolve400.
- Name
- page_size
- Type
- integer
- predefinição 10
- Description
O número de tarefas por página, até
100.
- Name
- sort_by
- Type
- string
- Description
A ordem de ordenação.
Valores disponíveis:
+created_at: mais antigas primeiro-created_at: mais recentes primeiro
Devolve
Uma lista paginada de objetos de tarefa de Remesh.
Transmitir uma tarefa de Remesh
Transmite as atualizações de uma tarefa de Remesh como 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,
}
Parâmetros
- Name
- id
- Type
- path
- Description
O ID da tarefa proveniente da resposta de criação.
Devolve
Um fluxo de objetos de tarefa de Remesh sob a forma de Server-Sent Events.
Cada evento contém o objeto de tarefa completo, com a mesma estrutura devolvida pelo endpoint Get. Enquanto a tarefa estiver PENDING ou IN_PROGRESS, os seus campos de resultado ainda não têm valores.
O objeto de tarefa Remesh
Um objeto de tarefa Remesh descreve um remesh de um modelo 3D. Contém o estado, o progress e os ficheiros do modelo quando a tarefa é bem-sucedida.
Propriedades
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
O ID da tarefa. Trate-o como uma string opaca e não dependa do seu formato.
- Name
- type
- Type
- string
- Description
O tipo de tarefa, sempre
remesh.
- Name
- model_urls
- Type
- object
- Description
URLs de transferência para o modelo com remesh, uma por formato de ficheiro. Um formato que a tarefa não gerou não tem chave, em vez de ter uma string vazia.
- Name
glb- Type
- string
- Description
O ficheiro GLB.
- Name
fbx- Type
- string
- Description
O ficheiro FBX.
- Name
obj- Type
- string
- Description
O ficheiro OBJ.
- Name
usdz- Type
- string
- Description
O ficheiro USDZ.
- Name
blend- Type
- string
- Description
O ficheiro Blender.
- Name
stl- Type
- string
- Description
O ficheiro STL.
- Name
3mf- Type
- string
- Description
O ficheiro 3MF. Presente apenas quando
target_formatsinclui3mf.
- Name
- thumbnail_url
- Type
- string
- Description
URL de transferência para uma imagem de pré-visualização do modelo com remesh.
- Name
- alpha_thumbnail_url
- Type
- string
- Description
URL de transferência para uma versão de
thumbnail_urlcom fundo transparente (RGBA). Presente apenas quando criou a tarefa comalpha_thumbnail: truee a Meshy renderizou a pré-visualização transparente.
- Name
- progress
- Type
- integer
- Description
Quanto da tarefa está concluído, em percentagem. É
0até a tarefa começar e100quando é bem-sucedida.
- Name
- status
- Type
- string
- Description
O estado da tarefa, um de
PENDING,IN_PROGRESS,SUCCEEDED,FAILED, ouCANCELED.
- Name
- preceding_tasks
- Type
- integer
- Description
O número de tarefas à frente desta na fila. O valor só é significativo enquanto a tarefa estiver
PENDING.
- Name
- created_at
- Type
- timestamp
- Description
Momento em que a tarefa foi criada, em milissegundos Unix.
- Name
- started_at
- Type
- timestamp
- Description
Momento em que a tarefa começou, em milissegundos Unix. É
0até a tarefa começar.
- Name
- finished_at
- Type
- timestamp
- Description
Momento em que a tarefa terminou, em milissegundos Unix. É
0até a tarefa terminar.
- Name
- expires_at
- Type
- timestamp
- Description
Momento em que os URLs de transferência da tarefa expiram, em milissegundos Unix. É
0até a tarefa terminar.
- Name
- texture_urls
- Type
- array
- Description
URLs de transferência para os mapas de textura do modelo, quando a tarefa é bem-sucedida: um array de objetos, um por conjunto de texturas. Cada objeto tem um URL
base_colore também pode ter URLsmetallic,roughness,normal,emission, emetallic_roughness. Énullaté a tarefa ser bem-sucedida, e um array vazio quando o modelo não tem mapas de textura.
- Name
- task_error
- Type
- object
- Description
Os detalhes do erro quando a tarefa falha. Consulte Erros.
- Name
- consumed_credits
- Type
- integer
- Description
O número de créditos que a tarefa utilizou. Presente quando o estado é
PENDING,IN_PROGRESS, ouSUCCEEDED. É0para uma tarefaFAILED, porque a Meshy reembolsa os créditos quando uma tarefa falha.