TITLE: Senior Software Engineer NAME: John Aughey COUNTRY: United States EMAIL: jha@aughey.com TOPIC: Metamorphosis COPYRIGHT: I SUBMIT TO THE STANDARD RAYTRACING COMPETITION COPYRIGHT. MPGFILE: snake.mpg ZIPFILE: snake.zip RENDERER USED: Povray TOOLS USED: Self written Rubik's Snake animator CREATION TIME: 36 hours HARDWARE USED: 300Mhz Pentium II ANIMATION DESCRIPTION: This animation shows a Rubik's Snake bending into 3 different shapes; a propeller, a dog, and a ball. DESCRIPTION OF HOW THIS IMAGE WAS CREATED: I remember playing with the Rubik's Snake for hours on end as a child. With a little work, I thought, I could write a program which "morphs" the snake into different forms. I wrote the program in Perl and used the OpenGL and Tk modules for the user interface. The Spline module is used for interpolating camera positions. This program calculates the snake position according to the positions of various slider bars. As you move these slider bars, you can watch the snake twist into different forms in the OpenGL window. You have full control over the position and orientation of both the snake and the camera. This program can also read a file which describes how to twist and turn the snake and position the camera to create an animation. You can view the animation in real time in the OpenGL window and tweek positions as you see fit. Once you're satisfied with the animation, the program can write out a Povray file for each frame. Povray uses this file to render a photorealistic picture. The snake itself is made up of 24 individual links. Each link consists of 9 cylinders, 6 spheres, and 5 polygons. The cylinders and spheres give the link a beveled edge with rounded corners. The polygons meet the cylinders at the tangent points so each link of the snake appears as one solid object. Each link is positioned relative to its neighbor, so if one joint twists, all the links after it will rotate as well. In OpenGL this is accomplished using the accumulating transformation matricies; in Povray it's accomplished using unions. One interesting note: I don't own a Rubik's snake. I havn't even picked one up for about 8 years. I was able to create the shapes by moving sliders bars in my snake animator program and watching the snake bend and twist in the OpenGL window. I've include all of my source code with my submission. I decided to include the code at the last minute, so it isn't documented very well. It requires the OpenGL, Tk, and Spline modules which can be found at http://www.perl.com/CPAN/. If you don't have an SGI machine, you can use the Mesa library as a substitute for OpenGL. The Mesa library can be found at http://www.ssec.wisc.edu/~brianp/Mesa.html.