Files
settled-reach/docs/assets/visual/models.md
T
jpmschweitzerandClaude Fable 5 2f87c1a65f 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>
2026-07-26 12:55:28 +02:00

3.7 KiB

title, description, type, status
title description type status
Models — Visual Assets 3D object/furniture/prop asset catalog — status table for the Trellis glb-gen pipeline design active

Models — Visual Assets

3D objects and furniture/props rendered directly in-world as .glb meshes (D-244 — no per-object sprite layer). Produced via the Trellis image→3D pipeline (/glb-gen), promoted per D-241 into client/assets/models/.

Generation Approach

  • Concept image: /image-gen produces a concept PNG (square, plain dark background, single object centered, 3/4 front view — see .claude/skills/glb-gen/SKILL.md "Input Requirements").
  • Image → 3D: Trellis (tower-of-joy:11510) converts the concept image to a raw .glb (/glb-gen).
  • Post-process: Blender normalizes scale, centers the mesh, generates the recolor mask sidecar, and sets up materials for toon rendering (.claude/skills/glb-gen/scripts/postprocess_glb.py).
  • Promotion: the finished .glb (+ mask, if tintable) lands in client/assets/models/{furniture,props}/ and is registered in client/assets/models/manifest.json — that registration + placement act is the promotion (D-241); it does not stay a "promoted" spike artifact.

Naming, mask-sidecar, and multi-tile footprint conventions: conventions.md.

Assets

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

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

  • conventions.md — naming, mask sidecars, footprint metadata
  • client/assets/models/manifest.json — the machine-readable per-asset registry
  • .claude/skills/glb-gen/SKILL.md — production pipeline
  • D-244, D-241