A 3D station viewer for London Underground stations
View the station maps at stations.aeracode.org
What do you do when you've got a few hours spare, a copy of Blender, and a friend who's confused about the layouts of Underground stations? You build a browser-based 3D model of some of the stations, of course!
There are only a few stations in the initial version, but they include the two most complex ones - Bank and King's Cross - as well as a few smaller ones.
Some information about the project is below - also see my blog post for some more information.
Stations are modelled as two things - a Blender file containing the actual 3D model, and a YAML file containing metadata, object names, and other useful information. The Blender file is converted into a model readable by Three.js (using the bundled Blender exporter), and the YAML data is compiled into a few JSON files.
The viewer itself is a single HTML page, using Three.js for the 3D engine and custom code to load, show and control the models themselves. The custom code is written in CoffeeScript, both for brevity and as an experiment to see how well it works for this kind of project.
By default, the viewer will use Canvas to draw the 3D model - this has the disadvantage of getting depth ordering wrong on some components, but has the advantage of working everywhere, having better antialiasing, and often being smoother than WebGL. WebGL-enabled browsers can also toggle on a WebGL mode.
Most of the stations are modelled from a combination of memory and a diagram or two I've managed to find on the internet, though some are modelled completely from memory (often with a walkaround or two of the station if I've not been there in a while).
This means that the models aren't totally accurate, but they do represent the right shape and layering of the stations - the point of the project is to illustrate the layout, not to have an architecturally-correct model (that's another project, perhaps), so some features have been contorted a bit so they're clearer, or easier to model. :ref:test
If you're interested in helping out with the project, get in touch - I'd love to have some help so we can get more models and features done. Particular things I'd be interested in are:
- Getting hold of good station diagrams - this may just be a case of visiting some planning archives or filing a FOI request.
- People with diagrams/knowledge of, or access to, non-public areas - I'd love to include layers which show plant rooms, staff access, etc., as they're truly unknown by most people.
- Help modelling in Blender - it can be a long process for the bigger stations.
- 3D mapping equipment/expertise (especially SLAM with cheap hardware, e.g. Kinect) - for a possible future full-3D version, if it's possible to get a license to image/map the stations.
The code and models are available on GitHub.