UV Unwrap API
Згенеруйте UV-розгортку для наявної 3D-моделі. Запускайте її перед текстуруванням моделі або коли такому інструменту, як Blender, Substance Painter чи Unreal, потрібна чиста UV-розкладка без накладень.
Результатом є UV біла модель. Вона має таку саму форму, як і вхідна модель, свіжі UV-координати та без справжньої текстури. Вона містить сірий заповнювач-матеріал розміром 2×2, щоб слот матеріалу glTF залишався дійсним, а стандартні інструменти сприймали її як нетекстуровану.
UV-розгортка підтримує сітки з кількістю граней до 40 000. Для більшої моделі повертається 400. Щоб зменшити кількість граней, спочатку запустіть Remesh.
Під час генерації UV Meshy тріангулює сітки з чотирикутниками та n-кутниками, тож результатом завжди є трикутна сітка.
Створення задачі UV-розгортки
Створює задачу UV-розгортки.
Задача виконується у фоновому режимі. Про типову тривалість виконання задачі див. Час обробки.
Request
# Chain from an existing Meshy task
curl https://api.meshy.ai/openapi/v1/uv-unwrap \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "0193bfc5-ee4f-73f8-8525-44b398884ce9"
}'
# Or from a publicly accessible model URL
curl https://api.meshy.ai/openapi/v1/uv-unwrap \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"model_url": "https://example.com/path/to/model.glb"
}'
Response
{
"result": "019361c6-9b34-7b23-bef2-d0107c4d92e2"
}
Параметри
- Name
- input_task_id
- Type
- string
- Обов'язковий
- Description
Обов'язковий, якщо не надіслано
model_url. ID задачі Meshy API, GLB-результат якої потрібно розгорнути, наприклад задачі Зображення у 3D, Текст у 3D або Ремеш. Задача повинна мати статусSUCCEEDEDі мати на виході файл GLB.Сітка може мати не більше 40 000 граней. Сітка з більшою кількістю граней поверне
400. Щоб зменшити кількість граней, спершу виконайте Ремеш.
- Name
- model_url
- Type
- string
- Обов'язковий
- Description
Обов'язковий, якщо не надіслано
input_task_id. Модель для розгортки у вигляді публічної URL-адреси або data URI. Якщо надіслано обидва параметри, Meshy використовуєinput_task_id.Модель повинна бути файлом
.glb. Щоб розгорнути інший формат, спершу конвертуйте його у GLB за допомогою Convert API.Файл може бути розміром не більше 400 МБ, якщо це URL-адреса
httpабоhttps, або не більше 100 МБ як data URI. Для data URI використовуйте MIME typeapplication/octet-stream. GLB розміром понад 100 МБ не повинен використовувати стиснення Draco.Діє те саме обмеження у 40 000 граней, що й для
input_task_id. Сітка з більшою кількістю граней поверне400, тож спершу виконайте Ремеш.
Результат
Поле result у відповіді містить ID нової задачі UV-розгортки.
Випадки помилок
- Name
400 - Bad Request- Description
Запит не може бути виконаний. Повідомлення про помилку вказує, яку проблему виявлено. Наприклад:
- Відсутній параметр: не надіслано ні
input_task_id, ніmodel_url. - Недійсна вхідна задача:
input_task_idне є успішною задачею API з результатом у форматі GLB. - Перевищено кількість граней: сітка має більше граней, ніж дозволяє UV-розгортка. Спершу виконайте Ремеш.
- Недійсний формат моделі: файл
model_urlмає непідтримуване розширення. - Недоступна URL-адреса: Meshy не може завантажити файл за адресою
model_url. - Файл моделі завеликий: файл
model_urlперевищує 400 МБ для URL-адресиhttpабоhttps, або 100 МБ як data URI. - Забагато граней: файл
model_urlперевищує 100 МБ і має більше ніж 10 000 000 граней. Зменшіть кількість граней і надішліть файл знову. - Файл моделі неможливо прочитати: файл
model_urlперевищує 100 МБ, і Meshy не може прочитати його заголовок. Наприклад, це GLB зі стисненням Draco. - Заголовок моделі занадто складний: файл
model_urlперевищує 100 МБ, і його заголовок містить забагато сіток, вузлів або записів для перевірки. Зменшіть кількість об'єктів у файлі й надішліть його знову.
Виправте запит і надішліть його знову. Див. Помилки.
- Відсутній параметр: не надіслано ні
- Name
401 - Unauthorized- Description
API-ключ відсутній або недійсний. Перевірте заголовок
Authorization.
- Name
402 - Payment Required- Description
Наприклад:
- Недостатньо кредитів: на обліковому записі недостатньо кредитів для цієї задачі, або обліковий запис досяг ліміту кредитів. Задача UV-розгортки коштує 5 кредитів. Перевірте баланс кредитів і повторіть спробу.
- Безкоштовний план: для створення задачі потрібен платний план. Оновіть свій план у налаштуваннях підписки, а потім повторіть спробу.
- 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
Ви перевищили обмеження частоти. Зачекайте, а потім повторіть спробу. Див. Обмеження частоти.
Отримати задачу UV-розгортки
Повертає поточний стан задачі UV-розгортки за її ID.
Request
curl https://api.meshy.ai/openapi/v1/uv-unwrap/019361c6-9b34-7b23-bef2-d0107c4d92e2 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Приклад відповіді дивіться у прикладі об'єкта задачі UV-розгортки.
Повертає
Видалення задачі UV-розгортки
Остаточно видаляє задачу UV-розгортки, включно з її результатами. Скасувати видалення неможливо.
Request
curl https://api.meshy.ai/openapi/v1/uv-unwrap/019361c6-9b34-7b23-bef2-d0107c4d92e2 \
-X DELETE \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Статус задачі
Видалення задачі зі статусом PENDING повертає кредити, витрачені на її створення.
Задачу зі статусом IN_PROGRESS видалити неможливо. Запит поверне 409 Conflict,
і задача продовжить виконуватися. Meshy не повертає кредити за задачу, яка вже почала
виконуватися, тому її видалення коштувало б вам і кредитів, і результату. Дочекайтеся,
поки вона перейде в статус SUCCEEDED, FAILED або CANCELED, а потім видаліть її.
Видалення задачі з фінальним статусом (SUCCEEDED, FAILED або CANCELED)
не повертає витрачені на неї кредити.
Список завдань UV-розгортки
Повертає пагінований список ваших завдань UV-розгортки, спочатку найновіші. Для гортання сторінок списку використовуйте page_num та page_size.
Request
curl "https://api.meshy.ai/openapi/v1/uv-unwrap?page_num=1&page_size=20" \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Stream a UV Unwrap task
Транслює оновлення завдання UV-розгортки у вигляді подій Server-Sent Events (SSE). Кожна подія message містить об'єкт завдання UV-розгортки. Потік закривається, коли завдання досягає стану SUCCEEDED, FAILED або CANCELED.
Щоб дізнатися про завершення завдання раніше, використовуйте цю кінцеву точку замість опитування GET /openapi/v1/uv-unwrap/:id.
Request
curl https://api.meshy.ai/openapi/v1/uv-unwrap/019361c6-9b34-7b23-bef2-d0107c4d92e2/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-N
Об'єкт завдання UV-розгортки
Об'єкт завдання UV Unwrap описує одну UV-розгортку 3D-моделі. Він містить статус, progress і файл моделі, коли завдання завершується успішно.
Example UV Unwrap Task Object
{
"id": "019361c6-9b34-7b23-bef2-d0107c4d92e2",
"type": "uv-unwrap",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/019361c6-9b34-7b23-bef2-d0107c4d92e2/output/model.glb?Expires=***"
},
"thumbnail_url": "https://assets.meshy.ai/***/tasks/019361c6-9b34-7b23-bef2-d0107c4d92e2/output/preview.png?Expires=***",
"progress": 100,
"status": "SUCCEEDED",
"preceding_tasks": 0,
"created_at": 1716579120000,
"started_at": 1716579122000,
"finished_at": 1716579180000,
"expires_at": 1716665580000,
"task_error": {
"message": ""
},
"consumed_credits": 5
}
- Name
- id
- Type
- string
- Description
ID завдання. Сприймайте його як непрозорий рядок і не покладайтеся на його формат.
- Name
- type
- Type
- string
- Description
Тип завдання, завжди
uv-unwrap.
- Name
- model_urls
- Type
- object
- Description
Підписані URL-адреси для завантаження UV білої моделі. UV Unwrap завжди повертає єдиний ключ
glb. Модель зберігає вхідну геометрію, має нові UV-координати та використовує стандартний сірий матеріал замість текстури.
- Name
- thumbnail_url
- Type
- string
- Description
Підписана URL-адреса для завантаження PNG-зображення попереднього перегляду UV білої моделі.
- 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.
- Name
- task_error
- Type
- object
- Description
Деталі помилки, коли завдання завершується невдало. Див. Помилки.
- Name
- consumed_credits
- Type
- integer
- Description
Кількість кредитів, витрачених на завдання. Успішне завдання UV Unwrap коштує 5 кредитів. Дорівнює
0для завдання зі статусомFAILED, оскільки Meshy повертає кредити, якщо завдання завершується невдало.