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:
@@ -65,6 +65,27 @@ correction). This is the same mechanism, not a parallel one: environment
|
||||
props reuse the clothing pipeline's multi-region shader family rather than
|
||||
inventing a props-specific one.
|
||||
|
||||
**Extracted-texture sidecar (`_Image_0.png`) — generated, must be committed.**
|
||||
On first Godot import of a promoted `.glb`, the scene importer externalizes
|
||||
the model's embedded texture to a loose file next to it,
|
||||
`<model>_Image_0.png` (e.g. `table_baroque_Image_0.png`), and the compiled
|
||||
`.godot/imported/*.scn` references that file by **UID**, as an external
|
||||
dependency — this happens even with `gltf/embedded_image_handling=3` (embed
|
||||
uncompressed) set in `project.godot`, confirmed on Godot 4.6 (T-1204
|
||||
promotion). This file is **machine-generated, never hand-edited** — if it is
|
||||
lost or deleted, a clean re-import (delete the stale `.glb.import` +
|
||||
`.godot/imported/*.scn` cache entry, then re-run `godot4 --headless --import`)
|
||||
regenerates it deterministically. But it **must be committed alongside the
|
||||
`.glb`** it belongs to: deleting it after import breaks loading with
|
||||
`ERROR: Can't load dependency` / `Resource file not found` at `ResourceLoader`
|
||||
time, and critically, **a text grep of the compiled `.scn` will not reveal
|
||||
this dependency** — the reference is a binary-encoded UID (`uid://...`), not
|
||||
a literal path string, so searching the `.scn` for the filename finds
|
||||
nothing. Losing this file costs a full debug cycle (re-copy the source `.glb`,
|
||||
clear the stale `.import`/`.scn` cache, re-import, re-verify) to rediscover
|
||||
what the UID reference actually pointed to — treat it as a required sidecar
|
||||
from the moment of promotion, not disposable import cache.
|
||||
|
||||
---
|
||||
|
||||
## 3. Texture naming (D-235 tokens)
|
||||
|
||||
Reference in New Issue
Block a user