1. 创建图片任务
设置 API 密钥和公开图片 URL,然后提交一个任务。响应是异步的;保留任务 ID,在第一个任务处理期间不要创建第二个任务。
export TO3D_KEY='YOUR_API_KEY'
export TO3D_IMAGE_URL='https://example.com/character.png'
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")
printf 'Task: %s\n' "$TASK_ID"2. 轮询任务并下载 GLB
轮询同一个任务 ID,直到状态变为 `succeeded`、`failed` 或 `canceled`。当 `status` 为 `succeeded` 时,下载 `.output.model_file` 中的 URL。
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 character.glb
[ "$(head -c 4 character.glb)" = 'glTF' ]3. 请求独立的人形绑定任务
将 `character.glb` 放在 API 可以访问的 URL 上,然后提交第二个任务。如果想先检查这种命名约定,请选择 `mixamo`。轮询 `https://api.to3d.app/api/skin_tokens/tasks/$RIG_ID`,成功后下载其中的 `output.model_file`。
export TO3D_MODEL_URL='https://example.com/character.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:"mixamo"}}')")
RIG_ID=$(jq -er '.id' <<<"$RIG_JSON")
printf 'Rig task: %s\n' "$RIG_ID"4. 在 Unity 中检查文件
使用项目采用的 Unity 包或导入器导入下载的 GLB。检查模型比例、材质、骨骼映射、绑定姿势和动画片段。如果 Unity 报告有未映射的骨骼或无法配置的 Avatar,请在项目中调整绑定或映射,并测试一个简单姿势。API 中的 `mixamo` 标签是命名选项,不是 TO3D 对 Unity Humanoid 重定向的认证。
- 验证自己的角色时,将生成的 GLB、绑定后的 GLB 和 Unity 导入结果作为彼此独立的产物保存。
限定样例证据的范围
#56 的样例检查发现,四个公开 GLB 都包含骨架关节、蒙皮权重、UV 和内嵌 PNG。这些证据只说明这些文件包含什么,并不能证明每个新输入都能良好变形、包含面部形状或无需清理即可导入。
- 四个样例不能证明面部形状、viseme、VRM 导出或 Unity 自动重定向。