Ця кінцева точка дозволяє створити нове завдання для застосування анімації до раніше ризигованого персонажа — попередньо встановленої дії з бібліотеки анімацій (action_id), кількох попередньо встановлених дій, об'єднаних в один файл (action_ids), або кліпу руху, згенерованого за допомогою Text to Motion API (motion_task_id). Включає опції постобробки.
Завдання виконується у фоновому режимі. Про типову тривалість виконання див. Час обробки.
Параметри
Name
rig_task_id
Type
string
Обов'язковий
Description
id успішно завершеного завдання ризигування (з POST /openapi/v1/rigging). Персонаж з цього завдання буде анімований.
Name
action_id
Type
integer
Description
Ідентифікатор попередньо встановленої дії анімації для застосування. Повний список доступних анімацій див. у Довіднику бібліотеки анімацій. Вкажіть рівно одне з: action_id, action_ids або motion_task_id.
Name
action_ids
Type
array of integers
Description
Кілька попередньо встановлених дій анімації для одночасного застосування, що повертаються у вигляді одного файлу, який містить один кліп анімації на кожну дію — корисно для керування персонажем зі скінченного автомата станів в ігровому рушії. Вкажіть від 1 до 10 значень action_id з Довідника бібліотеки анімацій; ідентифікатори мають бути унікальними. Коштує 3 кредити за дію. Вкажіть рівно одне з: action_id, action_ids або motion_task_id.
Передача action_ids з одним елементом еквівалентна передачі цього значення як action_id.
Name
motion_task_id
Type
string
Description
id успішно завершеного завдання Text to Motion, яке потрібно застосувати замість попередньо встановленої дії. Згенерований кліп перепризначається на ризигованого персонажа, і кліп фіксується (знімок) на момент створення, тому це завдання не постраждає, якщо вихідне завдання пізніше закінчить термін дії або буде видалене. Активи вихідного завдання зберігаються протягом 3 днів — застосуйте кліп до закінчення цього терміну. Вимагає двоногого ризига. Вкажіть рівно одне з: action_id, action_ids або motion_task_id.
Name
post_process
Type
object
Description
Необов'язкова постобробка для вихідних даних анімації. Пропустіть цей параметр, щоб отримати стандартні файли анімації.
Застосовується лише коли post_process is set
Name
operation_type
Type
string
Обов'язковий
Description
Тип операції, яку потрібно виконати. Доступні значення: change_fps, fbx2usdz, extract_armature.
Name
fps
Type
integer
за замовчуванням 30
Description
Цільова частота кадрів. Застосовується лише якщо operation_type має значення change_fps. Дозволені значення: 24, 25, 30, 60.
При використанні action_ids завдання повертає один об'єднаний файл, а не окремий файл для кожної дії: animation_glb_url та animation_fbx_url кожен вказує на один актив, що містить усі запитані дії у вигляді окремих кліпів.
Порядок кліпів: порядок масиву action_ids, а не числовий порядок ідентифікаторів.
Назви кліпів: назва анімації в бібліотеці, що відповідає назвам, які ви отримуєте при експорті всіх анімацій персонажа як одного файлу з веб-застосунку Meshy. Якщо два запитані ідентифікатори призводять до однакової назви кліпу, пізніший отримує суфікс у вигляді свого action_id, щоб назви залишалися унікальними.
Постобробка: застосовується до об'єднаного файлу, а не до окремих кліпів.
При використанні motion_task_id перепризначення (retarget) може створити анімацію лише у форматі GLB. Якщо ви запитали post_process, а FBX недоступний, завдання завершується з помилкою task_error, і ваші кредити автоматично повертаються; без post_process завдання завершується успішно, а animation_fbx_url залишається порожнім.
Результат
Властивість result у відповіді містить id завдання щойно створеного завдання анімації.
Режими відмови
Name
400 - Bad Request
Description
Запит був неприйнятним. Поширені причини:
Відсутній параметр: відсутній rig_task_id, або не надано жодного з action_id, action_ids чи motion_task_id.
Конфліктуючі параметри: надано більше одного з action_id, action_ids та motion_task_id — вони взаємовиключні.
Недійсне завдання ризигування: rig_task_id недійсний або посилається на невдале/неіснуюче завдання.
Недійсний ідентифікатор дії: action_id — або один з елементів action_ids — не відповідає жодній дійсній анімації.
Забагато дій: action_ids містить більше 10 ідентифікаторів.
Дублікати дій: action_ids містить один і той самий ідентифікатор більше одного разу.
Завдання руху не готове: завдання motion_task_id ще не має статусу SUCCEEDED.
Непідтримуваний ризиг: motion_task_id вимагає двоногого ризига; чотириногі ризиги відхиляються.
Name
401 - Unauthorized
Description
Помилка автентифікації. Будь ласка, перевірте свій API-ключ.
Name
402 - Payment Required
Description
Недостатньо кредитів для виконання цього завдання.
Name
404 - Not Found
Description
Завдання ризигування, вказане через rig_task_id, не знайдено, завдання руху, вказане через motion_task_id, не знайдено, або термін дії кліпу руху закінчився (активи вихідного завдання зберігаються протягом 3 днів).
Name
429 - Too Many Requests
Description
Ви перевищили своє обмеження частоти.
Request
POST
/openapi/v1/animations
# Animate a rigged model with required params onlycurlhttps://api.meshy.ai/openapi/v1/animations \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json' \-d'{ "rig_task_id": "018b314a-a1b5-716d-c222-2f1776f7f579", "action_id": 92 }'# Apply several preset actions and get one file with one clip per actioncurlhttps://api.meshy.ai/openapi/v1/animations \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json' \-d'{ "rig_task_id": "018b314a-a1b5-716d-c222-2f1776f7f579", "action_ids": [10, 25, 92] }'# Apply a generated Text to Motion clip instead of a preset actioncurlhttps://api.meshy.ai/openapi/v1/animations \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json' \-d'{ "rig_task_id": "018b314a-a1b5-716d-c222-2f1776f7f579", "motion_task_id": "018c425b-b2c6-727e-d333-3c1887i9h791" }'# With post-processing to change FPScurlhttps://api.meshy.ai/openapi/v1/animations \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json' \-d'{ "rig_task_id": "018b314a-a1b5-716d-c222-2f1776f7f579", "action_id": 92, "post_process": { "operation_type": "change_fps", "fps": 24 } }'
Ця кінцева точка дозволяє отримати завдання анімації за дійсним id завдання. Перегляньте Об'єкт завдання анімації, щоб побачити, які властивості включені.
Параметри
Name
id
Type
path
Description
Унікальний ідентифікатор завдання анімації, яке потрібно отримати.
Повернені дані
Відповідь містить об'єкт Завдання анімації. Перегляньте розділ Об'єкт завдання анімації для деталей.
Ця кінцева точка остаточно видаляє завдання анімації, включно з усіма пов'язаними моделями та даними. Цю дію неможливо скасувати.
Параметри шляху
Name
id
Type
path
Description
ID завдання анімації, яке потрібно видалити.
Статус завдання
Завдання, яке все ще має статус PENDING, видаляється, а кредити, витрачені
під час створення, повертаються.
Завдання, яке вже перебуває в стані IN_PROGRESS, видалити неможливо: запит
відхиляється з кодом 409 Conflict, а завдання продовжує виконуватися. Кредити за завдання,
яке воркер уже почав виконувати, не підлягають поверненню, тому видалення його
під час виконання коштувало б вам і кредитів, і результату. Дочекайтеся, поки воно досягне
статусу SUCCEEDED, FAILED або CANCELED, а потім видаліть його.
Завдання у кінцевому стані (SUCCEEDED, FAILED або CANCELED) видаляється
без повернення коштів.
Повертає
Повертає 200 OK у разі успіху або 409 Conflict, коли завдання має статус
IN_PROGRESS.
// 200 OK on success, with an empty body.//// 409 Conflict when the task is IN_PROGRESS — the task is left 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."}
Повертає пагінований список завдань анімації користувача, починаючи з найновіших. Стандартна пагінація через page_num та page_size.
Зверніть увагу, що завдання, створені через API, керуються через API — вони не відображаються в My Assets веб-застосунку. Використовуйте цю кінцеву точку, щоб знайти завдання, ID якого у вас більше немає.
Об'єкт Animation Task представляє одиницю роботи для застосування анімації до персонажа з арматурою.
Властивості
Name
id
Type
string
Description
Унікальний ідентифікатор задачі.
Name
type
Type
string
Description
Тип задачі Анімація. Значення: animate.
Name
status
Type
string
Description
Статус задачі. Можливі значення: PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.
Name
progress
Type
integer
Description
Прогрес виконання задачі (0-100).
Name
created_at
Type
timestamp
Description
Мітка часу (у мілісекундах з початку епохи), коли задачу було створено.
Мітка часу відображає кількість мілісекунд, що минули з 1 січня 1970 року UTC, відповідно до
стандарту RFC 3339. Наприклад,
п'ятниця, 1 вересня 2023 року, 12:00:00 за Гринвічем, подається як 1693569600000. Це стосується
всіх міток часу в Meshy API.
Name
started_at
Type
timestamp
Description
Мітка часу (у мілісекундах з початку епохи), коли задача почала виконуватися. 0, якщо не розпочато.
Name
finished_at
Type
timestamp
Description
Мітка часу (у мілісекундах з початку епохи), коли задачу було завершено. 0, якщо не завершено.
Name
expires_at
Type
timestamp
Description
Мітка часу (у мілісекундах з початку епохи), коли закінчується термін дії результатів задачі.
Name
task_error
Type
object
Description
Деталі помилки для невдалих задач. Див. Помилки для повного опису об'єкта task_error.
Name
consumed_credits
Type
integer
Description
Кількість кредитів, витрачених цією задачею. Присутнє, коли статус задачі — PENDING, IN_PROGRESS або SUCCEEDED. Повертає 0 для задач зі статусом FAILED (кредити повертаються у разі невдачі).
Name
result
Type
object
Description
Містить URL-адреси вихідних файлів анімації, якщо статус задачі SUCCEEDED.
Name
animation_glb_url
Type
string
Description
Посилання для завантаження анімації у форматі GLB. Для задачі, створеної з action_ids, цей єдиний файл містить кожну запитану дію як окремий кліп.
Name
animation_fbx_url
Type
string
Description
Посилання для завантаження анімації у форматі FBX. Для задачі, створеної з action_ids, цей єдиний файл містить кожну запитану дію як окремий кліп.
Name
processed_usdz_url
Type
string
Description
Посилання для завантаження обробленої анімації у форматі USDZ.
Name
processed_armature_fbx_url
Type
string
Description
Посилання для завантаження обробленої арматури у форматі FBX.
Name
processed_animation_fps_fbx_url
Type
string
Description
Посилання для завантаження анімації зі зміненою частотою кадрів у форматі FBX (наприклад, якщо було використано операцію change_fps).
Name
preceding_tasks
Type
integer
Description
Кількість задач, що стоять у черзі перед цією. Має значення лише якщо статус — PENDING.
Повертає кожну анімацію в бібліотеці, впорядковані за action_id. Відповідь являє собою повний список, а не сторінку, тому одного виклику достатньо, щоб заповнити вибір дій. Фільтри звужують результат; опустіть їх усі, щоб отримати все.
Щоб переглянути цей самий каталог візуально, з анімованим попереднім переглядом кожної дії, див. довідник Бібліотека анімацій.
Ця кінцева точка безкоштовна — вона не витрачає кредити.
Параметри
Name
search
Type
string
Description
Пошук підрядка без урахування регістру за name або key. Зіставляється буквально, тому % та _ є звичайними символами, а не символами підстановки.
Name
category
Type
string
Description
Точний збіг за category.
Доступні значення:
WalkAndRun
BodyMovements
DailyActions
Fighting
Dancing
Name
sub_category
Type
string
Description
Точний збіг за sub_category. Приймається самостійно — назви підкатегорій не є унікальними в різних категоріях (Transitioning з'являється як у Fighting, так і в DailyActions), тому без category фільтр зіставляє цю підкатегорію скрізь, де вона з'являється.
Name
action_ids
Type
string
Description
Розділений комами список значень action_id для повернення, для вирішення конкретних ідентифікаторів, а не перегляду. Приймає щонайбільше 200 ідентифікаторів. Ідентифікатори, яких не має жодна анімація, просто відсутні у відповіді, тому ви також можете використовувати це для перевірки, чи доступні ще збережені вами ідентифікатори.
Поєднання фільтрів
Фільтри застосовуються разом — кожен з них ще більше звужує результат, тому анімація повертається лише якщо вона задовольняє всі з них. У межах одного фільтра кілька значень відповідають будь-якому з них: search зіставляється з name або key, а action_ids зіставляється з будь-яким ідентифікатором у списку.
Це означає, що комбінація без перетину повертає порожній масив, а не помилку. Дія 92 — це "Double Combo Attack", анімація категорії Fighting:
?action_ids=92&category=Fighting повертає дію 92.
?action_ids=92&category=Dancing повертає [] — це не анімація категорії Dancing.
?action_ids=92&search=walk повертає [] — її назва не відповідає walk.
Щоб отримати конкретні анімації незалежно від їхньої категорії, передайте action_ids окремо.
Кожен action_id, повернутий тут, приймається функцією Створення завдання анімації вище, і кожен ідентифікатор, який вона приймає, повертається тут. Застарілі анімації відсутні в обох випадках. Якщо ви кешуєте бібліотеку, періодично оновлюйте її, щоб застарілий ідентифікатор не затримувався у вашому виборі.
Значення, яке передається як action_id при створенні завдання анімації. Унікальне та стабільне, але не послідовне — вилучені анімації залишають прогалини в нумерації, тому ніколи не припускайте, що певний діапазон ідентифікаторів є дійсним.
Name
name
Type
string
Description
Зрозуміла людині назва для відображення. Не унікальна: деякі анімації мають спільну назву з іншим варіантом, тому використовуйте action_id або key як ідентифікатор.
Name
key
Type
string
Description
Унікальний стабільний слаг для анімації. Використовуйте його, якщо вам потрібен нечисловий ідентифікатор для ключування власного сховища.
Name
category
Type
string
Description
Групування верхнього рівня, наприклад Fighting.
Name
sub_category
Type
string
Description
Групування всередині категорії, наприклад AttackingwithWeapon.
Name
preview_url
Type
string
Description
URL анімованого GIF, що показує попередній перегляд дії, придатний для безпосереднього відображення у вашому власному засобі вибору.