Skip to content

feat(reconstruction): TRELLIS.2 pipeline, welded watertightness, absent-not-zero confidence - #32

Open
Mizunandayo wants to merge 1 commit into
mainfrom
feat/trellis2-and-honesty-fixes
Open

Mizunandayo wants to merge 1 commit into
mainfrom
feat/trellis2-and-honesty-fixes

Conversation

@Mizunandayo

Copy link
Copy Markdown
Owner

Two honesty fixes that improve the InstantMesh pipeline now, and a TRELLIS.2
pipeline that is complete but not deployed.

Both fixes are the same bug: "not measured" reported as "worst possible"

Watertightness was measured on split vertices. UV mapping duplicates a vertex at
every chart seam. The surface it describes is unchanged, but is_watertight returns
false — so a textured mesh lost 30% of the confidence weight to a rendering
artefact
. measure() now welds a copy before testing watertightness and volume.
A test builds a geometrically identical seam-split sphere and asserts it still
reports closed.

An absent measurement scored zero. field_decisiveness reads an empty deviation
array as 0.0, at weight 0.45 — most of a 39.6% score on a good mesh. A pipeline that
genuinely has no density field now has the component dropped and the weights
rescaled to 1.0
, with a field-decisiveness-unavailable notice, exactly as
foregroundQuality is already handled.

TRELLIS.2 — complete, not deployed

MIT, 4B parameters, sparse-voxel, PBR materials and a real UV texture. Adapter,
Dockerfile.trellis2, contract enum, config and wiring are all in and gated.

Not deployed. Three builds failed: a wrong extension path, then a worker OOM at
MAX_JOBS=8 on an 8GB builder — Cloud Build reports that as INTERNAL_ERROR, which
reads as infrastructure rather than sizing. Fixed to MAX_JOBS=2 and never re-run.

A separate Dockerfile on purpose: it needs CUDA 12.4, a compiler and five extensions
built from source, and folding that into the working image would put TripoSR and
InstantMesh — both serving — behind a build that has never succeeded.

Also built, default off

  • CPU texture bake (xatlas + numpy rasterisation, colour sampled at texel
    resolution). Works — 53× the colour detail — but UV unwrapping drops watertightness.
    Wrong trade for a physics system: mass comes from volume, volume needs a closed
    surface. TEXTURE_RESOLUTION=0, and the default is what matters, because
    deploy-all.ps1 uses --set-env-vars and replaces the whole environment.
  • Six real photographs into the sparse-view stage. The rig is azimuths
    30/90/150/210/270/330 at alternating +20°/−10°. Observation beats invention, but the
    capture UX asks for four, so it never fires.
  • Gemini's label as a Zero123++ prompt. The text pathway exists and is encoded,
    but both models were fine-tuned on an empty prompt.

Gates

127 reconstruction tests · ruff · mypy 25 files · no contract drift

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