# City radius and regional STREAM overlap, r340

## Route 736 radius comparison

Two fresh packaged Chrome captures use the same Route 736 start, camera, car,
traffic model, and 1280×720 viewport. The L4RA scene radius is the only changed
input:

| Radius | Nearby triangles | Nearby textures | Status |
|---:|---:|---:|---|
| 220 | 67,700 | 190 | City scene ready |
| 400 | 168,050 | 312 | City scene ready |

The larger radius adds about 2.5× the submitted triangles and 1.6× the textures,
but the visible road, roadside structures, and skyline are nearly unchanged.
Raising the default radius would add load without fixing the missing sense of a
larger assembled neighborhood. The live captures are [radius 220](../webgl-city/review/images/483-r339-packaged-live-route736.png) and [radius 400](../webgl-city/review/images/484-r340-live-radius400-check.png).

## Regional scene relationship

The route records occupy overlapping world-coordinate ranges across several
regional files. For example, the extracted route-point bounds are approximately
`(-3066,-2073)..(1891,3121)` for L4RA and `(-576,-2249)..(2455,1105)` for
L4RB. The clean L4RA and L4RD scenes contain 109,424 and 93,037 placed mesh
signatures respectively. A `(mesh name, full 4×4 transform)` comparison finds
92,187 shared placements. Of those, 92,109 also have identical indexed vertex,
normal, UV, color and index payloads, plus matching material metadata and
embedded base-color image bytes. The remaining 78 same-transform placements
have different payloads and need separate treatment. The comparison is
reproducible with `tools/audit_nfsu2_region_overlap.py`; its sample mismatches
include `TRN_CN_TERRAINA_CHOP_*` and `TRN_CN_ROADA_CHOP_*` meshes. The coarser
L4RB/L4RG name+XY comparison still only identifies candidates, not safe
matches.

This is enough to identify a large, precisely matching duplicate set between
L4RA and L4RD, but it does not yet justify merging all regional files. The
viewer currently selects one region for city geometry, road support, traffic
routes, and intersections. A correct continuous Bayview stream needs the same
full-transform/payload audit for the other regional pairs, explicit handling
for the 78 L4RA/L4RD differences, then region-aware scene/collision/route
assembly. Loading every current GLB as-is would duplicate many placed objects
and multiply startup work. The evidence still rejects a radius-only fix.


## Safe mesh deduplication requirement

While preparing a region union, I found the existing GLB deduplicator compared positions, UVs, vertex colors, indices, mesh names, and material JSON but did not compare normals. Two meshes can share those earlier streams and still shade differently. `tools/deduplicate_nfsu2_glb.py` now includes every vertex attribute and accessor type/count/normalization in its exact-match signature. This code correction affects future exports; the currently packaged regional GLBs were not rebuilt from it, and the Route 736 scene is unchanged by this edit.
