TITLE: Faces NAME: Aaron Gage COUNTRY: USA EMAIL: agage@mines.edu WEBPAGE: http://www.mines.edu/students/a/agage TOPIC: Metamorphosis COPYRIGHT: I SUBMIT TO THE STANDARD RAYTRACING COMPETITION COPYRIGHT. MPGFILE: amgface.mpg ZIPFILE: amgface.zip RENDERER USED: POVray 3.0 for Linux TOOLS USED: gcc compiler for wave mesh creator and pre-frame-command script xv to grab part of a text window for the credits CREATION TIME: Scene creation and C programming took about 3-4 days worth of free time. RENDER TIME: 66h 12m 5s for the frames which ended up in the animation HARDWARE USED: i486DX2/66 with 32M RAM, running Linux 2.0.28 ANIMATION DESCRIPTION: Sometimes we see ourselves as who we were, not who we are. As the waves in a pool distort the reflection, the face reflected back changes from young to old. Well, at least it was supposed to. The reflection doesn't change nearly as much as intended. DESCRIPTION OF HOW THIS IMAGE WAS CREATED: I am beginning to wish that I had either started this animation when the round began, or that I had chosen some other image to reflect off of the pool. I have a particular weakness when it comes to creating human shapes, especially against a deadline. If nothing else, the technical steps I made for this image make up for the lack of pretty pictures. The face was the easiest feature, basically constructed out of blobs by hand. The actual face, when viewed directly, has a very prominent nose and mouth, but the reflection has faded those almost entirely out (though I did play with the ambient values and reflection levels). The hair was done with a .inc file that I created a while back for just that purpose; its biggest drawbacks are that each strand must be placed individually and that they consist of a lot of primitives (like 60). I includeed hair.inc in my .zip file. The surface of the pool is the part of the animation that I actually like. For the first few frames, it is just a plane, because parsing and rendering a plane is pretty fast. After those frames, I had a script run which would generate a time-based triangle mesh of the pool, positioned so that it would be indistinguishable from the plane until the waves began to advance. I wrote the program that created and propagated the waves for this animation, and may improve it to handle wave reflections (since it manages proper constructive/destructive wave interference for any number of sources already). Deriving the algorithm for the code was easy; getting POV to interpret it correctly was not (I had trouble with the normal vectors until I normalized them before writing them out; even so, it is a little rough in some places). It would be nice if POVray had a binary file format *hint hint* since my text file for the mesh varies around 14 megs. The mesh consists of 80K triangles or so, and all parameters can be adjusted easily in the C file. I included that code in my .zip file, under the GPL. I had a bit of trouble getting the reflection to change over time -- although I changed the color and ambient value on the face dramatically, the reflection didn't budge until I started changing the surface color of the pool and its filtering. Unfortunately, that makes things look rather foggy instead, which isn't much better. Nothing else I could do with only a few days left to render. I'm not as satisfied with the aging effects as I could be, and another drop might have prolonged the waves enough to hide the change better, but there is not time to redo it. The simple fact that the last frames fade into white made my credits frames much easier to do :) The files were all raytraced with POVray, converted to PPM with tgatoppm (from the netpbm library) and converted to MPEG with mpeg_encode. Best framerate is probably 24; I had intended 20, but that is not given under the MPEG-1 standard. I would have made it 30 fps if I had more than a week to render the 120 frames. As it was, this was my first animation. I used POVray's internal animation cycle, but had to restart it a few times due to unintentional interruptions and two mistakes that ruined 59 frames. Hopefully, this experience will show me what kind of framerate, resolution, and level of AA produce files closest to the regulation limit of 3 megs while not taking too long to render. Things I could have done better: o Use more than 100f the allowed space for the animation o Make the change over time more dramatic o Have the waves go further before they die off o Eliminate the artifact (dark band) to the upper right of the images VIEWING RECOMMENDATIONS: 20 or 24 frames per second, if possible