API Ремешинга
Перестройте сетку 3D-модели с новой topology и количеством граней, а затем экспортируйте её в выбранные форматы. Модель может быть получена из другой задачи Meshy, такой как Изображение в 3D или Текст в 3D, или из файла модели.
Создание задачи Ремешинга
Создаёт задачу Ремешинга. Задача выполняется в фоновом режиме. Информацию о том, сколько обычно занимает выполнение задачи, см. в разделе Время обработки.
Чтобы конвертировать формат модели или изменить её размер, используйте Convert API или Resize API. Устаревшие параметры на этой странице по-прежнему работают, но для новых интеграций следует использовать эти эндпоинты.
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"
}
Параметры
- Name
- input_task_id
- Type
- string
- Обязательный
- Description
Обязателен, если не отправлен
model_url. ID задачи, модель которой вы хотите ремешировать, например задачи Текст в 3D, Изображение в 3D, Ретекстурирование или Ремешинг. Задача должна быть создана вами через API и иметь статусSUCCEEDED.
- Name
- model_url
- Type
- string
- Обязательный
- Description
Обязателен, если не отправлен
input_task_id. Модель для ремешинга в виде публичного URL или data URI. Если отправлены оба параметра, Meshy используетinput_task_id.Модель должна быть файлом в формате GLB, glTF, OBJ, FBX или STL размером не более 400 МБ при передаче по
httpилиhttpsURL, или не более 100 МБ в виде data URI. Для data URI используйте MIME typeapplication/octet-stream.Файл размером более 100 МБ также должен соответствовать следующим правилам:
- Файл GLB, glTF, FBX или OBJ может содержать не более 10 000 000 граней. Meshy считает грани как треугольники, поэтому четырёхугольник считается за 2, а сетка, нарисованная несколько раз, считается один раз за каждую копию.
- Файл FBX должен быть в бинарном формате FBX 7.1 или новее.
- Файл GLB или glTF не должен использовать сжатие Draco.
- Name
- target_formats
- Type
- string[]
- по умолчанию ["glb"]
- Description
Форматы файлов для генерации.
Доступные значения:
glbfbxobjusdzblendstl3mf
- Name
- topology
- Type
- string
- по умолчанию triangle
- Description
Тип граней ремешированной модели.
Доступные значения:
quad: сетка с преобладанием четырёхугольниковtriangle: децимированная треугольная сетка
- Name
- target_polycount
- Type
- integer
- по умолчанию 30000
- Description
Целевое количество граней, от
100до300000. Результат может отличаться от целевого значения в зависимости от геометрии модели. Значение вне диапазона возвращает400.
- Name
- decimation_mode
- Type
- integer
- Description
Адаптивное количество граней по уровню. При установке этого параметра Meshy игнорирует
target_polycount.Доступные значения:
1: ультра2: высокий3: средний4: низкий
- Name
- resize_height
- Type
- number
- ⚠ устаревший
- по умолчанию 0
- Description
Используйте вместо этого Resize API. Высота, до которой нужно изменить размер модели, в метрах. Отправьте не более одного из параметров
resize_height,resize_longest_sideиauto_size.
- Name
- resize_longest_side
- Type
- number
- ⚠ устаревший
- по умолчанию 0
- Description
Используйте вместо этого Resize API. Длина, до которой нужно изменить самую длинную сторону ограничивающего параллелепипеда модели, в метрах. Отправьте не более одного из параметров
resize_height,resize_longest_sideиauto_size.
- Name
- auto_size
- Type
- boolean
- ⚠ устаревший
- по умолчанию false
- Description
Используйте вместо этого Resize API. Указывает, нужно ли оценить реальную высоту объекта с помощью ИИ-зрения и изменить размер модели в соответствии с ней. Отправьте не более одного из параметров
resize_height,resize_longest_sideиauto_size.
- Name
- origin_at
- Type
- string
- ⚠ устаревший
- по умолчанию bottom
- Description
Используйте вместо этого Resize API. Куда поместить начало координат модели:
bottomилиcenter. Значение по умолчанию применяется, когда вы отправляетеresize_height,resize_longest_sideилиauto_size. Без одного из них Meshy перемещает начало координат, только если вы отправилиorigin_at.
- Name
- convert_format_only
- Type
- boolean
- ⚠ устаревший
- Description
Используйте вместо этого Convert API. Указывает, следует ли только конвертировать модель в форматы
target_formats. Когда указаноtrue, Meshy игнорируетtopology,target_polycount,decimation_mode,resize_height,resize_longest_sideиauto_size, но всё равно проверяет их значения, поэтому недопустимое значение вернёт400. Приconvert_format_only: trueпустое значение илиnullвtarget_formatsвернёт400.
- Name
- alpha_thumbnail
- Type
- boolean
- по умолчанию false
- Description
Указывает, нужно ли также рендерить предпросмотр с прозрачным фоном (RGBA), который возвращается в
alpha_thumbnail_urlпри получении задачи.thumbnail_urlпри этом не меняется.
Возвращает
Поле result ответа содержит ID новой задачи Ремешинга.
Режимы сбоя
- Name
400 - Bad Request- Description
Запрос не может быть выполнен. Сообщение об ошибке указывает, какая проблема была обнаружена. Например:
- Отсутствует параметр: не отправлены ни
model_url, ниinput_task_id. - Недопустимая исходная задача:
input_task_idне является успешной задачей API, или её ИИ-модель не поддерживает ремешинг. - Недопустимый формат модели: файл
model_urlимеет неподдерживаемое расширение. - Недоступный URL: Meshy не может загрузить файл по
model_url. - Файл модели слишком большой: файл
model_urlпревышает 400 МБ при передаче поhttpилиhttpsURL, или превышает 100 МБ в виде data URI. - Слишком много граней: файл
model_urlпревышает 100 МБ и содержит более 10 000 000 граней. Уменьшите количество граней, затем отправьте файл снова. - ASCII FBX более 100 МБ: файл
model_urlявляется ASCII FBX размером более 100 МБ. Отправьте его в виде бинарного FBX или GLB. - Нечитаемый файл модели: файл
model_urlпревышает 100 МБ, и Meshy не может прочитать его заголовок. Например, это GLB или glTF со сжатием Draco, или бинарный FBX старше версии 7.1. - Заголовок модели слишком сложен: файл
model_urlпревышает 100 МБ, и его заголовок содержит слишком много сеток, узлов или записей для проверки. Уменьшите количество объектов в файле, затем отправьте его снова. - Недопустимая topology:
topologyне равнаquadилиtriangle. - Взаимоисключающие параметры: в запросе указано более одного из параметров
auto_size,resize_heightиresize_longest_side. Отправьте только один.
Исправьте запрос, затем отправьте его снова. См. Ошибки.
- Отсутствует параметр: не отправлены ни
- Name
401 - Unauthorized- Description
API-ключ отсутствует или недействителен. Проверьте заголовок
Authorization.
- Name
402 - Payment Required- Description
Например:
- Недостаточно кредитов: на счёте недостаточно кредитов для выполнения этой задачи, или достигнут лимит кредитов. Проверьте баланс кредитов, затем повторите попытку.
- Бесплатный план: для создания задачи требуется платный план. Обновите свой план в настройках подписки, затем повторите попытку.
- Name
403 - Forbidden- Description
input_task_idотносится к модели барельефа, которую этот эндпоинт не может ремешировать. Сообщение гласит:This model type does not support this operation. Отправьте другую модель.
- Name
404 - Not Found- Description
input_task_idне соответствует ни одной из ваших задач. Проверьте ID задачи, затем отправьте запрос снова.
- Name
429 - Too Many Requests- Description
Вы превысили ограничение частоты запросов. Подождите, затем повторите попытку. См. Ограничения частоты.
Получить задачу Ремешинга
Возвращает задачу Ремешинга по её 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
}
Параметры
- Name
- id
- Type
- path
- Description
ID задачи из ответа на создание.
Возвращает
Удаление задачи Ремешинга
Безвозвратно удаляет задачу Ремешинга, включая её модели и данные. Отменить удаление нельзя.
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."
}
Параметры пути
- Name
- id
- Type
- path
- Description
ID задачи, которую нужно удалить.
Статус задачи
Удаление задачи со статусом PENDING возвращает кредиты, потраченные при её создании.
Задачу со статусом IN_PROGRESS удалить нельзя. Запрос вернёт 409 Conflict,
и задача продолжит выполняться. Meshy не возвращает кредиты за задачу, которая уже
начала выполняться, поэтому её удаление означало бы потерю и кредитов, и результата.
Дождитесь, пока она перейдёт в статус SUCCEEDED, FAILED или CANCELED, и только
после этого удаляйте.
Удаление задачи в финальном статусе (SUCCEEDED, FAILED или CANCELED)
не возвращает за неё кредиты.
Возвращает
200 OK, когда задача удалена, или 409 Conflict, когда задача имеет статус
IN_PROGRESS.
Список задач Ремешинга
Возвращает список ваших задач Ремешинга.
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
}
]
Параметры
- Name
- page_num
- Type
- integer
- по умолчанию 1
- Description
Номер страницы, которую нужно вернуть, до
255. Большее значение вернёт400.
- Name
- page_size
- Type
- integer
- по умолчанию 10
- Description
Количество задач на странице, до
100.
- Name
- sort_by
- Type
- string
- Description
Порядок сортировки.
Доступные значения:
+created_at: сначала старые-created_at: сначала новые
Возвращает
Список объектов задач Ремешинга с постраничной разбивкой.
Потоковая передача задачи Ремешинга
Передаёт обновления задачи Ремешинга в виде 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,
}
Параметры
- Name
- id
- Type
- path
- Description
ID задачи, полученный в ответе на создание.
Возвращает
Поток объектов задачи Ремешинга в виде Server-Sent Events.
Каждое событие содержит полный объект задачи — в том же формате, что возвращает эндпоинт Get. Пока задача находится в статусе PENDING или IN_PROGRESS, поля результата ещё не имеют значений.
Объект задачи Ремешинга
Объект задачи Ремешинга описывает один ремешинг 3D-модели. Он содержит статус, progress и файлы модели, когда задача завершается успешно.
Свойства
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
ID задачи. Рассматривайте его как непрозрачную строку и не полагайтесь на её формат.
- Name
- type
- Type
- string
- Description
Тип задачи, всегда
remesh.
- Name
- model_urls
- Type
- object
- Description
URL-адреса для скачивания ремешированной модели, по одному на каждый формат файла. Формат, который задача не сгенерировала, не имеет ключа, вместо пустой строки.
- Name
glb- Type
- string
- Description
Файл GLB.
- Name
fbx- Type
- string
- Description
Файл FBX.
- Name
obj- Type
- string
- Description
Файл OBJ.
- Name
usdz- Type
- string
- Description
Файл USDZ.
- Name
blend- Type
- string
- Description
Файл Blender.
- Name
stl- Type
- string
- Description
Файл STL.
- Name
3mf- Type
- string
- Description
Файл 3MF. Присутствует, только если
target_formatsвключает3mf.
- Name
- thumbnail_url
- Type
- string
- Description
URL-адрес для скачивания превью-изображения ремешированной модели.
- Name
- alpha_thumbnail_url
- Type
- string
- Description
URL-адрес для скачивания версии
thumbnail_urlс прозрачным фоном (RGBA). Присутствует, только если вы создали задачу сalpha_thumbnail: trueи Meshy отрендерил прозрачное превью.
- Name
- progress
- Type
- integer
- Description
Какая часть задачи выполнена, в процентах. Значение равно
0, пока задача не началась, и100, когда она завершена успешно.
- Name
- status
- Type
- string
- Description
Статус задачи, один из:
PENDING,IN_PROGRESS,SUCCEEDED,FAILEDилиCANCELED.
- Name
- preceding_tasks
- Type
- integer
- Description
Количество задач впереди этой в очереди. Значение имеет смысл только пока задача находится в статусе
PENDING.
- Name
- created_at
- Type
- timestamp
- Description
Время создания задачи, в миллисекундах Unix.
- Name
- started_at
- Type
- timestamp
- Description
Время начала задачи, в миллисекундах Unix. Значение равно
0, пока задача не началась.
- Name
- finished_at
- Type
- timestamp
- Description
Время завершения задачи, в миллисекундах Unix. Значение равно
0, пока задача не завершилась.
- Name
- expires_at
- Type
- timestamp
- Description
Время, когда истекает срок действия URL-адресов для скачивания задачи, в миллисекундах Unix. Значение равно
0, пока задача не завершилась.
- Name
- texture_urls
- Type
- array
- Description
URL-адреса для скачивания текстурных карт модели, когда задача завершена успешно: массив объектов, по одному на каждый набор текстур. Каждый объект содержит URL
base_color, а также может содержать URLmetallic,roughness,normal,emissionиmetallic_roughness. Значение равноnull, пока задача не завершена успешно, и является пустым массивом, если у модели нет текстурных карт.
- Name
- task_error
- Type
- object
- Description
Детали ошибки, если задача завершилась неудачей. См. Ошибки.
- Name
- consumed_credits
- Type
- integer
- Description
Количество кредитов, использованных задачей. Присутствует, когда статус —
PENDING,IN_PROGRESSилиSUCCEEDED. Значение равно0для задачи со статусомFAILED, поскольку Meshy возвращает кредиты, если задача завершается неудачей.