1. Créer la tâche image
Définissez une clé API et une URL d’image publique, puis envoyez une seule tâche. La réponse est asynchrone : conservez l’identifiant de tâche et ne créez pas de seconde tâche pendant le traitement de la première.
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. Interroger la tâche et télécharger le GLB
Interrogez le même identifiant jusqu’à `succeeded`, `failed` ou `canceled`. Lorsque `status` vaut `succeeded`, téléchargez l’URL de `.output.model_file`.
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. Demander un rig humanoïde séparé
Hébergez `character.glb` à une URL accessible par l’API, puis envoyez la seconde tâche. Choisissez `mixamo` si c’est la convention de noms que vous souhaitez examiner en premier. Interrogez `https://api.to3d.app/api/skin_tokens/tasks/$RIG_ID` et téléchargez `output.model_file` après réussite.
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. Vérifier le fichier dans Unity
Importez le GLB téléchargé avec le package ou l’importeur Unity utilisé par votre projet. Vérifiez l’échelle du modèle, les matériaux, le mappage du squelette, la bind pose et les clips d’animation. Si Unity signale des os non mappés ou un avatar impossible à configurer, ajustez le rig ou le mappage dans le projet et testez une pose simple. Le libellé `mixamo` de l’API est une option de nommage ; ce n’est pas une certification TO3D du retargeting Unity Humanoid.
- Conservez séparément le GLB généré, le GLB riggé et le résultat de l’import Unity pendant la validation de votre personnage.
Garder la preuve des samples dans son périmètre
L’inspection des samples du #56 a trouvé des articulations de squelette, des poids de skinning, des UV et un PNG intégré dans chacun des quatre GLB publics. Cela décrit le contenu de ces fichiers. Cela ne prouve pas que toute nouvelle entrée se déformera correctement, contiendra des formes faciales ou s’importera sans nettoyage.
- Les quatre samples ne démontrent ni formes faciales, ni visèmes, ni export VRM, ni retargeting automatique dans Unity.