Rigging API
Додайте скелет (арматуру) до гуманоїдної 3D-моделі та зв'яжіть сітку з ним, щоб персонаж був готовий до анімації. Щоб застосувати анімації до персонажа з rig, див. Animation API.
Rigging добре працює лише зі стандартними гуманоїдними (двоногими) персонажами, які мають чітко визначену структуру кінцівок і тіла.
Створення завдання Rigging
Створює завдання Rigging для 3D-моделі. Коли завдання виконується успішно, воно повертає ригований персонаж у стандартних форматах і, за бажанням, базові анімації ходьби та бігу.
Завдання виконується у фоновому режимі. Про те, скільки зазвичай триває завдання, див. Час обробки.
Rigging не підходить для таких моделей:
- Сітки без текстур
- Нелюдиноподібні асети
- Людиноподібні асети з нечіткою структурою кінцівок і тіла
Request
# Rig a model from a URL
curl https://api.meshy.ai/openapi/v1/rigging \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"model_url": "YOUR_MODEL_URL_OR_DATA_URI",
"height_meters": 1.8
}'
Response
{
"result": "018b314a-a1b5-716d-c222-2f1776f7f579"
}
Параметри
- Name
- input_task_id
- Type
- string
- Обов'язковий
- Description
Обов'язково, якщо ви не надсилаєте
model_url. ID завдання, модель якого ви хочете риговати. Meshy підтримує текстуровані людиноподібні моделі.Модель може мати щонайбільше 380 000 трикутників (квад рахується як 2), і модель з більшою кількістю повертає
400. Щоб не перевищувати ліміт, спочатку запустіть Remesh API зtarget_polycount300000 або менше, або 150000 або менше зtopology: quad.
- Name
- model_url
- Type
- string
- Обов'язковий
- Description
Обов'язково, якщо ви не надсилаєте
input_task_id. Модель для ригінгу, у вигляді публічного URL або data URI. Якщо ви надсилаєте обидва, Meshy використовуєinput_task_id.Модель має бути файлом GLB (
.glb) розміром щонайбільше 400 МБ з URLhttpабоhttps, або 100 МБ у вигляді data URI. Rigging підтримує текстуровані людиноподібні моделі.Модель може мати щонайбільше 380 000 трикутників (квад рахується як 2), і модель з більшою кількістю повертає
400. Щоб не перевищувати ліміт, спочатку запустіть Remesh API зtarget_polycount300000 або менше, або 150000 або менше зtopology: quad.Обличчя персонажа має бути спрямоване вздовж осі +Z, стандартного напрямку "вперед" у glTF. Оцінка пози не вдається для моделі, повернутої в іншому напрямку.
Файл розміром понад 100 МБ також повинен відповідати таким правилам:
- Він може мати щонайбільше 10 000 000 граней. Файл з більшою кількістю повертає
400. Meshy рахує грані як трикутники, а сітка, намальована більше одного разу, рахується один раз на кожну копію. - Він не повинен використовувати стиснення Draco.
- Він може мати щонайбільше 10 000 000 граней. Файл з більшою кількістю повертає
- Name
- height_meters
- Type
- number
- за замовчуванням 1.7
- Description
Приблизна висота персонажа в метрах. Meshy використовує це значення для точнішого масштабування та ригінгу моделі. Від'ємне значення повертає
400.
- Name
- texture_image_url
- Type
- string
- ⚠ застарілий
- Description
Не вказуйте, якщо модель має власні текстури. Без цього параметра Meshy використовує текстури, вбудовані у файл
model_url, або текстури вхідного завдання. Якщо ви його надсилаєте, це зображення стає єдиною текстурою ригованої моделі, і модель втрачає свої PBR-карти.UV-розгорнута базова кольорова текстура моделі, у вигляді публічного URL або data URI. Зображення має бути файлом PNG розміром щонайбільше 20 МБ. Інший формат зображення повертає
400.
Результат
Поле result у відповіді містить ID нового завдання Rigging.
Режими збою
- Name
400 - Bad Request- Description
Запит не може бути виконаний. Повідомлення про помилку вказує, яку проблему виявлено. Наприклад:
- Відсутній параметр: не надіслано ні
model_url, ніinput_task_id. - Недійсний формат моделі: файл
model_urlмає непідтримуване розширення. Підтримується лише.glb. - Недоступний URL: Meshy не може завантажити файл
model_url. - Файл моделі завеликий: файл
model_urlперевищує 400 МБ з URLhttpабоhttps, або перевищує 100 МБ як data URI. - Забагато граней: файл
model_urlперевищує 100 МБ і має понад 10 000 000 граней. Зменште кількість граней, потім надішліть файл знову. - Непридатний для читання файл моделі: файл
model_urlперевищує 100 МБ, і Meshy не може прочитати його заголовок. Наприклад, це GLB, стиснений Draco. - Заголовок моделі занадто складний: файл
model_urlперевищує 100 МБ, і його заголовок має забагато сіток, вузлів або записів для перевірки. Зменште кількість об'єктів у файлі, потім надішліть його знову. - Зображення завелике: зображення
texture_image_urlперевищує 20 МБ. - Недійсний формат текстури: зображення
texture_image_urlне є файлом PNG. - Недійсна висота:
height_metersвід'ємне. - Недійсне вхідне завдання:
input_task_idне посилається на дійсне завдання API. - Вхідне завдання не готове: завдання
input_task_idще не досягло стануSUCCEEDED. Зачекайте, поки воно виконається успішно, потім повторіть спробу. - Перевищено кількість граней: вхідна модель має понад 380 000 трикутників (квад рахується як 2). Запустіть Remesh API з
target_polycount300000 або менше, або 150000 або менше зtopology: quad, перед тим як риговати модель.
Виправте запит, потім надішліть його знову. Див. Помилки.
- Відсутній параметр: не надіслано ні
- 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
Meshy не може знайти файли завдання
input_task_id. Застосовується одне з наведеного:- Meshy видалила файли завдання після настання
expires_at. Створіть завдання знову, потім надішліть ID цього завдання. - Завдання не містить жодного з файлів, необхідних для ригінгу, наприклад попереднього зображення, наприклад завдання Convert. Риговане завдання, з якого воно походить, або надішліть модель як
model_url.
- Meshy видалила файли завдання після настання
- Name
422 - Unprocessable Entity- Description
Оцінка пози не вдалася. Можливо, модель не є дійсним людиноподібним персонажем. Надішліть модель людиноподібного персонажа. Для
model_urlтакож перевірте, що персонаж спрямований вздовж осі +Z.
- Name
429 - Too Many Requests- Description
Ви перевищили обмеження частоти. Зачекайте, потім повторіть спробу. Див. Обмеження частоти.
Отримати завдання Rigging
Повертає завдання Rigging за його ID.
Request
curl https://api.meshy.ai/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
{
"id": "018b314a-a1b5-716d-c222-2f1776f7f579",
"type": "rig",
"status": "SUCCEEDED",
"created_at": 1747032400453,
"progress": 100,
"started_at": 1747032401314,
"finished_at": 1747032418417,
"expires_at": 1747291618417,
"task_error": null,
"consumed_credits": 5,
"result": {
"rigged_character_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Character_output.fbx?Expires=...",
"rigged_character_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Character_output.glb?Expires=...",
"basic_animations": {
"walking_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin.glb?Expires=...",
"walking_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin.fbx?Expires=...",
"walking_armature_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin_armature.glb?Expires=...",
"running_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin.glb?Expires=...",
"running_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin.fbx?Expires=...",
"running_armature_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin_armature.glb?Expires=..."
}
}
}
Параметри
- Name
- id
- Type
- path
- Description
ID завдання з відповіді на створення.
Повертає
Видалення завдання Rigging
Остаточно видаляє завдання Rigging, включно з його моделями та даними. Скасувати видалення неможливо.
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579 \
-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
Ідентифікатор завдання, яке потрібно видалити.
Статус завдання
Видалення завдання зі статусом PENDING повертає кредити, витрачені на його створення.
Завдання зі статусом IN_PROGRESS видалити не можна. Запит повертає 409 Conflict,
а завдання продовжує виконуватися. Meshy не повертає кредити за завдання, яке вже почало
виконуватися, тому видалення такого завдання коштувало б вам і кредитів, і результату.
Зачекайте, доки воно не досягне статусу SUCCEEDED, FAILED або CANCELED, а потім видаліть його.
Видалення завдання у фінальному статусі (SUCCEEDED, FAILED або CANCELED)
не повертає витрачені на нього кредити.
Повертає
200 OK, коли завдання видалено, або 409 Conflict, коли завдання має статус
IN_PROGRESS.
Перелік завдань Rigging
Повертає розбитий на сторінки список ваших завдань Rigging, починаючи з найновіших. Щоб гортати список сторінками, використовуйте page_num та page_size.
Завдання, створені через API, залишаються в API і не відображаються в розділі My Assets у веб-застосунку. Щоб знайти завдання, ID якого у вас більше немає, скористайтеся цією кінцевою точкою.
Request
curl "https://api.meshy.ai/openapi/v1/rigging?page_num=1&page_size=20" \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Потоковий запуск задачі Rigging
Транслює оновлення задачі Rigging у вигляді подій Server-Sent Events (SSE).
Request
curl -N https://api.meshy.ai/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579/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": "018b314a-a1b5-716d-c222-2f1776f7f579",
"progress": 0,
"status": "PENDING"
}
event: message
data: {
"id": "018b314a-a1b5-716d-c222-2f1776f7f579",
"progress": 50,
"status": "IN_PROGRESS"
}
event: message
data: { // Example of a SUCCEEDED task event, with the same fields as the Rigging task object
"id": "018b314a-a1b5-716d-c222-2f1776f7f579",
"type": "rig",
"status": "SUCCEEDED",
"created_at": 1747032400453,
"progress": 100,
"started_at": 1747032401314,
"finished_at": 1747032418417,
"expires_at": 1747291618417,
"task_error": null,
"consumed_credits": 5,
"result": {
"rigged_character_fbx_url": "https://assets.meshy.ai/.../Character_output.fbx?...",
"rigged_character_glb_url": "https://assets.meshy.ai/.../Character_output.glb?...",
"basic_animations": {
"walking_glb_url": "https://assets.meshy.ai/.../Animation_Walking_withSkin.glb?...",
"walking_fbx_url": "https://assets.meshy.ai/.../Animation_Walking_withSkin.fbx?...",
"walking_armature_glb_url": "https://assets.meshy.ai/.../Animation_Walking_withSkin_armature.glb?...",
"running_glb_url": "https://assets.meshy.ai/.../Animation_Running_withSkin.glb?...",
"running_fbx_url": "https://assets.meshy.ai/.../Animation_Running_withSkin.fbx?...",
"running_armature_glb_url": "https://assets.meshy.ai/.../Animation_Running_withSkin_armature.glb?..."
}
}
}
Параметри
- Name
- id
- Type
- path
- Description
ID задачі з відповіді на створення.
Повертає
Потік об'єктів задачі Rigging у вигляді подій Server-Sent Events.
Кожна подія містить повний об'єкт задачі, у тому ж форматі, що повертає кінцева точка Get. Поки задача має статус PENDING або IN_PROGRESS, її поля результату ще не мають значень.
Об'єкт задачі ріггінгу
Об'єкт задачі ріггінгу описує ріггінг одного персонажа. Він містить статус, progress і вихідні файли, коли задача завершується успішно.
Властивості
Example Rigging Task Object
{
"id": "018b314a-a1b5-716d-c222-2f1776f7f579",
"type": "rig",
"status": "SUCCEEDED",
"created_at": 1747032400453,
"progress": 100,
"started_at": 1747032401314,
"finished_at": 1747032418417,
"expires_at": 1747291618417,
"task_error": null,
"consumed_credits": 5,
"result": {
"rigged_character_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Character_output.fbx?Expires=...",
"rigged_character_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Character_output.glb?Expires=...",
"basic_animations": {
"walking_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin.glb?Expires=...",
"walking_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin.fbx?Expires=...",
"walking_armature_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin_armature.glb?Expires=...",
"running_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin.glb?Expires=...",
"running_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin.fbx?Expires=...",
"running_armature_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin_armature.glb?Expires=..."
}
}
}
- Name
- id
- Type
- string
- Description
ID задачі. Розглядайте його як непрозорий рядок і не покладайтеся на його формат.
- Name
- type
- Type
- string
- Description
Тип задачі, завжди
rig.
- Name
- status
- Type
- string
- Description
Статус задачі, один із
PENDING,IN_PROGRESS,SUCCEEDED,FAILEDабоCANCELED.
- Name
- progress
- Type
- integer
- Description
Наскільки виконана задача, у відсотках. Дорівнює
0, доки задача не почалася, і100, коли вона успішно завершена.
- 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
Час, коли закінчується термін дії вихідних файлів задачі, в мілісекундах Unix. Після цього часу Meshy може видалити файли.
- Name
- task_error
- Type
- object
- Description
Деталі помилки, якщо задача завершилася невдало. Дорівнює
null, якщо статус неFAILED. Див. Помилки.
- Name
- consumed_credits
- Type
- integer
- Description
Кількість кредитів, витрачених на задачу. Присутнє, коли статус
PENDING,IN_PROGRESSабоSUCCEEDED. Дорівнює0для задачі зі статусомFAILED, оскільки Meshy повертає кредити, якщо задача завершується невдало.
- Name
- result
- Type
- object
- Description
URL-адреси вихідних файлів. Доки задача не завершена успішно, кожна URL-адреса є порожнім рядком, а
basic_animationsдорівнюєnull.- Name
rigged_character_fbx_url- Type
- string
- Description
URL-адреса для завантаження зарігованого персонажа у форматі FBX.
- Name
rigged_character_glb_url- Type
- string
- Description
URL-адреса для завантаження зарігованого персонажа у форматі GLB.
- Name
basic_animations- Type
- object (optional)
- Description
URL-адреси для завантаження стандартних анімацій ходьби та бігу.
- Name
walking_glb_url- Type
- string
- Description
- Анімація ходьби зі скіном, у форматі GLB.
- Name
walking_fbx_url- Type
- string
- Description
- Анімація ходьби зі скіном, у форматі FBX.
- Name
walking_armature_glb_url- Type
- string
- Description
- Арматура анімації ходьби, у форматі GLB.
- Name
running_glb_url- Type
- string
- Description
- Анімація бігу зі скіном, у форматі GLB.
- Name
running_fbx_url- Type
- string
- Description
- Анімація бігу зі скіном, у форматі FBX.
- Name
running_armature_glb_url- Type
- string
- Description
- Арматура анімації бігу, у форматі GLB.
- Name
- preceding_tasks
- Type
- integer
- Description
Кількість задач перед цією в черзі. Значення має сенс лише тоді, коли задача має статус
PENDING. Поле відсутнє, якщо значення дорівнює0.