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>
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-genproduces 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 inclient/assets/models/{furniture,props}/and is registered inclient/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