Renders which show the large-scale structure of the Universe are common enough. To find the distances to galaxies on the very largest scales isn't all that difficult, we can use redshift as a decent proxy for this : sure there are caveats to this, but on the largest scales these just aren't important. What I wanted to do was something that's not done quite so frequently. I wanted a 3D-flythrough of the nearby Universe using the actual images of each galaxy shown at its correct location and scaled appropriately to its real size.
For this I used the ALFALFA catalogues. This is an HI survey of about half the sky visible to Arecibo out to distances of about 280 Mpc or so. They released their data in stages : first 40%, then 70%, and finally the 100% complete catalogue of over 30,000 objects. Since there were quite long gaps between data releases, I made a different video for each stage.
Of course a project like this requires almost full automation. Downloading images from the SDSS is straightforward, using the Navigate tool you can generate a link to the image file using just the RA and Dec. The difficult part is the size. The SDSS provides an estimate of the size of the galaxy called the Petrosian radius, and though frankly this isn't very good for visualisation purposes it's certainly better than nothing. To add this to the ALFALFA catalogue, I used an SQL query you can find here. This isn't ideal by any means. Anyone trying to do this for themselves would be well advised to think more carefully about constructing the proper query. And we've also found in a recent paper that there are better ways to convert Petrosian to the more visually-friendly Holmberg radius; I was lazy so all I did was scale up the radii by some factor to better ensure I captured the whole galaxies. The problem with Petrosian is that it doesn't work well at all if the galaxy has most of its light concentrated in the very centre.
Anyway, to actually download the images after constructing the list, originally I used a third-party program. Later I realised there was no need to do this at all because it's trivial to do this in Python using : urllib.request.urlretrieve(URL, FILENAME). If you prefer, here's a more developed version of the code. Finally I wrote a simple script to import the galaxies as textured image planes into Blender.
Here's the first video using the 40% catalogue of 11,710 galaxies.
I also made a 3D anaglyph version because getting audiences to wear silly 3D glasses is a super cool thing to do.
Then the second video, the intermediate version using the 70% catalogue, which was much the same as above but with more galaxies. Note that I'm simplifying a bit because for the 40% version I used Blender 2.49, but here I'm only giving the 2.7X scripts as there doesn't seem any value in the 2.4 versions anymore. There's a 3D version of this too, but in side-by-side format because this was made during the short-lived era of 3D televisions.
Finally the third video, the 100% catalogue version with 30,087 galaxies. For this I made again two videos. The first is purely for presentation purposes and is just a very short standard flythrough :
The second is the most challenging render I've ever had to deal with : a 360 degree 3D format intended for virtual reality displays (but also fully viewable on conventional 2D screens, use the navigation control at the top to change the orientation of the view). Just getting this to render is a saga in itself, which you can read about in deathly detail here.