# Geographic sources and fidelity

The scene uses [OpenStreetMap](https://www.openstreetmap.org/#map=16/1.2835/103.8545) geographic data, © OpenStreetMap contributors, available under the [Open Database License](https://www.openstreetmap.org/copyright). The extract timestamp is 2026-09-06T12:09:36Z. Geographic data is retrieved through the [Overpass API](https://overpass-api.de/).

`public/assets/geography.json` contains projected OSM building footprints, tagged heights, roads, pedestrian paths, parks, and reservoir and river boundaries. Original OSM object IDs are retained for inspection at `https://www.openstreetmap.org/way/{id}` or `https://www.openstreetmap.org/relation/{id}`. The main waterfront is [Marina Reservoir relation 9542146](https://www.openstreetmap.org/relation/9542146); the adjoining river is [Singapore River relation 9569901](https://www.openstreetmap.org/relation/9569901). These boundaries preserve the Promontory, the waterfront at Marina Bay Sands, and the Esplanade shoreline.

The local origin is latitude 1.2835°, longitude 103.8545°. Coordinates use metres, with positive X east and positive Z south: X = (longitude − 103.8545) × 111292, Z = −(latitude − 1.2835) × 110574. This is a local equirectangular approximation, not a cadastral survey. The clipped area spans X −1800 to 1900 metres and Z −1600 to 1500 metres. A separate land mesh subtracts all mapped water bodies, including islands and river channels. Shoreline paths exclude artificial clipping edges.

Building heights use OSM `height` or `building:height` where available. Otherwise a height is estimated from mapped storeys at 3.7 metres per storey; buildings with neither value use 16 metres. Every estimate is marked `heightInferred: true` and records its basis. Road widths use mapped widths or lane counts where available, then a road-class estimate. These are appearance estimates rather than surveyed dimensions. Building-part volumes are partitioned against parent envelopes. Exterior wall and roof patches are prepared by `scripts/expose_buildings.py`; the runtime renders those exposed surfaces, suppressing internal and coincident faces. Surface detail, architectural materials, vegetation and custom landmark geometry are artistic reconstructions, not photogrammetry. The result must not be described as a survey-accurate digital twin.

Regenerate geometry with `python scripts/prepare_geography.py INPUT.json public/assets/geography.json`; Python and Shapely are required. The input is an Overpass JSON extract with complete way geometry and multipolygon member geometry. Run `python scripts/expose_buildings.py` after geographic edits to regenerate exterior surfaces and their overlap validation. Sloped-roof visibility uses bounding prisms; their joins remain approximate.

Architectural-height corrections: [CVU / The Skyscraper Center lists MBFC Office Tower I at 186.1 metres](https://www.skyscrapercenter.com/building/marina-bay-financial-centre-office-tower-i/8997) and [MBFC Office Tower III at 239.7 metres](https://www.skyscrapercenter.com/building/marina-bay-financial-centre-office-tower-iii/8996). These values override the 245-metre OSM tags for those two footprints, with `heightBasis` recording the correction. The 245-metre Tower II value is consistent with the [published complex inventory](https://www.skyscrapercenter.com/complex/163).

The geographic extract includes standalone `building:part` ways and building multipolygon relations. These supply the tall Raffles Place skyline and the Sands shopping podium. Zero-height parent outlines are omitted, while their three-dimensional parts remain. Building relations associate named landmarks with their outline IDs without extruding a duplicate envelope. Building-part heights are elevations above the local ground datum: render thickness as `height - minHeight`, not `height` added to `minHeight`. Some source parts have inconsistent minimum and maximum heights and should be skipped when their thickness is nonpositive.

The custom Fullerton Hotel model follows its mapped footprint (way 46595395), the [National Heritage Board description of five frontages and two-storey Doric colonnades](https://www.roots.gov.sg/places/places-landing/Places/national-monuments/former-fullerton-building), and [National Library Board's historical description of 120-foot walls](https://biblioasia.nlb.gov.sg/chapters-of-asia/chapters-on-asia-2015-on-the-waterfront-the-building-of-singapore-s-first-high-rise-skyline-1918-1928/). [An aerial reference photograph](https://commons.wikimedia.org/wiki/File:Aerial_perspective_of_Fullerton_Hotel,_Singapore.jpg) informs the terracotta roof and inset rooftop treatment. The roof detailing, column spacing and windows are procedural approximations. The GLB replaces OSM ways 46595395, 407926378 and 407926385, and is generated by `scripts/build_fullerton.py`.

## Landmark architecture

The Blender landmark assets are generated by `scripts/build_landmarks.py` from mapped positions and architectural references:

- [Safdie Architects: Marina Bay Sands hotel and SkyPark](https://www.safdiearchitects.com/projects/marina-bay-sands-hotel-and-skypark), [Arup: Marina Bay Sands Integrated Resort](https://www.arup.com/en-us/projects/marina-bay-sands-integrated-resort/): three hotel towers and a 340m rooftop park approximately 200m above ground.
- [Marina Bay Sands: ArtScience Museum factsheet](https://www.marinabaysands.com/content/dam/singapore/marinabaysands/master/main/home/company-information/media-centre/factsheets/amenities/artscience-museum.pdf): ten sculptural fingers reaching approximately 60m.
- [Esplanade visitor architecture information](https://www.esplanade.com/visit/explore-and-discover/esplanade-for-tourists): twin glazed domes and triangular sunshades.
- [Singapore Tourism Board: Merlion Park](https://www.visitsingapore.com/see-do-singapore/recreation-leisure/viewpoints/merlion-park/): waterfront Merlion landmark. The mesh is a sculptural approximation.
- [Apple Marina Bay Sands](https://www.apple.com/sg/retail/marinabaysands/): spherical floating pavilion.

[This aerial reference](https://www.leonardo.com/o/adaptive-media/image/18269502/h_695/LDO_global_singapore.jpg) informs the landmark silhouettes and the bay-wide composition. Reference photography is not included as scene textures.

## Surface assets and rendering

Sky illumination uses [Kloppenheim 06 Pure Sky](https://polyhaven.com/a/kloppenheim_06_puresky) and [Qwantani Dawn Pure Sky](https://polyhaven.com/a/qwantani_dawn_puresky), by Poly Haven under [CC0](https://polyhaven.com/license). The morning HDR solar peak is measured at elevation 4.57° and rotated to azimuth 84.65° (east, slightly north). The direct light uses the same direction. This depicts sunrise, not a live sun-position calculation. Evening uses the separate sunless capture, with its horizon glow rotated west and its white balance shifted toward blue; background and material reflections use the same adjusted texture. Direct sunlight is off. These are lighting assets and do not represent measured Singapore weather.

Water normals and grass textures come from the [Three.js examples repository](https://github.com/mrdoob/three.js/tree/dev/examples/textures). The application uses Three.js under its [MIT license](https://github.com/mrdoob/three.js/blob/dev/LICENSE). Window, paving and most foliage textures are procedural. Up to eight waterfront trees use [Island Tree 02](https://polyhaven.com/a/island_tree_02), by Rico Cilliers and Rob Tuytel, under [CC0](https://polyhaven.com/license). The model is reduced to approximately 89,000 triangles with 1K textures by `scripts/adapt_coastal_tree.py`. It represents an approximate ornamental coastal tree, not a verified Marina Bay species or location scan. The Sail towers use a blue-grey glass profile informed by the [CBD reference photograph](https://assets.executivecentre.com/assets/Singapore-MBFC1-View_FeatureSurrounding.jpg). CBD and hotel glass use a local city reflection probe and separate panel roughness; facade profiles use the [KPF financial-centre reference](https://www.kpf.com/project/marina-bay-financial-centre), [One Raffles Quay reference](https://www.c-sgroup.com/inspiration/project-gallery/one-raffles-quay) and [UOB architectural account](https://www.uob.com.sg/gallery/reachingforthesky.html). Water reflections, sunlight, contact occlusion and ambient movement are rendered in real time.

Live satellite ground imagery is displayed from [Esri World Imagery](https://www.arcgis.com/home/item.html?id=10df2279f9684e4a9f6a7f08febac2a9) using its public online tile service. Attribution is visible on the scene: Esri, Maxar, Earthstar Geographics and the GIS User Community. Tiles are requested by the browser and are not bundled or exported as an offline texture. [Esri attribution guidance](https://doc.arcgis.com/en/arcgis-online/reference/display-copyrights.htm) applies. Imagery dates vary by source and may differ from the vector map snapshot. The browser needs internet access for imagery and Google Fonts.

## Navigation

`public/assets/navigation.json` retains checked pedestrian spawn positions and a route on the OSM pedestrian network. It records map-based constraints and a substantial detour near NS Square construction. The viewpoint tour is a cinematic camera tour, not an assertion that a short uninterrupted pedestrian circuit is currently open. Walking uses coarse footprint and shoreline collision, with mapped bridge deck heights; it is not a full character physics or navigation-mesh implementation.

## Photographic and sightline verification

Named waterfront views use standing cameras 1.65m above the modeled ground or Helix deck. Overview remains aerial. Bearing is `atan2(deltaEast, deltaNorth)`; angular elevation is `atan2(topHeight - eyeHeight, horizontalRange)`. The vertical field of view is 48°. Buildings, rather than camera framing, determine occlusion. Map uncertainty and simplified architecture still limit exact photographic matching.

Photographs are inspected as references; their pixels are not redistributed in the scene:

- [Apple official opening photographs](https://www.apple.com/newsroom/2020/09/apple-marina-bay-sands-opens-thursday-in-singapore/) and [IStructE pavilion dimensions](https://www.istructe.org/structural-awards/projects/2021/apple-marina-bay-sands/) inform the 30m diameter, 17m-high dome, horizontal baffles and clear glazing.
- [Architects 61 Helix photographs](https://a61.com.sg/projects/helix-bridge) and [structural account](https://www.worldstainless.org/files/issf/non-image-files/PDF/Structural/Helix_Pedestrian_Bridge.pdf) inform the 10.8m/9.4m helical diameters, six/five strands and 273mm tubes. Its centerline follows the connected main OSM walkway, with viewing platforms modeled separately.
- [Esplanade cladding fabricator](https://www.mero.com.sg/project_references/esplanade-theatres-on-the-bay-green-mark-gold/) and mapped footprint axes inform dome placement and aluminum sunshades.
- [Safdie waterfront photographs](https://www.safdiearchitects.com/projects/marina-bay-sands-public-realm-and-retail-galleria) inform paving, planting and promenade materials.
- [Promontory walking-tour photograph](https://jetsettingfools.com/singapore-marina-bay-walking-tour/) supports the eastward order of the hotel, museum and Flyer.
- [Merlion sunrise photograph](https://rimigo.com/experience/merlion-park) informs the low easterly sun, shaded hotel facades and water contrast.
- [Matty Putra's waterfront blue-hour photograph](https://fstoppers.com/media/1073161) informs the relationship between the Apple pavilion, the opposite CBD, glass and evening illumination.

The visual treatment remains an architectural reconstruction. Procedural facade patterns are not copies of each real building, and lighted-window occupancy is illustrative.

The Raffles waterfront camera is on pedestrian boardwalk OSM184297026 at 1.28431393°N,103.85382610°E. Its deck is modeled continuously with the adjacent quay at2.1m, giving a3.75m camera height; the deck elevation is an architectural assumption, not an OSM measurement. The separate pedestrian-route polyline retains its original starting vertex. From this camera the mapped MBS tower bearings are104.4°,96.0°,88.7° at730m,768m,796m:15.67° tower1-to-3 angular separation. From Promontory the separation is14.51°; from Esplanade14.87°.

The Sands camera lies on pedestrian way 162525974, approximately 1.5m inland of the mapped water boundary, north of the Apple pavilion. The Shoppes glass roof and external louvers follow [Colt’s architectural photographs](https://www.coltinfo.sg/assets/images/c/_MG_8437-e8bfa38c.jpg). Museum galleries have closed curved undersides; their asymmetry remains approximate.

Photo comparisons currently identify remaining differences in skyline crowns, facade detail, vegetation and waterfront furnishings. No objective 75% photographic match is established. The application does not contain OneMap 3D meshes: their service restricts direct downloads.

[The Arup Journal, Marina Bay Sands special issue (2012)](https://www.arup.com/globalassets/downloads/arup-journal/the-arup-journal-2012-issue-1.pdf), pages17 and64–65, informs the vertical western tower slabs, individually curved eastern slabs, and reflective glass sun fins with0.6–1.2m depth. Model fin spacing is approximately5–6m, varying with tower width. Profile curves and their registration within mapped envelopes remain approximations.
