1. JPEG URL 제출하기
공개 JPEG URL로 이미지 작업 하나를 제출합니다. 반환된 작업 ID를 보관하고 처리 중에는 다른 작업을 만들지 마세요.
export TO3D_KEY='YOUR_API_KEY'
export TO3D_IMAGE_URL='https://example.com/product.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")
printf 'Task: %s\n' "$TASK_ID"폴링하고 GLB 다운로드하기
다른 작업을 만들지 않고 폴링합니다. 작업이 성공하면 반환된 모델 URL을 저장하고 GLB를 다운로드합니다.
while :; do
STATUS_JSON=$(curl --fail-with-body --silent --show-error \
"https://api.to3d.app/api/trellis/tasks/$TASK_ID" \
-H "x-api-key: $TO3D_KEY")
STATUS=$(jq -er '.status' <<<"$STATUS_JSON")
case "$STATUS" in
succeeded) jq -er '.output.model_file' <<<"$STATUS_JSON" > model-url.txt; break ;;
failed|canceled) jq '{id,status,error}' <<<"$STATUS_JSON" >&2; exit 1 ;;
pending|processing) sleep 5 ;;
*) printf 'Unexpected status: %s\n' "$STATUS" >&2; exit 1 ;;
esac
done
curl --fail --location --silent --show-error \
"$(cat model-url.txt)" --output product.glb
[ "$(head -c 4 product.glb)" = 'glTF' ]2. AR 뷰어에 넣기 전에 검사하기
먼저 GLB를 지원하는 뷰어에서 `product.glb`를 엽니다. 제품 실루엣, 보이는 머티리얼, UV, 텍스처가 장면에서 사용할 수 있는지 확인하세요. 실제 스케일은 자신의 파이프라인에서 설정합니다. JPEG 한 장만으로 치수가 정해지지는 않습니다.
- AR 대상이 다른 형식이나 플랫폼별 앵커를 요구한다면 대상 툴체인에서 변환을 수행하고 테스트하세요.
3. 대상 디바이스에서 검증하기
지원하는 휴대폰, 브라우저 또는 헤드셋에서 뷰어를 실행합니다. 다운로드 크기, 조명, 텍스처 해상도, 카메라 배치, 오클루전, 상호작용, 프레임 레이트를 확인하세요.
- #56에서는 USDZ 출력, 실제 스케일, AR 앵커 또는 AR 디바이스를 검증하지 않았습니다. 이 글은 재현 가능한 시작 워크플로를 설명하며 JPEG가 자동으로 보정된 AR 제품 에셋이 된다는 주장이 아닙니다.
샘플 증거의 범위 지키기
공개 샘플 GLB 네 개는 임베디드 PNG 텍스처, UV, 조인트, 스킨 웨이트가 있는 구조 예시입니다. 제품 모델에는 리그가 필요하지 않을 수 있습니다. 오브젝트에 스켈레톤이 필요한 경우에만 Skin Tokens를 사용하세요.
- 원본 JPEG, API 작업 ID, 다운로드한 GLB, 변환한 AR 에셋을 함께 보관해 나중에 외관이나 스케일 문제를 올바른 단계로 추적할 수 있게 하세요.