Generate multi-model anchored concepts, drop old Comedy Store refs, and trim the concept gallery
This commit is contained in:
1 parent
87e1c9e7a5
commit
988d431da8
40 files changed
+110
-329
No files matched your search
@@ -84,78 +84,7 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
street context CC BY-SA 3.0). The CC BY-SA frame is redistributed unmodified for study only with
|
||||
no derived asset, and that review is written into the sidecar; a licensed night photo of the hero
|
||||
facade is still the top missing reference.
|
||||
- **Joke Shop reference board (2026-11-03):** three photos in `docs/screens/refs/joke-shop/` (PD x2
|
||||
by Gary Minnaert 2006, CC BY 2.0 by Tony Mariotti 2020) covering the hillside/canopy block, the
|
||||
frontage with palms and the signature-band/curtain detail. `The Comedy Store.jpg` (CC BY-SA 3.0)
|
||||
from the old link list was deliberately skipped: the PD frames cover the same evidence and no
|
||||
share-alike review was needed. The CC BY file requests a dofollow link, recorded in its sidecar
|
||||
and CREDITS.
|
||||
- **Imagery evidence model (2026-11-03):** `TODO.md` now separates three image sources that must
|
||||
not be mixed: licensed real-location photos (evidence of what a place looks like), generated
|
||||
concept boards (art-direction proposals with model/prompt/spend provenance), and build captures
|
||||
(proof the build matches). Per-venue boards go under `docs/screens/refs/<venue|block>/` with a
|
||||
`SIDECAR.md` per folder (photo table: file, subject, view, URL, author, licence, date, purpose,
|
||||
shipped; plus redactions, derived-decision log and a table referencing the generated boards used
|
||||
in the three-up). Generated frames stay in `docs/screens/concepts/`, never in `refs/`, and stay
|
||||
out of `assets/` until picked, cropped, credited and audited. Every workstream now
|
||||
ends with a capture step that updates `README.md` plus the matching docs page, verified with
|
||||
`tools/check_screenshots.sh` and `python3 tools/check_docs.py`.
|
||||
- **Collider coverage gate (2026-11-03):** `WorldBuilder` sets `library_prop` metadata on every
|
||||
node in `library_nodes`, and `NON_BLOCKING_LIBRARY` (`marquee`, `wall_lantern`, `handrail`,
|
||||
`double_door`) documents the mounted/decorative pieces that intentionally publish no
|
||||
walk-blocking body. `test_world.gd` verifies placed props have `Collision` + `Shape` +
|
||||
`Avoidance` in all three venues, and that library dressing has a body unless exempt. Both
|
||||
were mutation-checked (removing `_add_prop_collision` fails 3 tests; dropping `handrail` from
|
||||
the exemption list fails with the node name). Suite is 275/275. Add the metadata when adding a
|
||||
new library placement, or the coverage test will report it.
|
||||
- **3D review gates (2026-11-03):** `tools/test_blender_assets.py` now gates texel density
|
||||
(all five character slots present, 40–400 px/m authored, ≥250 px/m effective fabric), and
|
||||
`tools/test_model_review.py` gates scorecard coverage (every `CHARACTERS`/`GEAR`/`PROPS` entry
|
||||
needs a row in `docs/3d-model-review.md`, characters need a verdict). Python tooling is 116
|
||||
tests. Collider-proxy coverage is still an open gate. Remember CI only runs the Godot suite;
|
||||
the Python tests are local (`cd tools && python3 -m unittest discover -p 'test_*.py'`).
|
||||
- **Pose capture is blocked (2026-11-03):** `src/test/capture_npc_pose.gd` stages idle/walk/sit
|
||||
poses for the pose/weight review, but the saved frames show the rest pose while the same run
|
||||
logs `rig_y=-0.339`, `leg0=-1.357` and a rotated `HipL` bone quaternion at capture time.
|
||||
Verified meanwhile: one skinned mesh bound to one `Skeleton3D`; hiding it removes the body;
|
||||
direct `set_bone_pose_rotation` on HipL/KneeL/Spine/ShoulderL/ElbowL/Head changes rendered
|
||||
pixels; a bone *position* offset moves the head; a standalone probe running the same
|
||||
`_animate()` sequence renders the crouch. A staged in-game `film` frame also showed the arms
|
||||
Standalone SceneTree probes (avatar under `root`, under a `Node3D` stage, created
|
||||
mid-`_process`) all render the seated crouch, and a `SubViewport` + `RenderingServer.force_draw()`
|
||||
probe does too (window probes diff ~2,200-2,360; offscreen 602 at +2/+6/+12 frames, including a
|
||||
re-created avatar). So the rig, the animation math and the offscreen path are sound; only
|
||||
`capture_npc_pose.gd` still saves rest frames, which makes its phase/camera/force-draw ordering
|
||||
the defect. A headless test locks the proxy→bone contract
|
||||
(`test_pose_reaches_the_skeleton_bones`, suite 273). Rebuild the harness from the verified
|
||||
recipe in `docs/3d-model-review.md` instead of iterating on the current phase machine.
|
||||
- **3D review baseline (2026-11-03):** `docs/3d-model-review.md` records the first skill-guided
|
||||
measurements: 46/46 assets clean, library 59,012 tris, characters 4,482–5,474 tris (68–69% of
|
||||
the 8,000 caps), `npc_base` only 1,204/2,488, 24-NPC 6.94 ms, and authored texel density
|
||||
64–122 px/m (fabric effective 287–440 after the 4× repeat). That is below the skill's 128–256
|
||||
background tier but the slot maps are neutral and tinted at runtime, so it is a recorded decision
|
||||
point, not a defect. Added `blender_assets.py texels` (stdlib, per-slot px/m from GLB UV/world
|
||||
area, fabric reported twice) and `inspect --json --out` (the glTF importer's INFO log is captured
|
||||
in `stats.import_log`; Blender's startup banner still pollutes stdout). Baseline/review captures
|
||||
run fine under `xvfb-run` into `tmp/`.
|
||||
- **3D model re-evaluation first (2026-11-03):** `TODO.md` is re-planned around a new unversioned
|
||||
`3D model re-evaluation` track, ahead of character and local-map work, because the crowd-variant
|
||||
roster would otherwise multiply whatever the existing models get wrong. It scores all 8
|
||||
characters, 18 gear, 20+6 props and the three venues in `docs/3d-model-review.md`, fixes ranked
|
||||
P0/P1 only, and must not change the `npc_base` contract, renderer or 0.10.0 candidate. The MIT
|
||||
Blender skill pack is now routed through `AGENTS.md` §Local Blender skills; skill advice loses
|
||||
to the project contract, and there is no Blender MCP here (headless flatpak scripts instead).
|
||||
MEMORY was trimmed to ~800 lines on 2026-11-03 (historical handoffs and release anecdotes
|
||||
dropped; gotchas kept); further trimming is tracked in `TODO.md`.
|
||||
- **GLB intake inspection (`blender_assets.py inspect`, 2026-11-03):** runs inside Blender, clears
|
||||
parents and applies object transforms, then reports tris/budget, raw and seam-split verts,
|
||||
Godot-space bounds (height/feet for characters), bones, materials, UVs, skinning and
|
||||
animations as `issues` (contract failures, exit 1) or `warnings`. `--json`/`--category` exist
|
||||
for intake scripts. Gotchas: the glTF importer creates an `Icosphere` mesh used as
|
||||
`pose_bone.custom_shape`, which must be excluded or it dominates bounds; a parented import
|
||||
needs `parent_clear(CLEAR_KEEP_TRANSFORM)` before `transform_apply`; Blender is Z-up so bounds
|
||||
and bone rests are converted to `(x, z, -y)`. On project assets its counts match `audit`
|
||||
exactly, but `audit` stays the stdlib/CI release gate and `inspect` never adapts a file.
|
||||
- **Joke Shop reference board removed (2026-11-03):** the committed Comedy Store photo board was removed in favour of the local-only `tmp/research/comedy-store/` research set (owner override: development reference, no licence gate, never committed). The three-up board's photo panel remains a historical public-domain frame; the block's current reference lives in the gitignored research folder.
|
||||
|
||||
- **Blender Skills Pack installed locally (2026-11-03):** the MIT `blender-skills` pack
|
||||
(v1.3.0, 94 skills + a shared `references/` folder) is installed at
|
||||
|
||||
Reference in new issue
Block a user