img2threejs / CHANGELOG.md
Mike0021's picture
Add persistent community gallery and v1.3 previews
37e3d5a verified
|
Raw
History Blame Contribute Delete
7.88 kB
# Changelog
All notable changes to **img2threejs** are documented here.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.3.0] β€” 2026-07-22
The "quality & efficiency" line: a deterministic-first review harness (Divine Eye), stronger
input integrity, geometry-truth gates, and reference-grounded texture/material analysis.
### Added β€” Plan 1.3 (Phases 1–7)
- **Input integrity** β€” reference admission (`check_reference_admission.py`), intake-correctness
cross-check (`check_intake_correctness.py`), property auto-binding, shared pHash.
- **Geometry truth** β€” curve-sweep (F.6), flatness gate (G.1), Blum lathe-profile derivation.
- **Divine Eye** β€” deterministic multi-signal ensemble (`divine_eye.py`): IoU/scale hard gates;
proportion / symmetry-parity / pHash / SSIM / edge / blowout / flat / tonal-parity soft signals;
self-uncertainty `probe` routing.
- **Multi-angle** β€” degenerate-view detection (`diagnose_render_multi_angle.py`) with reference-free
self-consistency; auto-framing.
- **Eye judgment layers** β€” gated VLM gate (`vlm_gate.py`), per-feature verification (Β§3.8),
bounded stop policy (Β§3.6), calibration harness (report-only + separation check).
- **Efficiency** β€” per-module codegen cache (Β§3.7 neighbor invalidation).
- **Presentation** β€” reference-conditional post-fx (DOF/bloom) strictly off the evaluation path.
### Added β€” session capability work (folded into 1.3)
- **Texture-finish analysis** β€” `stage1_intake/analyze_texture.py`: classifies finish
(gem-metal / gemstone / painted-metal / worn-composite / brushed-steel / plastic) and writes
doc-grounded MeshPhysicalMaterial scalars; `grimoire/build/threejs_texture_reference.md`.
- **Objectness (OSIM-lite)** β€” `stage4_review/objectness.py`: pure-stdlib HOG-like descriptor +
cosine similarity; wired into Divine Eye as a soft signal + reconstruction-mode rescue.
- **`ground-blade` primitive** β€” lofted beveled cross-section (primary bevel + swedge/false edge)
in the generator + validator whitelist.
- **Color-gate fix** β€” `diagnose_render.py` `color_is_gated(pass_id)` (color hard-fail only from
the material pass onward, so clay blockouts don't false-fail).
### Added β€” reconstruction-fidelity upgrades (folded into 1.3)
- **Reference-grounded gradient stops** β€” `stage1_intake/extract_gradient_stops.py`: foreground-masked
per-band median sampling extracts a material's true gradient from the reference (kills hand-guessed
STOPS), names hue zones, and flags blue-leaning violet/blue stops (`B > R`) as `blue-collapse`
(collapses to blue under tone-mapping) with a magenta-lean suggested correction.
- **`candy-coat` finish class** β€” `stage1_intake/analyze_texture.py`: an anodized/PVD/doppler
dielectric-led recipe (metalness 0.35 / clearcoat 0.60 / envMapIntensity 0.70) so a saturated
coloured coat keeps its hue instead of the environment stealing it; chrome-specular stays
`gem-metal`, bright-clean stays `gemstone`. Plus a `paletteHueRisk` hue-survival annotation.
- **CIEDE2000 colour math** — `_shared/color_metrics.py`: sRGB→CIELAB + full ΔE00, verified against
the canonical Sharma test pairs.
- **Colour-aware Divine Eye signals (report-only)** β€” `hue_zone_parity` (per-band CIEDE2000 along the
axis; catches "purple rendered blue" that luma/structure signals miss) and `specular_wash`
(saturation-decay + hue-drift-toward-cyan detector). Both ship report-only (no ensemble weight)
until calibrated, so they never silently move a verdict.
- **InstancedMesh emission** β€” repetition systems now emit one `THREE.InstancedMesh` (single
draw-call) instead of a per-instance `Mesh` clone loop; the `instanced-cluster` primitive resolves
to its base geometry instead of failing.
- **`ground-blade` UV fix** β€” blade UVs now span the geometry's actual Y bounds instead of a
hardcoded range, so an off-origin blade no longer clamps every face to the bright spine-rim row
(the flat "one colour" / white-tip bug); the length gradient reads correctly.
- **Dep-free cutouts** β€” `extrude` supports `THREE.Shape.holes` + an `ovalLoop` helper (e.g. a
wire-cutter oval hole) with no CSG dependency.
### Notes
- Pure Python 3.10+ stdlib in `forge/` (no pip installs). 20/20 forge test suites green.
- Grimoire lessons updated: shading realism (hue-survival under tone-mapping; reference beats prose),
geometry patterns, self-correction.
## [1.2.0] - 2026-07-21
**Theme: Humanoid character generator.** Characters and hybrid subjects become
first-class citizens of the reconstruction pipeline, alongside a round of engine
and harness improvements to the underlying code generator.
### Added
- **Character / hybrid domain detection.** Assessment now recognizes character-like
form language and routes the reconstruction through an anatomy-aware track instead
of the hard-surface object path.
- **Humanoid component template.** A flattened humanoid template with measured
head-unit proportions, facial landmark placement, and pose alignment is emitted
from the assessment stage.
- **Proportion-lock build pass.** New gated pass that enforces anatomical proportion
correctness before form/material work proceeds.
- **Feature-placement build pass.** New gated pass that places and validates facial
and body landmarks against the reference.
- **Per-part character materials.** Skin, hair, cloth, and accessory materials
integrate with the Track A detail machinery for stylized human figures with
recognizable likeness.
- **Surface topology classification.** Parts are classified by surface topology to
drive more accurate geometry choices.
- **Per-part color / RGBA recipes.** Explicit per-part color and RGBA material
recipes for tighter reference matching.
- **Tier-1 diagnostics.** Diagnostic reporting layer for the generation harness.
- **Hash caching.** Content-hash caching to avoid redundant recompute across passes.
- **Real extrude / lathe / tube geometry.** Genuine extrude, lathe, and tube geometry
generation replaces prior approximations.
### Changed
- Restructured the project layout ahead of the full harness rebuild, including
stage-prefixed script names for clearer pipeline ordering.
### Docs
- Published a public ROADMAP (v1.0 β†’ v1.5) and a token-cost document.
- README remake: 3D showcase, live-demo links, new logo, and animated GIF previews
(shotgun, knife, war-hauler, Sony, Doraemon House, Crowned Loot Chest).
- Added LICENSE, CONTRIBUTING, and a community-outreach promotion playbook.
- Funding pointed to the VN donate page (MoMo / VietQR).
## [1.1.0] - 2026-07-15
**Theme: Detail-first analysis.**
### Added
- Required `detailInventory` artifact enumerating identity-defining micro-details
(gloss zones, bevels, fasteners, engraved/painted linework, contours, stains, wear).
- Strict-quality gate that blocks code generation until every detail maps to a real
component or material entry, preventing shallow specs from reaching the renderer.
## [1.0.0] - 2026-07-15
**Theme: Object pipeline.** Initial release.
### Added
- Staged sculpt pipeline: blockout β†’ structure β†’ form β†’ material β†’ lighting β†’
interaction β†’ optimization, with a visual gate on each pass.
- Image suitability validation and `ObjectSculptSpec` authoring (components + materials).
- Render-vs-reference review loop using side-by-side comparison sheets.
- Action-ready runtime hierarchy exposing pivots, sockets, and colliders.
- Token-efficient, code-only output (diffable TypeScript + JSON spec, no binaries).
[1.2.0]: https://github.com/hoainho/img2threejs/releases/tag/v1.2.0
[1.1.0]: https://github.com/hoainho/img2threejs/releases/tag/v1.1.0
[1.0.0]: https://github.com/hoainho/img2threejs/releases/tag/v1.0.0