Transverse Mercator SRS -> ECEF, in a local ENU frame at the scene origin so
glTF vertices stay small (float32-safe). TM params come from the scene WKT,
so any TM grid works. Inverse-TM is the Redfearn series, validated against
PROJ to sub-cm (see tests). Datum shift is assumed zero.
meshopt-compressed glTF (EXT_meshopt_compression). Buffer 0 is the GLB BIN:
the compressed streams followed by the raw JPEGs. Buffer 1 is the fallback
(allocate-on-load) holding the decompressed layout. quantize adds
KHR_mesh_quantization (uint16 positions, ~mm loss, smaller); otherwise
positions/UVs stay float32 and the geometry is lossless.
Each 3mx node becomes one tile; a node’s child .3mxb files expand into child
tiles. Each top-level area is written as its own external tileset.json (lazy
loaded) under a tiny root tileset, with one ENU root transform.