The holiday season here on the Moon means that its time to get out the ray tracer and create a holiday image. This year Brenda designed our card, but I just couldn't resist firing up the tracer again.
This year's image is a Christmas tree reflecting the mantle, candle and slow globe from last year's scene in a shiny ornament. Just like last year, there is no physical scene like the one depicted. It was all computer-generated. No photos were composed or used in making the image at all.
Much of the background info is the same as last year. If you want to know what a raytracer is and stuff like that, check that page out first. You can make out the scene from last year pretty well in one of the larger images.
I hope that no one takes offense from my choice of subject matter, but Christmas images like trees and ornaments are interesting to trace - strange shapes and interesting optical properties.
The biggest part of this year's image was creating the relatively realistic tree. It's a tricky business to create a model that looks like a tree with all its kinks and small wobbles that also has sufficient detail on it to be drawn (and reflected and refracted) by the raytracer. The tree in the picture (not all of which is visible in the main image) consists of more than 9,800 cones and 5,500 spheres arranged to look like a pine tree, with bark and needles mapped onto the surfaces. Each branch is a set of thinning cones chopped off at the top, the base of one connected to the top of the other. There is a sphere at each connection to avoid cracks. On branch segments with needles, there are 2 more cones with the needles texture mapped on. (Don't miss the ridges on the backs of the needles; sadly I didn't get them to come to points...) This enormous (well, enormous for my machine) model was generated by a 325-line perl script. I'm very proud of the tree, and I included another image below to show more of it.
Another issue was that I've upgraded from POV 3.0, which I used last year, to POV 3.1 which uses a different syntax and model for things like refraction and point systems. This means that the elements from last year's scene had to be ported to the new syntax. The port isn't pixel-wise compatible, but I think it still looks good. I show a copy of the old image regenerated with the new raytracer below, too.
Timings
In order to render the image, the computer here at the base sat and solved optics problems for more than 1 and a half hours. If you're calibrating, it's a Pentium II 350 Mhz, 64 MB RAM, and was running FreeBSD 3.3 at the time.
Last year's card was erroneously described as being run on the same hardware, in fact, due to a hardware configuration error, the processor was only clocked at 233 MHz. Last year's page has been corrected. A more complicated image based on data very similar to last year's care rendered in 2 hours 46 minutes this year, on the same hardware but a more recent version of POV - almost half the time!
This year's scene files were sufficiently complex that they were computer-generated themselves. Yes, I wrote programs to draw pictures - how geeky is that? In particular, the tree is about 6 megabytes of scene description generated by a 325-line perl script. Other perl scripts draw the bulbs (OK, they generate the calls to the POV macros that draw the bulbs - it's geek-o-riffic!). The whole kit'n'caboodle is available as a zip file or a gnu zipped tar file, again
It turns out that the level of tree detail wasn't a problem for POV, but for the physical machine. The model required about 61 Megabytes to hold in memory at once, and therefore my 64 MB machine was paging considerably. I did a couple more detailed images with larger trees, but ran out of memory and swap space. I'll have to buy more memory for next year.
Check this out
Just like last year I made a couple subsidiary images just because I had my model all dressed up. All the images are available as jpegs and png files. The jpegs are smaller, but some show visible artifacts. The png files run about 0.5 Megabyte, so it may take a while to download them.
Here's a picture of the whole tree from the top of the globe on the mantle. From a distance the tree looks even more realistic, if a little thin. More memory will solve that problem. This image took about an hour and a quarter to render.
Here's last year's image redrawn. I redrew it because I had to port the scene files to POV 3.1 for the new image and wanted to see if there were differences. There are. The candle flames look different, and I was hoping that I'd be able to see the tree reflected in the holders or the globe. I think that the angle's wrong on the globe, and the holders distort too much. At any rate here's an image very similar to last year's card.
Thanks for taking the time to check out the images. If you have any questions or comments, drop me an email at the address below.