06 August 2008

Radiohead rules

Like many other people, I saw that Radiohead had created an interesting music video for House of Cards with all sorts of visualizations. From what I read, they had sampled visual data using Lidar. Substantial portions of the data used in constructing the video are available (as is the music) to the general public. The House of Cards group on YouTube showcases how a number of people have re-run the data through various visual engines.

As you may notice, most of the videos on YouTube use some form of 3D engine to visualize the data. The data is structured fairly simply in the CSV files with x, y, and z coordinates, as well as an intensity level for each point.

Problem: I'm not adept (at all) with anything 3D based. So, I decided to see if I could kludge my way into trying to create a visualization of my own using what I know. Er.. All I know is Java and Graphics2D.

For rendering data, I just used a simple linear scale to position the x and y points. Each point was merely a filled circle. I plotted all points in white. The intensity value on each point drove the alpha values on each point. Lastly, I used the z value to control the size of the point- closer z values got larger points. Here's what I got for starters:

Some tuning in point size, and changes in colors to prevent it from looking too scary:

Anyone know an easy way to sequence some 1000 images into a decent video? I can't seem to get iMovie to have a delay between images of less than .3s, and the actual frames need to be rendered out at 30 frames per second.

*Follow up:* Meant the attach a larger copy that shows the patterns generated by the circle size and alpha variations:


  1. The Quicktime API should allow you to synthesize a movie frame-by-frame in the way you desire. Here is some example code that may may be suitable inspiration. I haven't done this myself, but it looks like the FrameCompressor class, and the FrameMovieExporter subclass, use the Quicktime API in the way you might need.

    The FrameReader class, in this example, is taking in data by grabbing frames from an OpenGL context. So you would want to replace this with something that loads your images off of disk instead.

  2. Danke. Looks like this evening will be quicktime (sounds perverted, but it isn't). Will revert back with findings (or shame) later.

  3. I don't want to dissuade you from a programmatic solution, but you may also want to search macupdate.com for apps related to quicktime, stop motion, or other multimedia related matters.