Ця кінцева точка дозволяє створити нове завдання для застосування анімації до раніше ригованого персонажа — попередньо задану дію з бібліотеки анімацій (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 ретаргетинг може створити анімацію лише у форматі 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 } }'
Ця кінцева точка остаточно видаляє завдання анімації, включаючи всі пов'язані моделі та дані. Ця дія незворотна.
Параметри шляху
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 — вони не з'являються в розділі «Мої активи» веб-застосунку. Використовуйте цю кінцеву точку, щоб знайти завдання, 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
URL-адреса для завантаження анімації у форматі GLB. Для завдання, створеного з action_ids, цей єдиний файл містить кожну запитану дію як окремий кліп.
Name
animation_fbx_url
Type
string
Description
URL-адреса для завантаження анімації у форматі FBX. Для завдання, створеного з action_ids, цей єдиний файл містить кожну запитану дію як окремий кліп.
Name
processed_usdz_url
Type
string
Description
URL-адреса для завантаження обробленої анімації у форматі USDZ.
Name
processed_armature_fbx_url
Type
string
Description
URL-адреса для завантаження обробленої арматури у форматі FBX.
Name
processed_animation_fps_fbx_url
Type
string
Description
URL-адреса для завантаження анімації зі зміненою частотою кадрів у форматі 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 для повернення, для визначення конкретних id, а не перегляду. Приймає щонайбільше 200 id. Id, які не має жодна анімація, просто відсутні у відповіді, тому ви також можете використовувати це, щоб перевірити, чи все ще доступні збережені вами id.
Комбінування фільтрів
Фільтри застосовуються разом — кожен з них додатково звужує результат, тому анімація повертається лише тоді, коли вона задовольняє всі з них. У межах одного фільтра кілька значень збігаються з будь-яким із них: search збігається з name або key, а action_ids збігається з будь-яким id у списку.
Це означає, що комбінація без перетину повертає порожній масив, а не помилку. Дія 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, що повертається тут, приймається методом Create an Animation Task вище, і кожен id, який він приймає, повертається тут. Виведені з обігу анімації відсутні в обох. Якщо ви кешуєте бібліотеку, періодично оновлюйте її, щоб виведений з обігу 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-зображення з попереднім переглядом дії, придатна для безпосереднього відображення у вашому власному засобі вибору.