TripoSG β€” ONNX export (staged graphs)

ONNX re-export of VAST-AI/TripoSG (SIGGRAPH 2025 β€” MIT code + MIT weights): a 1.5B-parameter rectified-flow diffusion transformer over an SDF VAE, single image β†’ high-fidelity 3D geometry (β‰ˆ commercial Tripo 2.0 quality). All credit for the original weights goes to VAST-AI-Research.

Exported as four staged graphs so the flow loop runs in plain host code β€” for QtMeshEditor (qtmesh generate3d --backend triposg, GUI Backend dropdown, MCP backend arg), local inference via ONNX Runtime + native marching cubes.

The files QtMeshEditor downloads at runtime live in the shared fernandotonon/QtMeshEditor-models repo under triposg/. This repo is the standalone model card + mirror.

Files

file role
triposg_image_encoder.onnx DINOv2-224 image encoder (mean/std baked in; CFG unconditional = zeros)
triposg_dit_step.onnx + .data one DiT flow step (fp32, ~5.8 GB external weights)
triposg_vae_latents.onnx VAE latent KV-cache graph β€” run once per generation
triposg_vae_decoder.onnx per-point SDF field decoder

An int8 DiT tier exists in the aggregate repo but is not recommended: even per-channel-quantized, the 1.5B DiT degrades to blobs over the 25-step CFG flow loop, and dynamic-int8 MatMuls are no faster than fp32 on ARM.

Inference contract

  • Flow loop (host code): Οƒα΅’ = 1 βˆ’ i/N, timestep 1000Β·Οƒα΅’, update x += (Οƒα΅’ βˆ’ Οƒα΅’β‚Šβ‚)Β·v β€” note the sign is opposite of stock diffusers FlowMatchEulerDiscreteScheduler. CFG as two batch-1 calls, guidance 7.0, 25 steps default.
  • Background removal should composite over white (TripoSG's reference pipeline), not gray.
  • The exported field decoder is outside-positive β€” negate for inside-positive marching cubes at iso 0; query bounds Β±1.005.
  • Query the decoder in chunks of ≀ 8192 points (cross-attention to 2048 kv tokens; huge chunks OOM). Open/release the sessions per stage to keep peak memory ~1 GB instead of the >4 GB sum.
  • Output is already +Y-up.
  • Geometry only β€” TripoSG has no colour decoder. QtMeshEditor bakes colour by projecting the input photo onto the visible front and filling the rest from TripoSR's image-conditioned colour field (see QtMeshEditor-triposr-onnx).

Full measured export contract: docs/TRIPOSG_EXPORT_NOTES.md in the QtMeshEditor repo.

Reproducing

scripts/export-triposg-onnx.py in the QtMeshEditor repo (one-time, offline).

License

MIT (same as the upstream code and weights). Credit: VAST-AI-Research.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support