1. GLB を生成する
公開画像 URL で 1 件の画像タスクを送信します。レスポンスは非同期なので、返されたタスク ID を保持します。
export TO3D_KEY='YOUR_API_KEY'
export TO3D_IMAGE_URL='https://example.com/prop-or-character.jpg'
TASK_JSON=$(curl --fail-with-body --silent --show-error \
https://api.to3d.app/api/trellis/tasks \
-H "x-api-key: $TO3D_KEY" \
-H 'Content-Type: application/json' \
-d "$(jq -cn --arg image "$TO3D_IMAGE_URL" \
'{task_type:"image-to-3d",input:{image:$image}}')")
TASK_ID=$(jq -er '.id' <<<"$TASK_JSON")ポーリングして GLB を保存する
タスクが成功するまでポーリングし、`output.model_file` の URL を保存します。ポーリングを 2 回目の生成リクエストとして説明しないでください。
curl --fail-with-body --silent --show-error \
"https://api.to3d.app/api/trellis/tasks/$TASK_ID" \
-H "x-api-key: $TO3D_KEY" | jq '{id,status,output,error}'
MODEL_URL=$(curl --fail-with-body --silent --show-error \
"https://api.to3d.app/api/trellis/tasks/$TASK_ID" \
-H "x-api-key: $TO3D_KEY" | jq -er '.output.model_file')
curl --fail --location --silent --show-error "$MODEL_URL" --output unreal-candidate.glb2. 人型リグが必要なときに UE5 のボーン名を指定する
ダウンロードした GLB を公開 URL にアップロードまたは配置し、独立した Skin Tokens リクエストを送信します。`/api/skin_tokens/tasks/$RIG_ID` をポーリングし、成功後に返された `output.model_file` をダウンロードします。2 つの呼び出しを 1 回の自動変換として説明しないでください。
export TO3D_MODEL_URL='https://example.com/unreal-candidate.glb'
RIG_JSON=$(curl --fail-with-body --silent --show-error \
https://api.to3d.app/api/skin_tokens/tasks \
-H "x-api-key: $TO3D_KEY" \
-H 'Content-Type: application/json' \
-d "$(jq -cn --arg model "$TO3D_MODEL_URL" \
'{task_type:"rig",input:{model:$model,bone_names:"ue5"}}')")
RIG_ID=$(jq -er '.id' <<<"$RIG_JSON")
printf 'Rig task: %s\n' "$RIG_ID"3. Unreal 側を確認する
プロジェクトで使うインポーターとプラグインで GLB を読み込みます。アセットの単位と向き、マテリアルとテクスチャ参照、スケルトン階層、バインドポーズ、アニメーションまたはリターゲティングの動作を確認します。
- `ue5` は API のボーン命名オプションです。
- #56 では Unreal のインポートやリターゲティングの受け入れテストを行っていないため、このチュートリアルは完成済みの Unreal スケルトン、コリジョン設定、LOD、ゲームプレイ用アニメーションを保証できません。
サンプルを構造の参照として使う
#56 で検査した 4 つの公開サンプルには、スキン、ジョイント、ウェイト、UV、埋め込み PNG テクスチャが 1 つずつありました。受け取る可能性のあるファイル形状を理解するために使い、新しい生成物は毎回個別にアセットレビューしてください。
- 静的プロップが目的ならリギングリクエストを省略し、スケールとマテリアルを確認します。