# Gulp City street props

Original procedural geometry and Cycles-baked PBR. No external images; Poly Haven ids: none.
Blender Z-up / front -Y exports to glTF +Y-up / front +Z. Ground-centred origin, metres.
Body: 512px base colour JPEG, 256px ORM PNG (R=AO, G=roughness, B=metalness), 256px tangent normal PNG.
Glass is alpha blend; Glow is emissive. All GLBs round-trip through fresh Blender scenes before preview rendering.

## Delivered
- bus-shelter: 1268 triangles; deep teal roof, brushed steel and warm timber; Body, Glass, Glow.
- advertising-column: 1964 triangles; bottle green dome and ochre/coral posters; Body.
- food-cart: 1812 triangles; red and ivory striped umbrella, stainless counter; Body.
- flower-stall: 1768 triangles; green and ivory striped awning, colourful flowers; Body.
- cafe-terrace: 1900 triangles; cream parasol and honey rattan; Body, Glass.
- fountain: 3262 triangles; pale limestone and blue water; Body, Glass.
- statue: 1945 triangles; green patina bronze and pale carved stone; Body.
- playground: 2708 triangles; yellow and red steel, dark green rubber; Body.

## Per-prop weaker details
- bus-shelter: opaque roof necessarily hides much of the bench/glazing at 65 degrees; side view verifies the interior.
- advertising-column: poster blocks are deliberately generic and fine print is omitted; dome has a visible 24-segment silhouette in close-ups.
- food-cart: the circular umbrella is 1.3m across to keep the requested 1.3m depth; fine grill fittings simplify on a phone.
- flower-stall: petals and foliage are stylized low-poly lobes within the 2000-triangle budget; not photoreal close-up flowers.
- cafe-terrace: the required square cream canopy occludes the tableware from above; thin rattan and weave simplify at distance.
- fountain: water is static alpha-blended mesh, with discrete streams rather than simulated sheets; basin has a 32-segment perimeter.
- statue: generic procedural face and hands are intentionally simplified; patina and coat folds carry the distant silhouette.
- playground: swing hangers are simplified steel cables, with no linked chains or moving seats.

## Limits / weaker details
Designed for 20–80 px game silhouettes. Tiny fittings and poster designs simplify at phone scale.
Runtime game integration / hundreds-of-instances frame timing are owned by the integrating worker and are not measured here.
Transparent panes and water may need renderer-specific depth sorting. No animation or water simulation.

## Rebuild
`blender -b --python-exit-code 1 --python build_props.py` builds every prop and lineup.
Use `-- --only <slug>` for one clean-scene build, or `-- --lineup` for the lineup from delivered GLBs.
All previews are Cycles, 800×800, game camera 65° downward / side camera 8°, soft daylight and a 1.75m grey scale figure.
