
Model · London shopfronts
Restaurant menu case
This restaurant menu case is a small wall-mounted piece, about 0.48 m wide, 0.64 m high and only 0.09 m deep, with 1 unit equal to 1 metre. It is part of the London shopfronts pack, and the facts list six assemblies that use it: the Corner pub, Neighbourhood pub, Row of pubs, Wide-fronted pub, Corner cafe and Restaurant front.
Three named material slots, shop paint, sign lettering and recess, let you recolour it in parts, and it has no embedded textures, using PBR colour slots on UV-mapped geometry instead. The high level is 180 triangles, medium 116 and low 84, which is light at every level. That makes it easy to repeat along a street, and the facts mark it safe to instance with InstancedMesh. It pairs with the pack's fascias, doors and awnings.
A component from the London shopfronts pack, with named material slots for shop paint, sign lettering and recess. It measures about 0.48 m × 0.64 m × 0.09 m (W × H × D) and comes as high, medium and low detail files. Place it on its own, or load one of the 6 included assemblies that use it.
The picture is a studio render. View in 3D loads the GLB files themselves in three.js; switch between high, medium and low to compare.
Included in London shopfronts (£19), which contains 34 component models and 4 assemblies.
See the pack| High detail | 180 triangles · 9 KB |
|---|---|
| Medium detail | 116 triangles · 7 KB |
| Low detail | 84 triangles · 6 KB |
| Size (W × H × D) | 0.48 m × 0.64 m × 0.09 m |
| Format | GLB (glTF 2.0 binary) |
| Compression | Meshopt (EXT_meshopt_compression) + quantised; uncompressed copy in the pack |
| Textures | None: PBR colours only, UV-mapped for your own |
| Material slots | shop paint, sign lettering, recess |
| Sockets | mount-origin |
| Era | victorian, contemporary |
| On mobile | Start with the low level (84 triangles). What a phone can draw depends on your whole scene; no device benchmark is published yet. |
| Instancing | Safe to instance (InstancedMesh) |
Load it in three.js
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
import { MeshoptDecoder } from 'three/addons/libs/meshopt_decoder.module.js';
const loader = new GLTFLoader().setMeshoptDecoder(MeshoptDecoder);
const { scene: model } = await loader.loadAsync('models/london-shopfronts-menu-case/high-london-shopfronts-menu-case.glb');
scene.add(model); // 1 unit = 1 metre, origin at the mount socket












