camera magna is an interactive virtual reality data visualization that lets users explore our planet through photography.

camera magna is an immersive data visualization that presents publicly available photos within a geographical context. Every colored dot on the earth represents a geotagged photo from the 500px photo sharing community, while its color classifies it by subject matter. This way the user immediately sees patterns in the overall spectrum before exploring the individual categories.


University project, fourth semester

Tools used

node.js, Unity Engine, SteamVR, C#, Python, HTC Vive, 500px API, Git


The internet is filled with photos from all over the world. Professionals as well as amateurs share their photos everyday and contribute to the ever-growing global collection of publicly available media. About 50 million photos are being uploaded to Instagram daily. With this in mind I asked myself the question: "Is it possible to create a map of the world with only publicly available photos?".

Visualization displaying the amount of photos on flickr by opacity

I explored different visualization methods and began with a two-dimensional Mercator projection (shown above) where I split the earth in 64 800 segments that have a darker gray hue when more photos were taken in those areas.

Since I wanted to create a more engaging and immersive experience I worked towards designing a three-dimensional visualization. In one iteration I created an extruded heatmap. If many photos were taken in one segment, the cylinder was red and long. Less photos resulted in flatter cylinders, colored blue. This visualization was built in Unity with the SteamVR SDK intended for the HTC Vive VR Head-Mounted-Display.

3D visualization with an extruded heatmap on a sphere
Photo by NASA on Unsplash
Final visualization

Inspired by photos of the earth at night from NASA I decided to create a higher fidelity visualization and immitate light pollution with the geographical locations of the photos. I downloaded a total of over 3.2 million photos from the 500px community and generated a 10K texture of the earth (as a Mercator projection) by using each photo's exact location.

Final visualization texture. Each photo is represented by a low opacity white dot.

Since I wanted to show more than just a static visualization I used HTC Vive controllers to make camera magna interactive. The user is able to cycle between all categories by making a rotating gesture on the touchpad similar to the one of the old iPod Classic.

Aiming at the world with the controller brings up a laser beam which selects a point on the earth. Pressing the trigger button shows a collage with all photos of the current category that were taken at this location. The other controller displayed statistics like the average shutter speed, aperture and focal length.

HTC Vive Controller
Color coding

Each photo category has its own color and texture. When launching the application the user starts off with all categories shown simultaneously to visualize the huge amount of photos taken all over the world. When the user selects a specific category, only that category's photos and color are displayed.


> 3.2 million
photos downloaded
> 200 quadrillion
pixels processed each iteration
~ 3 945
lines of code (total)
Eager to see more?
Check out my other projects!