data(assets): promote the four spike GLBs — first production environment assets (T-1204)

table_baroque, chair_modernist, desk_scifi (furniture, with mask
sidecars) and lion_statue (props, non-tintable) enter
client/assets/models/ under the category-first convention, byte-
identical to the spike sources (MD5-verified; spikes/ untouched,
vw_beetle excluded per the Q-067 deferral). Postprocess verified
already-applied by Blender node-graph inspection (mat_primary,
roughness=1.0/specular=0.0 shader inputs — the convenience properties
read stale defaults, the graph is authoritative), so not re-run. All
four registered in manifest.json at 'planned' with footprint_tiles
[1,1] (a flagged judgment call — normalized spike geometry erases
real-world scale; the brief ruling goes to araminta in review).
In-engine proof: clean headless import + ResourceLoader load +
instantiate for all four. Discovery documented in conventions.md §2 +
glb-gen SKILL.md: Godot externalizes the GLB's embedded texture as a
<model>_Image_0.png sidecar referenced by binary UID — it must be
committed or loading breaks with an undiscoverable dependency error.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-26 12:55:28 +02:00
co-authored by Claude Fable 5
parent 74e95148ae
commit 2f87c1a65f
16 changed files with 89 additions and 10 deletions
+18 -5
View File
@@ -33,12 +33,25 @@ Naming, mask-sidecar, and multi-tile footprint conventions:
| ID | Filename | Status | Category | Footprint | Notes | Sprint/Ticket |
|----|----------|--------|----------|-----------|-------|---------------|
| table_baroque | `furniture/table_baroque.glb` | planned | furniture | [1, 1] | Promoted from spike (`baroque_table.glb`, renamed category-first); mask sidecar present; spike README flags the mask as "too aggressive — tints the whole model bright white", not yet re-tuned | T-1204 |
| chair_modernist | `furniture/chair_modernist.glb` | planned | furniture | [1, 1] | Promoted from spike (`modernist_chair.glb`, renamed category-first); mask sidecar present | T-1204 |
| desk_scifi | `furniture/desk_scifi.glb` | planned | furniture | [1, 1] | Promoted from spike (`scifi_desk.glb`, renamed category-first); mask sidecar present | T-1204 |
| lion_statue | `props/lion_statue.glb` | planned | props | [1, 1] | Promoted from spike as-is (no rename); "fixed" mode, non-tintable — no mask sidecar per brief §3 | T-1204 |
No models have entered production yet — this table is intentionally empty at
initial creation (T-1050). Rows are added as assets are promoted into
`client/assets/models/manifest.json`; keep this table's `Status` column in
sync with the manifest's `status` field (shared vocab: planned /
in-progress / placeholder / final, `docs/assets/README.md`).
These four rows are the first promoted assets (T-1204, `furniture-props.md`
brief's first acceptance) — the 3 in-scope spike furniture GLBs plus
`lion_statue`, already Blender-postprocessed (`mat_primary`,
roughness=1.0/specular=0.0 confirmed via Blender headless inspection) in the
spike, so no re-run of `postprocess_glb.py` was needed at promotion time.
`vw_beetle.glb` stays excluded (Q-067 car deferral). Footprint is `[1, 1]`
for all four — the spike GLBs are Blender-normalized to `target-width=1.0`
(max dimension ≤ 1m on every axis after normalization), so none of the actual
promoted meshes has real-world geometry spanning more than one tile; the
brief's `[2, 1]` table example is illustrative of the convention, not a
derived value for these specific assets. Further rows are added as new
assets are promoted/generated; keep this table's `Status` column in sync with
the manifest's `status` field (shared vocab: planned / in-progress /
placeholder / final, `docs/assets/README.md`).
## Cross-References