PROCITY/web/assets/manifest.json
m3ultra 74d6257940 Lane E R38 s2: the three GLBs PUBLISHED + sha1-verified off the public depot; the magpie is a magpie
A. DEPOT — closed, under John's R22 standing Lane-E authorization (the authority that
   shipped sit.glb in R28 and the nine R36 sweep assets). Pushed via the passwordless
   tailnet ingress: _published.json 53 -> 56, drift check clean. Then verified the way
   this lane verifies — FETCHED BACK OFF THE PUBLIC DEPOT and hashed, not "the upload
   said 200": magpie/paling_fence/water_tank all HTTP 200, byte counts exact, sha1
   identical to local, 3/3. _r38_results.PENDING_PUBLISH.json renamed, build_manifest
   re-run (GLBs 33 -> 36), validate_manifest 0 errors / 0 warnings.

B. THE MAGPIE TINT — done, not offered. The bird shipped as an all-black crow (R38 4d
   traced the loss to trellis2_mlx's PBR bake). "Hand-tint the atlas" is not a paint job:
   the bake is a smart-UV unwrap of ~100 islands and none of them announces itself as a
   nape. So pipeline/tint_atlas.py defines the tint in the MESH's frame and projects it
   through the UVs — rasterize every UV triangle to texel->(position,normal), evaluate
   soft anatomical windows on the positions (white nape behind a black crown, shoulder
   bar on the flanks only so the dorsal midline stays black, rump + tail base stopping
   short of the black terminal band), paint keeping the bake's own luminance as shading,
   then dilate 5 texels into the UV padding so no black fringe survives bilinear/mip.
   3-D masks give one consistent soft edge across every island at once; a 2-D blur could
   not (it would bleed island-to-island through the black background).
   GEOMETRY UNTOUCHED byte for byte: still 894 tris / 1 mtl / 1 img / 512^2 WebP / no
   Draco / 0.155x0.358x0.404 m. Painted luma median 0.84 (p90 0.95) vs the bake's 0.13.
   VERIFIED IN THE GAME'S OWN RENDERER: the PUBLISHED file loaded off digalot.fyi through
   the vendored GLTFLoader + three.js — 1 mesh, 894 tris, 512x512 texture decoded (which
   also proves the PIL-written WebP decodes in a browser).
   VERDICT: it reads. Pied and unmistakable at 64 and 48 px, still black-and-white at 32.
   Honest caveat: from directly below-and-in-front it stays dark — correct, a real
   magpie's bib and belly ARE black. Render: docs/shots/laneE/r38_magpie_tint.png.
   Standing after B's 4514cb9: an UPGRADE PATH, not a dependency — B's 182-tri procedural
   bird is 4.9x lighter and the right call. Nothing probes for the GLB and nothing should.

C. CORRECTIONS FOLDED INTO THE RECORD so the next asset round does not re-learn them:
   skins are 9.7 s not 5.7 s (1024^2, 1.78x the pixels, per-pixel identical) - the reuse
   list's "one line each" holds for 5 of 9 (extractGLB keeps only the FIRST material) -
   normalize.py's collapse decimator floors at the shell count on TRELLIS output while
   bake_lowpoly.py clears it every time - the 489 s outlier at 3.8x median means
   throughput plans on a tail, not a mean - furniture.js:30's stale comment is fixed by B.
   NEW, and the one worth keeping: an asset's tri budget is tris x THE INSTANCE COUNT THE
   PLACEMENT RULE IMPLIES. paling_fence is a good 1,121-tri panel and a rejected asset —
   905 instances = 1.01M tris, ~47x over. Ask the consuming lane for the instance count
   BEFORE generating anything that tiles, edges or repeats per-lot.

New tools, all on-device and $0: tint_atlas.py, render_views.py (view sheet + --eevee +
roster-consistent --thumb), view_sheet.py (the distance strip no 256px thumbnail can make).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 19:02:06 +10:00

1254 lines
31 KiB
JSON

{
"version": 1,
"depot": "https://digalot.fyi/3god",
"conventions": {
"glb_law": "metres, +Y up, origin at base (minY=0, centred X/Z), WebP <=1024, no Draco; tris <=5k for library props, with documented exceptions for focal/LOD-able assets: baked hero props <=8k (TRELLIS shell-soup, texture-intact) and gig instruments <=14k (v3.0; hi-poly _hi originals on the depot) \u2014 see AUDIT.md + LANE_E_NOTES",
"facing": "symmetric props are orientation-agnostic; normalize.py applies no automatic facing-correction (per-asset yaw is available in batch.json) \u2014 Lane B/C rotate directional props (counter, food_cart) to taste when placing",
"facade_blank_signboard": "facades tagged signboard:'blank' ship a blank sign panel \u2014 Lane B overlays the shop name there. signboard:'baked' facades (some djsim-* Flux skins) already have sign text: use as-is, don't overlay",
"facade_face": "facade entries without a 'face' key are front elevations (shop or house fronts); face:'side' entries are windowless corner-lot side walls with empty types \u2014 never select one as a shop front",
"corner_lots": "corner lots expose a side wall: dedicated facade-<x>-side.jpg skins now exist for brick/render/weatherboard (face:'side') \u2014 Lane B maps these to the exposed side face; other types reuse the front skin",
"fallbacks": "every asset is optional \u2014 missing file => primitive/flat-colour, never a crash",
"load": "fittings/furniture load from depot as depot:<file>; skins are local gen/<file>",
"audio": "OGG/Opus primary + M4A/AAC fallback; loop:true beds are seamless; gain is a suggested 0-1 playback level; interior roomtone/music carry types[] (seed-pick per shop, like facades); footstep is {surface:[variants]}. Silent-happy: any missing file => silence, never an error; ?mute=1 / ?noassets=1 => no audio fetch.",
"audio_life": "entries tagged life:true are the v8 wave-1.1 INHABITATION LAYER \u2014 point sources for a life happening off-screen, played at a seeded anchor so it is the same dog on the same street every time. `anchor` is a placement HINT (town/house/yard/shop/tree), not a contract. playSfx is MONO with a gain multiplier, so distance reads and direction does not: 'distance' is baked into each asset's spectrum, not its level (loudnorm would undo a quiet render). Zero draws, zero tris."
},
"skins": {
"facade": {
"timber-teal": {
"file": "gen/facade-timber-teal.jpg",
"types": [
"record"
],
"signboard": "blank"
},
"arcade-tile": {
"file": "gen/facade-arcade-tile.jpg",
"types": [
"record"
],
"signboard": "blank"
},
"djsim-record": {
"file": "gen/facade-djsim-record.jpg",
"types": [
"record"
],
"signboard": "blank"
},
"weatherboard": {
"file": "gen/facade-weatherboard.jpg",
"types": [
"opshop"
],
"signboard": "blank"
},
"fibro-blue": {
"file": "gen/facade-fibro-blue.jpg",
"types": [
"opshop"
],
"signboard": "blank"
},
"djsim-opshop": {
"file": "gen/facade-djsim-opshop.jpg",
"types": [
"opshop"
],
"signboard": "blank"
},
"stucco-pink": {
"file": "gen/facade-stucco-pink.jpg",
"types": [
"toy"
],
"signboard": "blank"
},
"deco-pastel": {
"file": "gen/facade-deco-pastel.jpg",
"types": [
"toy"
],
"signboard": "blank"
},
"boutique": {
"file": "gen/facade-boutique.jpg",
"types": [
"toy"
],
"signboard": "blank"
},
"federation": {
"file": "gen/facade-federation.jpg",
"types": [
"book"
],
"signboard": "blank"
},
"sandstone": {
"file": "gen/facade-sandstone.jpg",
"types": [
"book"
],
"signboard": "blank"
},
"redbrick": {
"file": "gen/facade-redbrick.jpg",
"types": [
"book"
],
"signboard": "blank"
},
"stripmall": {
"file": "gen/facade-stripmall.jpg",
"types": [
"video"
],
"signboard": "blank"
},
"djsim-video": {
"file": "gen/facade-djsim-video.jpg",
"types": [
"video"
],
"signboard": "baked"
},
"besser": {
"file": "gen/facade-besser.jpg",
"types": [
"pawn"
],
"signboard": "blank"
},
"grimy": {
"file": "gen/facade-grimy.jpg",
"types": [
"pawn"
],
"signboard": "baked"
},
"djsim-pawn": {
"file": "gen/facade-djsim-pawn.jpg",
"types": [
"pawn"
],
"signboard": "blank"
},
"corrugated": {
"file": "gen/facade-corrugated.jpg",
"types": [
"pawn",
"stall"
],
"signboard": "blank"
},
"cashtheists": {
"file": "gen/facade-cashtheists.jpg",
"types": [
"pawn"
],
"signboard": "blank"
},
"djsim-milkbar": {
"file": "gen/facade-djsim-milkbar.jpg",
"types": [
"milkbar"
],
"signboard": "baked"
},
"brickveneer": {
"file": "gen/facade-brickveneer.jpg",
"types": [
"milkbar"
],
"signboard": "blank"
},
"terrazzo": {
"file": "gen/facade-terrazzo.jpg",
"types": [
"dept"
],
"signboard": "blank"
},
"djsim-dept": {
"file": "gen/facade-djsim-dept.jpg",
"types": [
"dept"
],
"signboard": "blank"
},
"market": {
"file": "gen/facade-market.jpg",
"types": [
"stall"
],
"signboard": "baked"
},
"djsim-pub": {
"file": "gen/facade-djsim-pub.jpg",
"types": [
"general"
],
"signboard": "baked"
},
"toy-brights": {
"file": "gen/facade-toy-brights.jpg",
"types": [
"toy"
],
"signboard": "blank"
},
"toy-lolly": {
"file": "gen/facade-toy-lolly.jpg",
"types": [
"toy"
],
"signboard": "blank"
},
"book-barn": {
"file": "gen/facade-book-barn.jpg",
"types": [
"book"
],
"signboard": "blank"
},
"book-scholarly": {
"file": "gen/facade-book-scholarly.jpg",
"types": [
"book"
],
"signboard": "blank"
},
"video-neon": {
"file": "gen/facade-video-neon.jpg",
"types": [
"video"
],
"signboard": "blank"
},
"video-suburban": {
"file": "gen/facade-video-suburban.jpg",
"types": [
"video"
],
"signboard": "blank"
},
"milkbar-corner": {
"file": "gen/facade-milkbar-corner.jpg",
"types": [
"milkbar"
],
"signboard": "blank"
},
"milkbar-fibro": {
"file": "gen/facade-milkbar-fibro.jpg",
"types": [
"milkbar"
],
"signboard": "blank"
},
"milkbar-deco": {
"file": "gen/facade-milkbar-deco.jpg",
"types": [
"milkbar"
],
"signboard": "blank"
},
"dept-anchor": {
"file": "gen/facade-dept-anchor.jpg",
"types": [
"dept"
],
"signboard": "blank"
},
"dept-emporium": {
"file": "gen/facade-dept-emporium.jpg",
"types": [
"dept"
],
"signboard": "blank"
},
"market-fruit": {
"file": "gen/facade-market-fruit.jpg",
"types": [
"stall"
],
"signboard": "blank"
},
"market-edge": {
"file": "gen/facade-market-edge.jpg",
"types": [
"stall"
],
"signboard": "blank"
},
"warehouse-roller": {
"file": "gen/facade-warehouse-roller.jpg",
"types": [
"pawn",
"general"
],
"signboard": "blank"
},
"warehouse-tin": {
"file": "gen/facade-warehouse-tin.jpg",
"types": [
"pawn",
"general"
],
"signboard": "blank"
},
"arcade-entry": {
"file": "gen/facade-arcade-entry.jpg",
"types": [
"general"
],
"signboard": "blank"
},
"res-terrace": {
"file": "gen/facade-res-terrace.jpg",
"types": [
"house"
],
"signboard": "blank"
},
"res-weatherboard": {
"file": "gen/facade-res-weatherboard.jpg",
"types": [
"house"
],
"signboard": "blank"
},
"res-fibro": {
"file": "gen/facade-res-fibro.jpg",
"types": [
"house"
],
"signboard": "blank"
},
"res-brickveneer": {
"file": "gen/facade-res-brickveneer.jpg",
"types": [
"house"
],
"signboard": "blank"
},
"brick-side": {
"file": "gen/facade-brick-side.jpg",
"types": [],
"signboard": "blank",
"face": "side"
},
"render-side": {
"file": "gen/facade-render-side.jpg",
"types": [],
"signboard": "blank",
"face": "side"
},
"weatherboard-side": {
"file": "gen/facade-weatherboard-side.jpg",
"types": [],
"signboard": "blank",
"face": "side"
}
},
"sky": [
{
"id": "cold-front",
"file": "gen/sky-cold-front.jpg"
},
{
"id": "endless-blue",
"file": "gen/sky-endless-blue.jpg"
},
{
"id": "golden-arvo",
"file": "gen/sky-golden-arvo.jpg"
},
{
"id": "grey-drizzle",
"file": "gen/sky-grey-drizzle.jpg"
},
{
"id": "heat-haze",
"file": "gen/sky-heat-haze.jpg"
},
{
"id": "high-cirrus",
"file": "gen/sky-high-cirrus.jpg"
},
{
"id": "monsoon",
"file": "gen/sky-monsoon.jpg"
},
{
"id": "outback-dusk",
"file": "gen/sky-outback-dusk.jpg"
},
{
"id": "spring-puffy",
"file": "gen/sky-spring-puffy.jpg"
},
{
"id": "summer-storm",
"file": "gen/sky-summer-storm.jpg"
}
],
"ground": {
"asphalt1": {
"file": "gen/ground-asphalt1.jpg",
"use": "road"
},
"asphalt2": {
"file": "gen/ground-asphalt2.jpg",
"use": "road"
},
"bitumen-reddust": {
"file": "gen/ground-bitumen-reddust.jpg",
"use": "road"
},
"brickpave": {
"file": "gen/ground-brickpave.jpg",
"use": "plaza"
},
"coastal-sand": {
"file": "gen/ground-coastal-sand.jpg",
"use": "yard"
},
"djsim-footpath": {
"file": "gen/ground-djsim-footpath.jpg",
"use": "footpath"
},
"djsim-road": {
"file": "gen/ground-djsim-road.jpg",
"use": "road"
},
"footpath1": {
"file": "gen/ground-footpath1.jpg",
"use": "footpath"
},
"footpath2": {
"file": "gen/ground-footpath2.jpg",
"use": "footpath"
},
"grass": {
"file": "gen/ground-grass.jpg",
"use": "yard"
},
"grass-dry": {
"file": "gen/ground-grass-dry.jpg",
"use": "yard"
},
"grass-temperate": {
"file": "gen/ground-grass-temperate.jpg",
"use": "yard"
},
"gravel": {
"file": "gen/ground-gravel.jpg",
"use": "verge"
},
"reddust": {
"file": "gen/ground-reddust.jpg",
"use": "outback"
}
},
"wall": [
{
"id": "damask-mauve",
"file": "gen/wall-damask-mauve.jpg"
},
{
"id": "diamond-green",
"file": "gen/wall-diamond-green.jpg"
},
{
"id": "floral-cream",
"file": "gen/wall-floral-cream.jpg"
},
{
"id": "floral-gold",
"file": "gen/wall-floral-gold.jpg"
},
{
"id": "geo-orange",
"file": "gen/wall-geo-orange.jpg"
},
{
"id": "stripe-sage",
"file": "gen/wall-stripe-sage.jpg"
},
{
"id": "trellis-blue",
"file": "gen/wall-trellis-blue.jpg"
},
{
"id": "woodchip-white",
"file": "gen/wall-woodchip-white.jpg"
}
],
"interior": {
"floor": [
{
"id": "carpet-swirl",
"file": "gen/tex-carpet-swirl.jpg"
},
{
"id": "carpet-mustard",
"file": "gen/tex-carpet-mustard.jpg"
},
{
"id": "carpet-greygreen",
"file": "gen/tex-carpet-greygreen.jpg"
},
{
"id": "lino-check",
"file": "gen/tex-lino-check.jpg"
},
{
"id": "lino-cork",
"file": "gen/tex-lino-cork.jpg"
},
{
"id": "boards-polished",
"file": "gen/tex-boards-polished.jpg"
}
],
"surface": [
{
"id": "wood-counter",
"file": "gen/tex-wood-counter.jpg",
"types": [
"record",
"milkbar",
"pawn"
]
},
{
"id": "boutique-wall",
"file": "gen/tex-boutique-wall.jpg",
"types": [
"toy",
"opshop"
]
},
{
"id": "pegboard",
"file": "gen/tex-pegboard.jpg",
"types": [
"pawn",
"video"
]
},
{
"id": "brick",
"file": "gen/tex-brick.jpg",
"types": [
"general"
]
},
{
"id": "render",
"file": "gen/tex-render.jpg",
"types": [
"general"
]
},
{
"id": "grimy-wall",
"file": "gen/tex-grimy-wall.jpg",
"types": [
"pawn"
]
},
{
"id": "velvet-curtain",
"file": "gen/tex-velvet-curtain.jpg",
"types": [
"toy",
"record"
]
}
]
},
"awning": [
{
"id": "awning-red",
"file": "gen/tex-awning-red.jpg"
},
{
"id": "awning-green",
"file": "gen/tex-awning-green.jpg"
},
{
"id": "awning-blue",
"file": "gen/tex-awning-blue.jpg"
}
],
"poster": {
"grunge": {
"file": "gen/poster-grunge.jpg",
"nameZone": [
0.08,
0.04,
0.84,
0.23
],
"signboard": "blank"
},
"retro": {
"file": "gen/poster-retro.jpg",
"nameZone": [
0.08,
0.04,
0.84,
0.23
],
"signboard": "blank"
},
"screenprint": {
"file": "gen/poster-screenprint.jpg",
"nameZone": [
0.08,
0.04,
0.84,
0.23
],
"signboard": "blank"
},
"xerox": {
"file": "gen/poster-xerox.jpg",
"nameZone": [
0.08,
0.04,
0.84,
0.23
],
"signboard": "blank"
}
}
},
"fittings": {
"record_crate": {
"file": "procity_fit_record_crate_01.glb",
"footprint": [
0.46,
0.63
],
"height": 0.41,
"thumb": "thumbs/procity_fit_record_crate_01.png"
},
"wire_shelf": {
"file": "procity_fit_wire_shelf_01.glb",
"footprint": [
1.17,
0.44
],
"height": 1.8,
"thumb": "thumbs/procity_fit_wire_shelf_01.png"
},
"clothes_rack": {
"file": "procity_fit_clothes_rack_01.glb",
"footprint": [
1.34,
0.43
],
"height": 1.5,
"thumb": "thumbs/procity_fit_clothes_rack_01.png"
},
"bookshelf": {
"file": "procity_fit_bookshelf_01.glb",
"footprint": [
0.2,
1.02
],
"height": 2.0,
"thumb": "thumbs/procity_fit_bookshelf_01.png"
},
"cube_shelf_wide": {
"file": "procity_fit_cube_shelf_wide_01.glb",
"footprint": [
0.75,
1.24
],
"height": 1.1,
"thumb": "thumbs/procity_fit_cube_shelf_wide_01.png"
},
"counter": {
"file": "procity_fit_counter_01.glb",
"footprint": [
1.06,
4.02
],
"height": 1.1,
"thumb": "thumbs/procity_fit_counter_01.png"
},
"coffee_table": {
"file": "procity_fit_coffee_table_01.glb",
"footprint": [
0.67,
1.49
],
"height": 0.45,
"thumb": "thumbs/procity_fit_coffee_table_01.png"
},
"work_table": {
"file": "procity_fit_work_table_01.glb",
"footprint": [
0.44,
1.04
],
"height": 0.75,
"thumb": "thumbs/procity_fit_work_table_01.png"
},
"box_crate": {
"file": "procity_fit_box_crate_01.glb",
"footprint": [
1.35,
1.32
],
"height": 0.6,
"thumb": "thumbs/procity_fit_box_crate_01.png"
},
"listening_booth": {
"file": "procity_fit_listening_booth_01.glb",
"footprint": [
0.88,
0.7
],
"height": 1.595,
"thumb": "thumbs/procity_fit_listening_booth_01.png"
},
"drinks_fridge": {
"file": "procity_fit_drinks_fridge_01.glb",
"footprint": [
0.84,
0.93
],
"height": 1.591,
"thumb": "thumbs/procity_fit_drinks_fridge_01.png"
},
"arcade_cabinet": {
"file": "procity_fit_arcade_cabinet_01.glb",
"footprint": [
0.75,
0.85
],
"height": 1.692,
"thumb": "thumbs/procity_fit_arcade_cabinet_01.png"
},
"milkshake_mixer": {
"file": "procity_fit_milkshake_mixer_01.glb",
"footprint": [
0.38,
0.27
],
"height": 0.498,
"thumb": "thumbs/procity_fit_milkshake_mixer_01.png"
},
"counter_till": {
"file": "procity_fit_counter_till_01.glb",
"footprint": [
1.61,
0.61
],
"height": 1.146,
"thumb": "thumbs/procity_fit_counter_till_01.png"
},
"glass_case": {
"file": "procity_fit_glass_case_01.glb",
"footprint": [
1.08,
1.42
],
"height": 0.997,
"thumb": "thumbs/procity_fit_glass_case_01.png"
},
"magazine_rack": {
"file": "procity_fit_magazine_rack_01.glb",
"footprint": [
0.54,
0.44
],
"height": 1.2,
"thumb": "thumbs/procity_fit_magazine_rack_01.png"
},
"crate_stack": {
"file": "procity_fit_crate_stack_01.glb",
"footprint": [
0.71,
0.72
],
"height": 0.9,
"thumb": "thumbs/procity_fit_crate_stack_01.png"
},
"electric_guitar": {
"file": "procity_fit_electric_guitar_01.glb",
"footprint": [
0.38,
0.08
],
"height": 1.0,
"thumb": "thumbs/procity_fit_electric_guitar_01.png"
},
"bass_guitar": {
"file": "procity_fit_bass_guitar_01.glb",
"footprint": [
0.34,
0.13
],
"height": 1.15,
"thumb": "thumbs/procity_fit_bass_guitar_01.png"
},
"drum_kit": {
"file": "procity_fit_drum_kit_01.glb",
"footprint": [
1.5,
1.24
],
"height": 1.3,
"thumb": "thumbs/procity_fit_drum_kit_01.png"
},
"guitar_amp": {
"file": "procity_fit_guitar_amp_01.glb",
"footprint": [
0.52,
0.29
],
"height": 0.607,
"thumb": "thumbs/procity_fit_guitar_amp_01.png"
},
"mic_stand": {
"file": "procity_fit_mic_stand_01.glb",
"footprint": [
0.57,
0.57
],
"height": 1.702,
"thumb": "thumbs/procity_fit_mic_stand_01.png"
},
"cash_register": {
"file": "vintage-cash-register.glb",
"footprint": [
0.35,
0.28
],
"height": 0.35
}
},
"furniture": {
"bench": {
"file": "procity_street_bench_01.glb",
"footprint": [
0.44,
1.21
],
"height": 0.85,
"thumb": "thumbs/procity_street_bench_01.png"
},
"bench_modern": {
"file": "procity_street_bench_modern_01.glb",
"footprint": [
1.68,
0.47
],
"height": 0.45,
"thumb": "thumbs/procity_street_bench_modern_01.png"
},
"bench_wood": {
"file": "procity_street_bench_wood_01.glb",
"footprint": [
1.34,
0.59
],
"height": 0.85,
"thumb": "thumbs/procity_street_bench_wood_01.png"
},
"longbench": {
"file": "procity_street_longbench_01.glb",
"footprint": [
5.86,
1.08
],
"height": 0.85,
"thumb": "thumbs/procity_street_longbench_01.png"
},
"park_bench": {
"file": "procity_street_park_bench_01.glb",
"footprint": [
1.92,
1.61
],
"height": 0.85,
"thumb": "thumbs/procity_street_park_bench_01.png"
},
"streetlight": {
"file": "procity_street_streetlight_01.glb",
"footprint": [
1.64,
1.82
],
"height": 5.0,
"thumb": "thumbs/procity_street_streetlight_01.png"
},
"food_cart": {
"file": "procity_street_food_cart_01.glb",
"footprint": [
3.0,
2.07
],
"height": 2.0,
"thumb": "thumbs/procity_street_food_cart_01.png"
},
"novelty_record": {
"file": "procity_street_novelty_record_01.glb",
"footprint": [
1.9,
0.93
],
"height": 1.992,
"thumb": "thumbs/procity_street_novelty_record_01.png"
},
"bus_shelter": {
"file": "procity_street_bus_shelter_01.glb",
"footprint": [
2.33,
1.41
],
"height": 2.4,
"thumb": "thumbs/procity_street_bus_shelter_01.png"
},
"bin": {
"file": "procity_street_bin_01.glb",
"footprint": [
0.57,
0.68
],
"height": 1.0,
"thumb": "thumbs/procity_street_bin_01.png"
},
"magpie": {
"file": "procity_street_magpie_01.glb",
"footprint": [
0.15,
0.4
],
"height": 0.36,
"thumb": "thumbs/procity_street_magpie_01.png"
},
"paling_fence": {
"file": "procity_street_paling_fence_01.glb",
"footprint": [
0.28,
3.59
],
"height": 1.79,
"thumb": "thumbs/procity_street_paling_fence_01.png"
},
"water_tank": {
"file": "procity_street_water_tank_01.glb",
"footprint": [
1.73,
1.64
],
"height": 2.19,
"thumb": "thumbs/procity_street_water_tank_01.png"
}
},
"fittingAliases": {
"record_bins": "record_crate",
"crates": "box_crate",
"counter": "counter_till",
"clothes_racks": "clothes_rack",
"bricabrac_shelving": "wire_shelf",
"book_wall": "bookshelf",
"cube_shelves": "cube_shelf_wide",
"display_tables": "coffee_table",
"bookshelves": "bookshelf",
"vhs_shelving": "wire_shelf",
"trestle_tables": "work_table",
"glass_case": "glass_case",
"glass_cabinets": "glass_case",
"magazine_rack": "magazine_rack",
"fridge": "drinks_fridge",
"listening_corner": "listening_booth"
},
"audio": {
"ambience": {
"street-day": {
"file": "audio/ambience-street-day.ogg",
"fallback": "audio/ambience-street-day.m4a",
"loop": true,
"gain": 0.5,
"scope": "street"
},
"street-night": {
"file": "audio/ambience-street-night.ogg",
"fallback": "audio/ambience-street-night.m4a",
"loop": true,
"gain": 0.5,
"scope": "street"
},
"rain": {
"file": "audio/ambience-rain.ogg",
"fallback": "audio/ambience-rain.m4a",
"loop": true,
"gain": 0.45,
"scope": "street"
},
"roomtone-retail": {
"file": "audio/roomtone-retail.ogg",
"fallback": "audio/roomtone-retail.m4a",
"loop": true,
"gain": 0.35,
"scope": "interior",
"types": [
"record",
"opshop",
"book",
"toy",
"pawn",
"stall",
"general"
]
},
"roomtone-milkbar": {
"file": "audio/roomtone-milkbar.ogg",
"fallback": "audio/roomtone-milkbar.m4a",
"loop": true,
"gain": 0.35,
"scope": "interior",
"types": [
"milkbar"
]
},
"roomtone-video": {
"file": "audio/roomtone-video.ogg",
"fallback": "audio/roomtone-video.m4a",
"loop": true,
"gain": 0.35,
"scope": "interior",
"types": [
"video",
"dept",
"arcade"
]
},
"crowd-walla": {
"file": "audio/ambience-crowd-walla.ogg",
"fallback": "audio/ambience-crowd-walla.m4a",
"loop": true,
"gain": 0.4,
"scope": "interior",
"gig": true,
"note": "gig crowd layer (interior; F plays when gig on)"
},
"mower-distant": {
"file": "audio/ambience-mower-distant.ogg",
"fallback": "audio/ambience-mower-distant.m4a",
"gain": 0.3,
"scope": "street",
"life": true,
"anchor": "town",
"note": "a mower two streets over",
"loop": true
},
"radio-through-window": {
"file": "audio/ambience-radio-through-window.ogg",
"fallback": "audio/ambience-radio-through-window.m4a",
"gain": 0.25,
"scope": "street",
"life": true,
"anchor": "house",
"note": "someone's radio through a window",
"loop": true
},
"sprinkler": {
"file": "audio/ambience-sprinkler.ogg",
"fallback": "audio/ambience-sprinkler.m4a",
"gain": 0.35,
"scope": "street",
"life": true,
"anchor": "yard",
"note": "impulse sprinkler on a lawn",
"loop": true
}
},
"sfx": {
"doorbell": {
"file": "audio/sfx-doorbell.ogg",
"fallback": "audio/sfx-doorbell.m4a",
"gain": 0.7
},
"door-open": {
"file": "audio/sfx-door-open.ogg",
"fallback": "audio/sfx-door-open.m4a",
"gain": 0.6
},
"till": {
"file": "audio/sfx-till.ogg",
"fallback": "audio/sfx-till.m4a",
"gain": 0.7
},
"riffle": {
"file": "audio/sfx-riffle.ogg",
"fallback": "audio/sfx-riffle.m4a",
"gain": 0.6
},
"toast": {
"file": "audio/sfx-toast.ogg",
"fallback": "audio/sfx-toast.m4a",
"gain": 0.5
},
"tram-bell": {
"file": "audio/sfx-tram-bell.ogg",
"fallback": "audio/sfx-tram-bell.m4a",
"gain": 0.7
},
"applause": {
"file": "audio/sfx-applause.ogg",
"fallback": "audio/sfx-applause.m4a",
"gain": 0.7,
"gig": true
},
"tram-rumble": {
"file": "audio/sfx-tram-rumble.ogg",
"fallback": "audio/sfx-tram-rumble.m4a",
"gain": 0.5,
"loop": true
},
"footstep": {
"pavement": [
{
"file": "audio/step-pavement-1.ogg",
"fallback": "audio/step-pavement-1.m4a"
},
{
"file": "audio/step-pavement-2.ogg",
"fallback": "audio/step-pavement-2.m4a"
},
{
"file": "audio/step-pavement-3.ogg",
"fallback": "audio/step-pavement-3.m4a"
}
],
"timber": [
{
"file": "audio/step-timber-1.ogg",
"fallback": "audio/step-timber-1.m4a"
},
{
"file": "audio/step-timber-2.ogg",
"fallback": "audio/step-timber-2.m4a"
},
{
"file": "audio/step-timber-3.ogg",
"fallback": "audio/step-timber-3.m4a"
}
]
},
"dog-bark-fence": {
"file": "audio/sfx-dog-bark-fence.ogg",
"fallback": "audio/sfx-dog-bark-fence.m4a",
"gain": 0.55,
"scope": "street",
"life": true,
"anchor": "yard",
"note": "the dog going off behind a paling fence"
},
"roller-door": {
"file": "audio/sfx-roller-door.ogg",
"fallback": "audio/sfx-roller-door.m4a",
"gain": 0.5,
"scope": "street",
"life": true,
"anchor": "shop",
"note": "a roller door run up"
},
"magpie-carol": {
"file": "audio/sfx-magpie-carol.ogg",
"fallback": "audio/sfx-magpie-carol.m4a",
"gain": 0.45,
"scope": "street",
"life": true,
"anchor": "tree",
"note": "the carol \u2014 the warble, not the clack"
}
},
"music": {
"record-shop": {
"file": "audio/music-record-shop.ogg",
"fallback": "audio/music-record-shop.m4a",
"loop": true,
"gain": 0.55,
"types": [
"record"
],
"note": "record shop plays music"
},
"milkbar": {
"file": "audio/music-milkbar.ogg",
"fallback": "audio/music-milkbar.m4a",
"loop": true,
"gain": 0.5,
"types": [
"milkbar",
"general"
],
"note": "milk bar radio"
},
"video-synth": {
"file": "audio/music-video-synth.ogg",
"fallback": "audio/music-video-synth.m4a",
"loop": true,
"gain": 0.5,
"types": [
"video"
],
"note": "video store synth hum"
},
"arcade": {
"file": "audio/music-arcade.ogg",
"fallback": "audio/music-arcade.m4a",
"loop": true,
"gain": 0.5,
"types": [
"arcade",
"dept"
],
"note": "arcade cabinet"
},
"gig-pubrock": {
"file": "audio/music-gig-pubrock.ogg",
"fallback": "audio/music-gig-pubrock.m4a",
"loop": true,
"gain": 0.6,
"types": [
"pub"
],
"note": "gig live bed \u2014 pub-rock (pub); F plays via room.audio gigKey",
"gig": true
},
"gig-grunge": {
"file": "audio/music-gig-grunge.ogg",
"fallback": "audio/music-gig-grunge.m4a",
"loop": true,
"gain": 0.6,
"types": [
"band_room"
],
"note": "gig live bed \u2014 grunge (band_room)",
"gig": true
},
"gig-covers": {
"file": "audio/music-gig-covers.ogg",
"fallback": "audio/music-gig-covers.m4a",
"loop": true,
"gain": 0.5,
"types": [
"rsl"
],
"note": "gig live bed \u2014 covers (RSL); mellower, organ-led",
"gig": true
}
}
}
}