Превратите исходное фото в абажур лампы, готовый к 3D-печати, в два этапа:
prototype создаёт стилизованное концептуальное изображение в матово-белых
тонах и преобразует его в полую 3D-модель (GLB), затем build запускает
обработчик лампы на этой модели для получения печатаемых деталей STL — абажура
с открытым низом и опорной пластиной для крепления источника света, а также
самого крепления для источника света. Оба этапа связаны через input_task_id.
Сгенерируйте единое матово-белое концептуальное изображение по референсному фото и
конвертируйте его в полую 3D-модель абажура лампы. Ответ содержит как
концептуальное изображение (image_urls), так и 3D-модель (model_urls.glb с
thumbnail_url). Возвращённый ID задачи — это то, что вы передаёте как input_task_id
в эндпоинт сборки. Обратитесь к разделу
Объект задачи прототипа лампы
для описания структуры ответа.
Параметры
Name
image_url
Type
string
Обязательный
Description
Исходное фото, которое Meshy использует в качестве визуального референса для абажура. В настоящее время поддерживаются форматы .jpg, .jpeg, .png и .webp.
Есть два способа предоставить изображение:
Публично доступный URL: URL, доступный из публичного интернета.
Data URI: закодированный в base64 data URI изображения. Пример data URI: data:image/jpeg;base64,<your base64-encoded image data>.
Name
image_subject
Type
string
по умолчанию character
Description
Подсказка категории объекта, которая выбирает prompt стилизации. Доступные значения:
character (по умолчанию) — одиночный персонаж/объект (фигурка, животное, талисман и т.д.).
landscape — уличная сцена/панорама (гора, городской пейзаж, лес и т.д.).
Name
name
Type
string
Description
Необязательное название задачи для отображения. Максимум 100 символов.
Name
remove_background
Type
boolean
по умолчанию false
Description
Если установлено значение true, изображение прототипа возвращается в виде прозрачного PNG в формате RGBA с удалённым фоном, чтобы вы могли скомпоновать объект с любым фоном.
Возвращаемое значение
Свойство result ответа содержит id задачи вновь созданного прототипа лампы. Опрашивайте эндпоинт Получение задачи или подпишитесь на поток, пока задача не достигнет статуса SUCCEEDED, затем передайте этот ID в эндпоинт сборки как input_task_id.
Режимы сбоя
Name
400 - Bad Request
Description
Запрос был некорректным. Распространённые причины:
Отсутствует параметр: требуется image_url.
Недопустимый формат изображения: указанный image_url не соответствует поддерживаемому формату (.jpg, .jpeg, .png, .webp).
Размеры изображения вне допустимого диапазона: изображение слишком маленькое, превышает максимальный размер файла или превышает максимальное количество пикселей.
Недоступный URL: не удалось загрузить image_url (404 или timeout).
Недопустимый Data URI: строка base64 некорректно сформирована.
Контент отмечен модерацией: входное изображение было отмечено модерацией NSFW или модерацией интеллектуальной собственности.
Недопустимое значение image_subject: не является одним из character / landscape.
Генерирует финальные пригодные для 3D-печати детали из успешно завершённой задачи прототипа.
Сборка запускает процессор лампы на 3D-модели прототипа: масштабирует
модель до diameter_mm, выравнивает низ по cut_amount_percent,
делает её полой до thickness_mm, открывает низ и — если выбран пресет
крепления — добавляет базовую пластину с отверстием для крепления и отдельное
крепление для источника света. Обратитесь к разделу
Объект задачи сборки лампы для описания
формата ответа.
Параметры
Name
input_task_id
Type
string
Обязательный
Description
ID задачи прототипа, созданной через этот же эндпоинт OpenAPI. Прототип должен быть создан с тем же API-ключом, должен достичь статуса SUCCEEDED и должен был создать 3D-модель.
Задачи прототипов, созданные через веб-приложение, не принимаются — эндпоинт сборки принимает только задачи прототипов, созданные через POST /openapi/creative-lab/lamp/v1/prototype, и отклоняет любой другой источник с кодом 404.
Name
name
Type
string
Description
Необязательное название задачи для отображения. Максимум 100 символов.
options
Необязательные параметры настройки геометрии абажура. Каждое поле имеет разумное значение по умолчанию — отправляйте только те, которые хотите переопределить.
Name
diameter_mm
Type
number
по умолчанию 150
Description
Целевой максимальный размер ограничивающего параллелепипеда абажура, в миллиметрах. Сетка равномерно масштабируется, чтобы соответствовать этому значению. Диапазон: [50, 400].
Name
thickness_mm
Type
number
по умолчанию 1
Description
Толщина стенки полого абажура, в миллиметрах. Диапазон: (0, 10].
Name
cut_amount_percent
Type
number
по умолчанию 1
Description
Процент высоты модели, срезаемый ровно снизу, чтобы абажур устойчиво стоял на печатной платформе и имел отверстие для крепления. Диапазон: [1, 100].
Name
light_source_preset
Type
string
по умолчанию bambu_mh001_60mm
Description
Пресет крепления источника света, определяющий способ построения нижней части. Доступные значения:
bambu_mh001_60mm (по умолчанию) — абажур с открытым дном плюс базовая пластина с отверстием крепления 60 мм, оба находятся в model_urls.lamp_stl, а крепление источника света — в model_urls.base_stl.
none — единый закрытый абажур в model_urls.lamp_stl; model_urls.base_stl отсутствует.
Name
fixture_offset_x_mm
Type
number
по умолчанию 0
Description
Смещение отверстия крепления на базовой пластине по оси X относительно центра абажура, в миллиметрах. Имеет значение только когда light_source_preset ≠ none. Диапазон: [-80, 80].
Name
fixture_offset_z_mm
Type
number
по умолчанию 0
Description
Смещение отверстия крепления на базовой пластине по оси Z (глубина) относительно центра абажура, в миллиметрах. Имеет значение только когда light_source_preset ≠ none. Диапазон: [-80, 80].
Name
rotate_x_deg
Type
number
по умолчанию 0
Description
Поворот вокруг оси X, применяемый к модели перед обработкой, в градусах. Три поворота применяются как углы Эйлера XYZ относительно центра модели. Диапазон: [-360, 360].
Name
rotate_y_deg
Type
number
по умолчанию 0
Description
Поворот вокруг оси Y, применяемый к импортированной сетке перед обработкой, в градусах. Диапазон: [-360, 360].
Name
rotate_z_deg
Type
number
по умолчанию 0
Description
Поворот вокруг оси Z, применяемый к импортированной сетке перед обработкой, в градусах. Диапазон: [-360, 360].
Name
include_result_json
Type
boolean
по умолчанию false
Description
Если true и output.format равен zip, включает файл result.json процессора лампы (название конвейера, предупреждения и пути к артефактам) внутрь пакета. Игнорируется, если output.format равен stl.
output
Необязательный селектор формата передачи. По умолчанию — stl.
stl (по умолчанию) — возвращает model_urls.lamp_stl (абажур вместе с базовой пластиной, если задан пресет крепления), а также model_urls.base_stl, если light_source_preset ≠ none.
zip — упаковывает все артефакты, создаваемые процессором (lamp.stl, необязательный base.stl, необязательный result.json), в единый zip-архив и возвращает его в model_urls.bundle_zip.
Возвращаемые значения
Свойство result ответа содержит id задачи вновь созданной задачи сборки лампы. Опрашивайте эндпоинт Получить задачу или подпишитесь на поток, пока задача не достигнет статуса SUCCEEDED, а затем скачайте артефакты из model_urls.
Режимы сбоя
Name
400 - Bad Request
Description
Запрос был некорректен. Распространённые причины:
Отсутствует параметр: input_task_id обязателен.
Недопустимый UUID: input_task_id не является допустимым UUID.
Родительская задача не завершена успешно: указанная задача прототипа ещё не достигла статуса SUCCEEDED.
Нет модели: задача прототипа завершилась успешно, но не создала 3D-модель.
Параметры вне диапазона: одно из полей options вышло за пределы допустимого диапазона или набора значений.
Указанная задача прототипа не существует, принадлежит другому пользователю или была создана через веб-приложение (в цепочку сборки могут входить только задачи прототипов, созданные в режиме API).
Получите задачу prototype или build по действительному id задачи. Путь URL
должен соответствовать стадии задачи — если задача build запрашивается через
/prototype/:id, возвращается 404, и наоборот.
Отменяет задачу лампы. Если задача всё ещё находится в статусе PENDING,
кредиты, потраченные при создании, возвращаются. Задачи, уже находящиеся в статусе
IN_PROGRESS, отменяются без возврата средств (воркер, возможно, уже расходует
ресурсы). Задачи, которые уже достигли конечного состояния (SUCCEEDED, FAILED,
CANCELED), не могут быть отменены.
Путь URL должен соответствовать текущему этапу задачи — DELETE на
/prototype/:buildId возвращает 404.
Параметры пути
Name
id
Type
path
Description
Уникальный идентификатор задачи лампы, которую нужно отменить.
Возвращает
Возвращает 204 No Content при успешном выполнении с пустым телом ответа.
Режимы сбоя
Name
400 - Bad Request
Description
Задача уже находится в конечном состоянии и не может быть отменена.
Name
404 - Not Found
Description
Задача не существует, принадлежит другому пользователю, либо её этап не соответствует пути URL.
Транслирует обновления в реальном времени для задачи лампы через Server-Sent Events (SSE).
Путь URL должен соответствовать стадии задачи — открытие потока по адресу
/prototype/:buildId/stream приводит к отправке единственной полезной нагрузки event: error с
status_code: 404, после чего поток закрывается.
Параметры
Name
id
Type
path
Description
Уникальный идентификатор задачи лампы, для которой запрашивается поток.
Возвращает
Возвращает поток объектов задачи Lamp Prototype
или Lamp Build в виде Server-Sent Events. Каждый кадр содержит полный объект задачи для данной стадии — в том же виде,
что возвращает эндпоинт Get, — поэтому пока задача находится в статусе PENDING или IN_PROGRESS,
выходные поля просто ещё не заполнены (null, [] или {}), а
finished_at равно null.
// Error event example (wrong stage or task not found)event: errordata: {"status_code": 404,"message": "Task not found"}// Message event examples illustrate task progress.// Every frame is the full task object; fields not yet populated are null / empty.// The PENDING frame below is abbreviated to the fields that change.event: messagedata: {"id": "019c320e-9a8f-7a1c-9c11-2a1876f8a9bb","progress": 0,"status": "PENDING"}event: messagedata: {"id": "019c320e-9a8f-7a1c-9c11-2a1876f8a9bb","type": "creative-lab-lamp-build","status": "SUCCEEDED","progress": 100,"created_at": 1729123500000,"started_at": 1729123510000,"finished_at": 1729123535000,"expires_at": 1729382735000,"task_error": null,"consumed_credits": 6,"model_urls": {"lamp_stl":"https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/lamp.stl?Expires=***","base_stl":"https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/base.stl?Expires=***" }}
Получите пагинированный список ваших задач лампы для одного этапа. Путь URL
выбирает этап — /prototype возвращает задачи прототипа; /build
возвращает задачи сборки. Задачи другого этапа не включаются ни в один
из ответов.
Параметры пути
Name
stage
Type
path
Обязательный
Description
Либо prototype, либо build. Коллекция возвращает только задачи,
этап которых соответствует URL — запрос /prototype никогда не возвращает
задачи сборки, и наоборот.
Параметры запроса
Name
page_num
Type
integer
по умолчанию 1
Description
Номер страницы для пагинации.
Name
page_size
Type
integer
по умолчанию 10
Description
Ограничение размера страницы. Максимально допустимое значение — 100 элементов.
Name
sort_by
Type
string
по умолчанию -created_at
Description
Поле для сортировки. Доступные значения:
+created_at: сортировка по времени создания в порядке возрастания.
-created_at: сортировка по времени создания в порядке убывания.
Объект задачи прототипа лампы (Lamp Prototype Task) — это единица работы, которую Meshy отслеживает, чтобы сгенерировать стилизованное матово-белое концептуальное изображение из исходной фотографии и конвертировать его в полую 3D-модель. Результат этого этапа передаётся в этап сборки через input_task_id.
Свойства
Name
id
Type
string
Description
Уникальный идентификатор задачи. Хотя в качестве деталей реализации мы используем k-сортируемый UUID для идентификаторов задач, вам не следует делать каких-либо предположений о формате id.
Name
type
Type
string
Description
Тип задачи. Значение — creative-lab-lamp-prototype.
Name
name
Type
string
Description
Название задачи, указанное при её создании. Пустая строка, если название не было указано.
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 GMT представляется как 1693569600000. Это применимо
ко всем временным меткам в Meshy API.
Name
started_at
Type
timestamp
Description
Временная метка начала выполнения задачи, в миллисекундах. Если задача ещё не начата, это свойство будет равно 0.
Name
finished_at
Type
timestamp
Description
Временная метка завершения задачи, в миллисекундах. Если задача ещё не завершена, это свойство будет равно 0.
Name
expires_at
Type
timestamp
Description
Временная метка истечения срока действия результата задачи, в миллисекундах.
Name
preceding_tasks
Type
integer
Description
Количество предшествующих задач.
Значение этого поля имеет смысл только если статус задачи — PENDING.
Name
task_error
Type
object
Description
Детали ошибки для неудавшихся задач. См. Ошибки для полного описания объекта task_error.
Name
consumed_credits
Type
integer
Description
Количество кредитов, потраченных на эту задачу. Присутствует, когда статус задачи — PENDING, IN_PROGRESS или SUCCEEDED. Возвращает 0 для задач со статусом FAILED (кредиты возвращаются при неудаче).
Name
model_urls
Type
object
Description
Ссылки для скачивания 3D-модели, сгенерированной из концептуального изображения. Присутствует после успешного завершения задачи; до этого — {}.
Name
glb
Type
string
Description
Ссылка для скачивания полой матово-белой модели плафона лампы в формате GLB. Это модель, которую обрабатывает этап сборки.
Name
thumbnail_url
Type
string
Description
Ссылка для скачивания отрендеренного превью 3D-модели. Пустая строка, пока задача не завершится успешно.
Name
image_urls
Type
array of strings
Description
Ссылки для скачивания кандидатов концептуального изображения, сгенерированных этой задачей прототипа. В настоящее время API всегда возвращает ровно одного кандидата; поле представляет собой массив, чтобы будущие версии могли предоставлять несколько кандидатов без обратной несовместимости.
Объект задачи сборки лампы (Lamp Build Task) — это рабочая единица, которую Meshy отслеживает для создания финального 3D-печатаемого плафона лампы из успешно завершённой задачи прототипа. Сборка запускает обработчик лампы на 3D-модели прототипа, чтобы сделать её полой, выровнять и открыть дно, а также (при использовании пресета крепления) добавить базовую пластину и крепление для патрона.
Свойства
Name
id
Type
string
Description
Уникальный идентификатор задачи.
Name
type
Type
string
Description
Тип задачи. Значение — creative-lab-lamp-build.
Name
name
Type
string
Description
Название задачи, указанное при её создании. Пустая строка, если название не было указано.
Name
status
Type
string
Description
Статус задачи. Возможные значения: PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.
Name
progress
Type
integer
Description
Прогресс выполнения задачи. Если задача ещё не запущена, значение будет 0. Как только задача успешно завершится, значение станет 100.
Name
created_at
Type
timestamp
Description
Временная метка создания задачи, в миллисекундах.
Name
started_at
Type
timestamp
Description
Временная метка запуска задачи, в миллисекундах.
Name
finished_at
Type
timestamp
Description
Временная метка завершения задачи, в миллисекундах.
Name
expires_at
Type
timestamp
Description
Временная метка истечения срока действия результата задачи, в миллисекундах.
Name
preceding_tasks
Type
integer
Description
Количество задач, стоящих в очереди перед текущей. Имеет значение только при статусе PENDING.
Name
task_error
Type
object
Description
Детали ошибки для неудавшихся задач. См. Ошибки для полного описания объекта task_error.
Name
consumed_credits
Type
integer
Description
Количество кредитов, израсходованных на выполнение этой задачи. Для задач со статусом FAILED возвращает 0 (кредиты возвращаются при неудаче).
Name
model_urls
Type
object
Description
Ссылки для скачивания сгенерированных артефактов, с ключами по названию артефакта. Набор ключей зависит от output.format и options.light_source_preset:
Name
lamp_stl
Type
string
Description
Ссылка для скачивания lamp.stl: плафон лампы с открытым дном вместе с базовой пластиной, несущей отверстие для крепления, либо единый герметичный плафон, если options.light_source_preset было none. Присутствует, если output.format было stl (значение по умолчанию).
Name
base_stl
Type
string
Description
Ссылка для скачивания base.stl — крепления для патрона источника света. Присутствует, если output.format было stlиoptions.light_source_preset было отличным от none. Отсутствует, если пресет крепления был none.
Name
bundle_zip
Type
string
Description
Ссылка для скачивания zip-архива со всеми артефактами, создаваемыми обработчиком (lamp.stl, опционально base.stl и — если options.include_result_json равно true — result.json). Присутствует, если output.format было zip. Если присутствует bundle_zip, поля lamp_stl / base_stl отсутствуют.