Skip to content

feat: whimsical-hearth-house rebuilt through the full sculpt pipeline, live demo route - #62

Open
niccomann wants to merge 12 commits into
img2threejs:mainfrom
niccomann:feat/cartoon-courier
Open

niccomann wants to merge 12 commits into
img2threejs:mainfrom
niccomann:feat/cartoon-courier

Conversation

@niccomann

Copy link
Copy Markdown

What this brings

Whimsical Hearth House, rebuilt end-to-end by the img2threejs pipeline (companion PR: img2threejs/img2threejs#121):

  • object-sculpt-spec.json repaired to the parent-local frame contract (the prior spec was authored in object-frame absolute coordinates and rendered as floating parts), massing refined by an approved TRELLIS dense-evidence A/B (ALLOW: source IoU +0.025, massingSimilarity +0.219), then walked through all seven locked-sequential passes — blockout, structural, form-refinement, material, lighting, interaction, optimization — each closed with browser captures, comparison sheets, map-stripped evidence and per-feature scores. sculptPipeline.currentPass: complete.
  • 11 reference-pixel PBR extractions re-run from verified homogeneous crops (confidence 0.80–0.86), maps served from public/references/whimsical-hearth-house/materials/.
  • whimsicalHearthHouseInteractions.ts drives the factory's action-ready contract (raycast selection, reversible explode, jamb-hinged teal door, chimney-smoke idle, exact reset — machine-checked: all 32 node world matrices restored with delta 0).
  • whimsicalHearthHouseShowcase.ts exposes those as viewer actions (Cozy idle / Open house / Explode view / Stop-Reset) and provides the makeWhimsicalHearthHouseBackground the registry imported but the generated factory never exported.
  • Budgets: 57,402 triangles (target 90k) and 35 draw calls (max 45) after the generator's low-tier instanced clusters.

Also included: the in-progress cartoon-courier demo files the already-committed registry entry imports (the branch did not compile from a fresh clone without them); they remain that effort's work-in-progress. npx tsc --noEmit is clean; the demo route was verified live (renders with contact shadow, all actions work, no console errors).

🤖 Generated with Claude Code

https://claude.ai/code/session_01TfH5LfB9uFTWMXEbuo3baX

nicco and others added 6 commits September 1, 2026 21:56
Rebase all component transforms and attachment endpoints from object-frame
absolute to parent-local (69 fields), re-author the five degenerate
attachment segments that collapsed cylinder/cone/tube parts into stubs, and
accept the dense-evidence global-massing proposal after its A/B ALLOW
(source IoU +0.025, massingSimilarity +0.219, all deterministic gates
clean). Factory regenerated from the accepted spec at the blockout pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TfH5LfB9uFTWMXEbuo3baX
…rial-pass

Blockout, structural-pass, form-refinement and material-pass each reviewed
and unlocked through the locked-sequential gate with browser captures,
comparison sheets, map-stripped evidence and per-feature scores:

- author real extrude profiles (gabled roofs, house-shaped dormer, arched
  door/windows) replacing the default stub profile
- rebase window-glow off the tower foot, add the upper arched window with
  recessed stone frames, tree canopy masses, dogleg paver path, island
  curb-stone and cone-eave radial rings (emitter's real placement contract)
- re-run reference-pixel PBR extraction on this machine from 11 verified
  homogeneous crops (confidence 0.80-0.86), serve the maps from public/,
  rewire referencePbr and drop the dead absolute-path map references
- move tile-rhythm judgment to material-pass where the radial-only instancer
  can honestly deliver it as surface relief

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TfH5LfB9uFTWMXEbuo3baX
Reviewed the factory's look-dev rig in reference, neutral and grazing modes
with the regenerated scale-aware shadow camera: warm upper-left key, cool
fill, warm rim, ACESFilmic at exposure 1.0, and the soft contact shadow now
landing beyond the island edge as the reference intends. Pipeline advances
to interaction-pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TfH5LfB9uFTWMXEbuo3baX
interaction-pass: demo-layer whimsicalHearthHouseInteractions.ts drives the
factory's action-ready contract — raycast click selection, reversible
parametric explode, hinged teal-door action, chimney-smoke idle, exact reset
(machine-checked in-browser: all 32 node world matrices restored with delta
0, pick over the cone resolves turret-roof, sky resolves null).

optimization-pass: 57,402 triangles (target 90k, was 132,906) and 35 draw
calls (max 45) via the generator's low-tier instanced clusters; a decimation
attempt was measured to destroy identity textures and reverted; foliage and
petals go matte (roughness 0.85, reduced specular F0), closing the glazed
planting note.

sculptPipeline.currentPass: complete.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TfH5LfB9uFTWMXEbuo3baX
…tory

whimsicalHearthHouseShowcase.ts builds the generated factory, attaches the
demo-layer interactions and exposes them through the viewer's
animationController contract: Cozy idle (default, chimney-smoke bob),
Open house (teal door swings on its jamb hinge), Explode view (eased
reversible separation), Stop/Reset (exact restore). The registry entry now
imports the missing makeWhimsicalHearthHouseBackground from the showcase
module instead of the generated file (which never exported it — latent
compile break), installs the look-dev rig in reference mode, and reflects
the pipeline provenance. Verified live: page renders with contact shadow,
all three actions and reset work from the animation panel, tsc --noEmit
clean, no console errors.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TfH5LfB9uFTWMXEbuo3baX
…imports

The registry entry for cartoon-courier was already committed on this branch
while its module, references and validation script were still untracked, so
a fresh clone could not compile. These files are the companion session's
work-in-progress, committed as-is (tsc --noEmit is clean with them) so the
branch builds; they remain owned by that effort.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TfH5LfB9uFTWMXEbuo3baX
@niccomann
niccomann requested a review from hoainho as a code owner September 2, 2026 18:08
@hoainho

hoainho commented Sep 3, 2026

Copy link
Copy Markdown
Collaborator

Hi @niccomann thats good showcase, but looks like you pushed all screenshot into PR already. please clean it, just keep only source reference image, and code only. You can refer this PR: #63

@hoainho

hoainho commented Sep 3, 2026

Copy link
Copy Markdown
Collaborator

Also, please resolve the conflict

nicco and others added 5 commits September 3, 2026 17:13
…ages)

Resolves the maintainer review on img2threejs#62: the extracted PBR map PNGs under
public/references/*/materials are extraction evidence, not assets, and the
showcase ships code plus the source reference only. Removed all 120 files;
the whimsical-hearth-house spec keeps each map's authoring-machine path as
provenance but no servable url, so the generated factory takes the
procedural route (reference palette + surface bands). Stucco, foliage and
petal palettes re-authored from the reference's local colour zones after the
narrow extraction crops came out shadow-dark.

Merge of origin/main keeps all four newly added registry entries
(cartoon-courier, mars-cat, whimsical-hearth-house, monster) and gives the
starship entry the updatedAt the interface now requires. tsc --noEmit clean;
the whimsical route verified live without the map files.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TfH5LfB9uFTWMXEbuo3baX
Same rule as the previous commit: extraction evidence stays outside the
showcase; the spec keeps provenance paths and the factory renders the
reference palette procedurally.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TfH5LfB9uFTWMXEbuo3baX
…t pipeline

Reference image generated with Codex; ObjectSculptSpec authored parent-local
from the start (29 components, real attachment struts, extrude profiles,
radial curb and railing rings) and walked through all eight locked-sequential
passes — blockout, structural, form-refinement, material, surface, lighting,
interaction, optimization — with browser captures, comparison sheets and
map-stripped evidence at each gate. Code only: materials are reference
palettes rendered procedurally at runtime, no map images shipped. Budgets
measured at 62,282 triangles and 35 draw calls. Demo-layer interactions
(explode, cottage door, cove idle, selection, exact reset) wired into the
viewer's animation panel through lighthouseCoveShowcase.ts.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TfH5LfB9uFTWMXEbuo3baX
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TfH5LfB9uFTWMXEbuo3baX
@niccomann

Copy link
Copy Markdown
Author

Thanks for the review, @hoainho — done:

  • Removed all extracted PBR map images (185 PNGs); the PR now ships code plus the three source reference.png only. The specs keep the extraction provenance and the factories render the reference palettes procedurally at runtime.
  • Merged main and resolved the registry.ts conflict (all new entries kept).
  • Also added the Lighthouse Cove demo, built end-to-end by the same pipeline, in the same code-only form.

tsc --noEmit is clean and both routes were verified live. Ready for another look.

…component measurements

Regenerated end-to-end by the locked-sequential sculpt pipeline (8/8 passes, every pass reviewed
on saved browser captures) from a re-authored spec: 88 components (12 macro / 27 meso / 49 micro),
16 instanced repetition systems (linear plank rows, grid rope rings and flower dots, radial
railing posts, corbels, lantern mullions, curb and boulder rings, stone treads, barrel hoops),
21 materials with per-component surfaceDetail overrides. TRELLIS (hf-zerogpu-trellis, cost 0,
one merged mesh) contributed five reviewed, hash-bound component measurements -- tower height
-20%, cottage and outcrop width +20%, islet lathe radii -- accepted by the dual-baseline A/B
(source silhouette 0.600 -> 0.624, massing similarity 0.597 -> 0.744, ALLOW). The GLB never
ships: 62,328 triangles, 104 draw calls, exact reset after explode, runtime scan clean.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TfH5LfB9uFTWMXEbuo3baX
@niccomann

Copy link
Copy Markdown
Author

Lighthouse Cove v2 (dd535b6): the demo is regenerated end-to-end by the locked-sequential sculpt pipeline from a re-authored spec — 88 components (12 macro / 27 meso / 49 micro), 16 instanced repetition systems (linear plank rows, grid rope rings and flower dots, radial railing posts, corbels, lantern mullions, curb and boulder rings, stone treads, barrel hoops), 21 materials with per-component surfaceDetail overrides. All 8 passes were reviewed on saved browser captures (source view + four orbits + map-stripped set per pass).

TRELLIS (hf-zerogpu-trellis, cost 0, one merged mesh) contributed five reviewed, hash-bound component measurements through the new region-selector path of the dense-evidence bridge: tower height −20%, cottage and outcrop width +20%, islet lathe radii. The dual-baseline A/B accepted them (source silhouette 0.600 → 0.624, massing similarity 0.597 → 0.744, ALLOW); a first round that also moved the islet depth regressed the source by 0.04 and was withdrawn after per-mapping attribution. The GLB never ships: 62,328 triangles, 104 draw calls, exact reset after explode, runtime scan clean (no loaders, mesh assets or provider URLs).

Only the generated factory and the spec change in this push; the reference image is unchanged and no screenshots are committed.

🤖 Generated with Claude Code

https://claude.ai/code/session_01TfH5LfB9uFTWMXEbuo3baX

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.

2 participants