Skip to content

feat: add tripo3d as third 3d provider#2

Open
mvanhorn wants to merge 1 commit into
neilsonnn:mainfrom
mvanhorn:feat/tripo-3d-provider
Open

feat: add tripo3d as third 3d provider#2
mvanhorn wants to merge 1 commit into
neilsonnn:mainfrom
mvanhorn:feat/tripo-3d-provider

Conversation

@mvanhorn
Copy link
Copy Markdown

Summary

image-blast-3d now accepts --provider tripo, with Tripo3D running on FAL alongside the existing Meshy and Hunyuan adapters.

Why this matters

Image-blaster's per-object 3D layer already exposes a multi-provider switch (Meshy and Hunyuan). Tripo3D is the third top-tier image-to-3D engine and the one with the highest demo-video traction in 2026 by view count. Its hand-surface and cartoon-illustration models are well-regarded in the comparison literature, and it's available on FAL with the same queue + result shape the existing adapters already use.

Source Evidence
Tripo3D v2.5 image-to-3D on FAL endpoint exists, queue-based, returns model_mesh.url (.glb)
Tripo 3.1 demo 446K views, production-ready 3D from a single image
Hunyuan vs Meshy vs Tripo head-to-head Tripo named top tier alongside the two providers already supported
ideate.xyz Trellis vs Tripo vs Meshy vs Rodin vs Hunyuan comparative review of the same five engines

Demo

Simulated demo (HyperFrames):

demo

Changes

  • tripo-3d.mjs mirrors meshy-3d.mjs exactly: queue submit through fal-queue.mjs, response download through fal-3d-provider.mjs, indexed .N-<object>-request.json provenance unchanged
  • generate-single-asset.mjs gains tripo aliases in MODEL_PROVIDER_ALIASES, a tripo branch in run3DProvider, a Tripo branch in modelRequestPrefix, and Tripo CLI flags (--texture, --pbr, --face-limit, --quad, --auto-size, --texture-alignment, --orientation)
  • Skill + agent + README updated to advertise --provider tripo alongside the existing options

Tripo endpoint: tripo3d/tripo/v2.5/image-to-3d. Defaults: texture: "standard", pbr: true, face_limit: 30000, quad: false.

Testing

  • node --check passes on tripo-3d.mjs and generate-single-asset.mjs
  • Provider abstraction follows the same shape as the existing Meshy adapter; no API call was made from this PR (would require FAL credits + a test image)

AI was used for assistance.

yugao-gaos added a commit to yugao-gaos/image-blaster that referenced this pull request May 28, 2026
Addresses 4 UX gaps in the cube-capture flow:

- Back to faces (neilsonnn#2): MaskPainter cancel now returns to the 6-face picker
  (setPhase 'picking') instead of reset(); a separate ✕ still closes the flow.
- Inpaint review (neilsonnn#3): new 'reviewing' phase + InpaintReview modal shows
  Original vs Inpainted side-by-side (plus a wipe slider) with Use / Re-mask /
  Discard — only "Use" records the result. MaskPainter routes inpaint success
  through reviewInpaint() instead of recording immediately.
- Persist + revisit capture position (neilsonnn#4): /__cube-capture writes a
  cube-capture-N.json sidecar with capturePosition; /__cube-captures returns it.
  CubeFacePicker gains a per-capture snap button + snaps on reopen.
  CameraSnapController (new) tweens the viewer camera back to a capture's
  vantage; works in Fly mode as-is and via a shared-ref teleport in FPS mode
  (cameraFocus.ts + CharacterController.tsx).
- WorldViewer mounts InpaintReview (DOM) + CameraSnapController (Canvas).

Store: inpaintedFaces map already existed; added pendingInpaint + reviewing
phase + cameraSnapTarget. Built via parallel sub-agent waves; whole app
tsc-clean, zero runtime console errors on fresh load. Live capture mechanics
unchanged from the prior validated fix; flux-fill inpaint model unchanged
(fal-ai/flux-pro/v1/fill).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant