Skip to content

feat(img2interior): add interactive modern-house showcase - #93

Open
hoainho wants to merge 1 commit into
mainfrom
add-demo/modern-house
Open

hoainho wants to merge 1 commit into
mainfrom
add-demo/modern-house

Conversation

@hoainho

@hoainho hoainho commented Oct 19, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds the Modern House Tour to the Interior category, using the same template as the living-room showcase (#91): an independent showcases/modern-house workspace, pinned release-hosted binaries (assets.lock.json + fetch_assets.py), a Pages build under /modern-house/, and a gallery card.

  • Native Three.js cutaway house (306 meshes, 80,140 triangles, five half-float ambient EXR lightmaps, runtime sun) authored from one synthetic reference image with img2interior; seven room presets, sofa finish, wireframe.
  • Viggle capture, default scene reconstructed from a Cycles panorama rendered inside the authored house; the original Viggle capture is kept as a comparison (Capture scene toggle).
  • Portable .glb, packed .blend and the source ZIP are release downloads, never part of the Pages output.

Template parity with living-room

  • showcases/modern-house/: assets.lock.json, scripts/fetch_assets.py, scripts/package_source.py, tests/test_fetch_assets.py, showcase-mode vite.config.js (stages runtime assets only).
  • Root: workspace + build/dev/preview/sync:modern-house, prebuild chain, /public/modern-house/ ignore, dev directory-index middleware, gallery card, scripts/sync-modern-house.mjs, README section.

Merge blocker: publish the asset release first

npm run build runs fetch_assets.py, which downloads the pinned bundle from the release tag img2interior-modern-house-assets-v1. That release does not exist yet. Files are staged locally in showcases/modern-house/.release/ (gitignored); their hashes match assets.lock.json. Publish before merging:

gh release create img2interior-modern-house-assets-v1 --repo img2threejs/img2threejs-showcase \
  --title "Modern House assets v1" --notes "Pinned binaries for the modern-house showcase (see showcases/modern-house/assets.lock.json)." \
  showcases/modern-house/.release/modern-house-assets.zip \
  showcases/modern-house/.release/modern-house-source.zip \
  showcases/modern-house/.release/modern-house-portable.glb \
  showcases/modern-house/.release/modern-house.blend

Verified locally

  • npx tsc --noEmit, npm run test:source (8 pass), python3 -m unittest discover -s tests in the workspace (10 pass), fetch_assets.py no-op on verified assets.
  • npm run build:modern-house: 21 files, 81.5 MB, no portable GLB or .blend in Pages output.
  • Headless Chromium (SwiftShader) on the showcase build: interiorStudy.status === 'ready', 306 meshes, download links point at the release URLs. Viggle capture reaches ready on the dev/prod build.
  • Khronos validator: 0 errors / 0 warnings on runtime and portable GLB.

Limits (also in the README)

Layout, scale and hidden faces are authored estimates from one image; the native house and Viggle capture are independent representations, not registered; Viggle scale is arbitrary and unseen rooms are engine-filled; the portable GLB is a static baked snapshot (speckled walnut grain, dark mirror); no live GI or mirror; device evidence is headless-only.

This branch has not been deployed

No deployments
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