# Hop City hero pack

All six delivered from the final clean, no-argument run of `build_critters.py` on Blender 5.2, 12 October 2026.

- **raccoon** — Default grey raccoon, black mask, white muzzle/brows and continuous ringed tail; 2,960 triangles; Fur #89949f, FurDark #30343d, Belly #f4efe1, Eye #101722.
- **pigeon** — Plump blue-grey pigeon, green/purple collar, dark wing bars, pink feet and orange eye rings; 2,612 triangles; Feather #8195b0, Eye #202935, NeckGreen #368d77, NeckPurple #73509c, Feet #e991a6, Beak #f9a545.
- **tuxedo-cat** — Black-and-white cat, white bib/paws/muzzle, pink nose and upright curled white-tipped tail; 2,940 triangles; Fur #242933, Belly #f6f0df, Eye #0b121b, Nose #efa0ae.
- **corgi** — Tan-and-white corgi, tall ears, short legs, continuous white blaze and stubby white tail; 2,496 triangles; Fur #d79043, Belly #fff2d5, Eye #1c212a, Ear #b96048.
- **duckling** — Yellow duckling, orange flat bill/webbed feet, wing nubs and head tuft; 2,856 triangles; Down #ffcf26, Bill #f3932c, Eye #17232e, Highlight #fff7d6.
- **squirrel** — Red-brown squirrel, cream belly and large upright curved plume within the footprint; 2,828 triangles; Fur #b9673e, Tail #994726, Belly #f7dfb5, Eye #201923.

## Contract and verification

Each GLB contains one joined mesh object with identity transforms, no armature, animation, cameras, lights, empties or textures. Multiple colour material primitives are intentional. Origin is the full footprint bounding-box centre at ground level; glTF +Y is up and +Z is forward. Dimensions in `critters.json` are [width, depth, height] in metres. All six share a roughly one-metre toy scale.

Every exported GLB was re-imported into a fresh Blender scene and checked for object count, origin, bounds, height, facing, material count and triangles. An independent strict binary audit found no degenerate triangles, nonfinite attributes or other findings. See `*-validation.json`, `*-audit.json` and hash-bound `delivery-check.json`. All GLBs are 49,852–59,884 bytes, below the 250 KB limit.

`<slug>.png` is the 800×800 Cycles game view (55° down, 18° to the right of rear); `<slug>-front.png` is the front three-quarter view. Individual views include asphalt, a white road line and a faint 2 m ground square. `lineup.png` is 1600×800, in requested hero order. Stage materials and lights are not exported. `phone-scale.png` shows the game renders reduced to phone character size.

## What still looks weak

- Pigeon: the green collar is its strongest rear cue; the blue-grey head/body separation and wing bars are subtler at 60 px. Iridescence is suggested with flat green/purple colours, not an angle-dependent shader.
- Corgi: the orange body, white crown blaze and white stub tail read clearly, but the rear silhouette is less species-specific than its front.
- Cat: the upright tail and white tip are visible from behind but thin at phone size.
- All: tiny eye highlights and ear interiors disappear at phone scale; slight silhouette faceting is possible in close-ups at this triangle budget.
- Final independent visual review passed, with the pigeon, corgi and cat observations above treated as optional refinements (`visual-critic-final.txt`). Actual three.js city frames and device frame rate were not tested by this asset worker; inspect final lighting and contrast during integration.

## Rebuild

Run from any empty output directory containing the script:

```sh
blender -b --python-exit-code 1 --python build_critters.py
```

The default command resets to an empty scene for each hero, exports, validates, renders both views, writes the manifest, then renders the lineup. Append `-- raccoon` (or another slug) to rebuild one hero, or `-- lineup` to render the lineup from existing GLBs. The script has no third-party Python dependencies. `pack-build.log` records the final complete run.

Workspace disk at delivery: 9.1 GB free (94% used). No unrelated files were removed.
