← Back to blog
UNREAL WORKFLOW · Published 2026-09-29

Prepare an image-generated GLB for an Unreal asset workflow

An image-to-3D service can give you a GLB to evaluate in an Unreal project, but “Unreal asset” still includes project-side import, materials, scale, skeleton, and retargeting work. TO3D's documented API separates mesh generation from humanoid binding. This tutorial shows the two requests and marks the Unreal checks you must perform yourself.

1. Generate the GLB

Submit one image task with a public image URL. The response is asynchronous, so keep the returned task 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")

Poll and save the GLB

Poll until the task succeeds, then save the URL from `output.model_file`. Do not describe polling as a second generation request.

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.glb

2. Ask for UE5 bone names when you need a humanoid rig

Upload or host the downloaded GLB at a public URL, then submit the independent Skin Tokens request. Poll `/api/skin_tokens/tasks/$RIG_ID` and download the returned `output.model_file` after it succeeds. Do not describe the two calls as a single automatic conversion.

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. Verify the Unreal side

Import the GLB with the importer and plugins used by your project. Check the asset's units and orientation, material and texture references, skeleton hierarchy, bind pose, and animation or retargeting behavior.

  • The `ue5` value is an API bone-naming option.
  • #56 did not perform an Unreal import or retargeting acceptance test, so this tutorial cannot promise a ready-made Unreal skeleton, collision setup, LODs, or gameplay animation.

Use samples as structure references

Four public samples inspected for #56 contained a skin, joints, weights, UVs, and one embedded PNG texture. Use those samples to understand the file shape you may receive; treat every new generation as a fresh asset review.

  • If the target is a static prop, skip the rigging request and validate scale and materials instead.
Prepare an image-generated GLB for an Unreal asset workflow | TO3D