UV展開API

UV展開APIは、既存の3Dモデルに対して高品質なUV展開を自動生成します。テクスチャリングの前提ステップとして使用するか、クリーンで重ならないUVレイアウトが必要な場合に使用します(Blender、Substance Painter、Unrealなどの下流ツール用)。

出力は「UVホワイトモデル」で、入力と同じ形状ですが、新しいUV座標が付与され、実際のテクスチャはありません(glTFマテリアルスロットを有効に保つために2×2のグレープレースホルダーマテリアルが含まれています。標準ツールではこれを未テクスチャとして扱います)。


POST/openapi/v1/uv-unwrap

UV展開タスクの作成

このエンドポイントは新しいUV展開タスクを作成します。

パラメータ

  • Name
    input_task_id
    Type
    string
    必須
    Description

    UV展開したいGLB出力を持つ完了したMeshy APIタスクのIDです(例えば、画像から3D、テキストから3D、またはリメッシュの結果)。ソースタスクはSUCCEEDEDのステータスを持ち、GLBファイルを生成している必要があります。

    ソースメッシュが40,000面のフェイス数上限を超える場合、リクエストは400で拒否され、ポリゴン数を減らすためにまずリメッシュを実行する必要があります。

  • Name
    model_url
    Type
    string
    必須
    Description

    公開アクセス可能なURLまたはData URIを介して3Dモデルを直接提供します。.glbのみがサポートされています — APIはglTFバイナリを読み取り、他の形式を解析しません。他の形式のモデル(.fbx.obj.stl.gltf)をUV展開するには、まず変換APIを介して.glbに変換し、その後、生成されたタスクIDをinput_task_idとして、またはそのGLB出力URLをここに渡します。

    Data URIの場合、MIMEタイプapplication/octet-streamを使用してください。

    input_task_idと同様に40,000面の上限が適用されます:サイズオーバーのメッシュは400で拒否されます — まずリメッシュを実行してください。

戻り値

レスポンスのresultプロパティには、新しく作成されたUV展開タスクのidが含まれています。

失敗モード

  • Name
    400 - Bad Request
    Description

    リクエストが受け入れられませんでした。一般的な原因:

    • パラメータが不足している: input_task_idまたはmodel_urlのいずれかを提供する必要があります。
    • 無効な入力タスク: input_task_idはGLB結果を持つ成功したタスクを指している必要があります。
    • フェイス数超過: ソースメッシュがUV展開の上限を超えるフェイス数を持っています。まずリメッシュを実行してください。
    • 無効なモデル形式: model_urlがサポートされていない拡張子のファイルを指しています。
    • 到達不能なURL: model_urlがダウンロードできませんでした。
  • Name
    401 - Unauthorized
    Description

    認証に失敗しました。APIキーを確認してください。

  • Name
    402 - Payment Required
    Description

    このタスクを実行するためのクレジットが不足しています。UV展開は1回の呼び出しにつき5クレジットが必要です。

  • Name
    404 - Not Found
    Description

    この機能はあなたのアカウントで有効になっていません。UV展開はロールアウト中にStatsigフラグで制限されています — アクセスが必要な場合はMeshyサポートに連絡してください。

  • Name
    429 - Too Many Requests
    Description

    レート制限を超えました。

Request

POST
/openapi/v1/uv-unwrap
# 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"
}

GET/openapi/v1/uv-unwrap/:id

UV展開タスクを取得する

このエンドポイントは、IDによってUV展開タスクの現在の状態を取得します。

戻り値

UV展開タスクオブジェクトを返します。

Request

GET
/openapi/v1/uv-unwrap/:id
curl https://api.meshy.ai/openapi/v1/uv-unwrap/019361c6-9b34-7b23-bef2-d0107c4d92e2 \
-H "Authorization: Bearer ${YOUR_API_KEY}"

以下の例のタスクオブジェクトを参照してください。


DELETE/openapi/v1/uv-unwrap/:id

UV展開タスクを削除する

UV展開タスクを永久に削除します。タスクとその出力はアクセスできなくなります。

Request

DELETE
/openapi/v1/uv-unwrap/:id
curl https://api.meshy.ai/openapi/v1/uv-unwrap/019361c6-9b34-7b23-bef2-d0107c4d92e2 \
-X DELETE \
-H "Authorization: Bearer ${YOUR_API_KEY}"

GET/openapi/v1/uv-unwrap

UV展開タスクをリスト

呼び出し元のUV展開タスクのページネーションされたリストを、新しいものから順に返します。標準的なページネーションはpage_numpage_sizeを使用します。

Request

GET
/openapi/v1/uv-unwrap
curl "https://api.meshy.ai/openapi/v1/uv-unwrap?page_num=1&page_size=20" \
-H "Authorization: Bearer ${YOUR_API_KEY}"

GET/openapi/v1/uv-unwrap/:id/stream

UV展開タスクをストリームする

サーバー送信イベントとしてタスクprogressを購読します。各messageイベントはUV展開タスクオブジェクトを運びます。タスクがSUCCEEDEDFAILED、またはCANCELEDに達するとストリームは閉じます。

完了時の低遅延のために、GET /openapi/v1/uv-unwrap/:idをポーリングする代わりにこれを使用してください。

Request

GET
/openapi/v1/uv-unwrap/:id/stream
curl https://api.meshy.ai/openapi/v1/uv-unwrap/019361c6-9b34-7b23-bef2-d0107c4d92e2/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-N

UV展開タスクオブジェクト

  • Name
    id
    Type
    string
    Description

    タスクのユニークな識別子。

  • Name
    type
    Type
    string
    Description

    常に uv-unwrap

  • Name
    model_urls
    Type
    object
    Description

    生成されたUVホワイトモデルのための事前署名されたダウンロードURL。UV展開は常に単一のglbエントリを返します。出力は入力ジオメトリを保持し、新しいUV座標を入れ替え、任意のテクスチャの代わりにデフォルトのグレーマテリアルを使用します。

  • Name
    thumbnail_url
    Type
    string
    Description

    UVホワイトモデルのPNGプレビューのための事前署名されたURL。

  • Name
    progress
    Type
    integer
    Description

    タスクの進行状況、0から100まで。

  • Name
    status
    Type
    string
    Description

    PENDINGIN_PROGRESSSUCCEEDEDFAILEDCANCELEDのいずれか。

  • Name
    preceding_tasks
    Type
    integer
    Description

    このタスクの前にキューに入っているタスクの数。ステータスがPENDINGの間に存在します。

  • Name
    created_at
    Type
    timestamp
    Description

    タスク作成のタイムスタンプ(ミリ秒単位)。

  • Name
    started_at
    Type
    timestamp
    Description

    処理が開始された時のタイムスタンプ(ミリ秒単位)。開始されるまで0

  • Name
    finished_at
    Type
    timestamp
    Description

    完了時のタイムスタンプ(ミリ秒単位)。完了するまで0

  • Name
    expires_at
    Type
    timestamp
    Description

    署名されたダウンロードURLが期限切れになる時のタイムスタンプ(ミリ秒単位)。

  • Name
    task_error
    Type
    object
    Description

    失敗したタスクのエラー詳細。完全なtask_errorオブジェクトのリファレンスについてはエラーを参照してください。

  • Name
    consumed_credits
    Type
    integer
    Description

    このタスクで消費されたクレジット。FAILEDタスクの場合は0を返します(失敗時にはクレジットが返金されます)。UV展開は成功時に5クレジットを請求します。

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
}