TITLE: Boxer Solves a Problem NAME: John VanSickle COUNTRY: US of A EMAIL: vansickl@erols.com WEBPAGE: http://www.erols.com/vansickl/povray.htm TOPIC: Creatures COPYRIGHT: I SUBMIT TO THE STANDARD RAYTRACING COMPETITION COPYRIGHT. MPGFILE: boxer.mpg ZIPFILE: boxer.zip RENDERER USED: POV-Ray 3.1e for both Win9x and DOS, 3.1g for Win9x. TOOLS USED: text editor, cmpeg, pencils, paper, terrain maker CREATION TIME: I didn't keep track of the rendering time. VIEWING RECOMMENDATION: Full color, 24 frames per second. ANIMATION DESCRIPTION: Boxer solves a problem that came up during my entry in the last round. DESCRIPTION OF HOW THIS ANIMATION WAS CREATED: The camera shaking in the title shot is done by using a decaying sine wave as the offset value for the camera and the viewpoint. Because the frequency of the camera jarring is exactly double the frame rate, I used oversampling to achieve the motion blur. The frames were then averaged by using the oversampled frames as image_maps, and were traced by a separate scene file. The number of samples was varied depending on need; most were sampled ten times, and others were sampled up to 100 times. The Greb (the ant-like people) are unions of 21 meshes, ranging from 256 triangles to 2048 triangles each, for a total of >30K triangles in each Greb. 19 of the meshes are generated done in a two-step process: 1. I modeled the parts of the Grebs with sweeps of bicubic patches. The path of the sweeps, and the sweep shape and angle, were hand-generated. The mandibles are just two bicubic patches (each), one for the top and the other for the bottom. 2. The control points for the bicubic patches generated in the first step were fed to a macro that creates the smooth triangles, exactly duplicating the patch, but with explicit triangles that could be incorporated into a mesh object. Since all of the Greb parts are used multiple times, this saved 4.5 megs of memory for each Greb (I'm only running with 32Megs of ram at the moment, so this is kinda important). The eyes were generated by my rock maker file, with smoothing and roughness off. The Greb parts were assembled and animated, with help from the FindKnee(), Transition(), and Matrix() macros from my Thoroughly Useful Macros file. I also developed a macro that simulates the movement of one foot walking along a track; it's not idiot-proof enough to go into the Thoroughly Useful Macro file yet. The file that pieces the Greb together bases the posing on the location of the feet, the tips of the claws, the point at which the Greb is looking, and a small offset value used to move the body while the feet are motionless, to make the Greb look alive when it's not walking; everything else is calculated based on these. The subtitling is done by calculating the up, right, and direction vectors based on where I'd decided to put the camera. The text is then placed as if the camera were at the origin and pointed in the +z direction, and then the text is moved into place using the Matrix() macro. All of my Rusty animations have used subtitles in this fashion. The wipe from the first shot to the second was done by generating the frames for both shots. I used them as image_maps for a patterned pigment, which I traced with a bit of animation in the pigment map. My second and third Rusty animations also used this technique. The laser gun, top door, and bumper sticker were not part of Boxer during the last round, although they would have been if I hadn't run out of time. I might patch the two animations together into one, but then I'll need a place to post it. The files in the archive are: blur.pov: This file takes a set of rendered frames and averages them together; this is done to create the motion blur in the opening shot. boxer.inc: The file that does most of Boxer. boxer_l.inc: This file does Boxer's LED display. bsod.gif: This GIF contains the image of the Blue Screen of Death that is briefly seen near the end of the animation. The actual text can be read by viewing this file. bsp.pov: This is the main file; it calls the .inc files that define macros, textures, and then calls the .inc files that define the individual shots. bsp_s*.inc: These ten set up the shots. bsp_t*.inc: These files throw in the simple fades to/from black, and place the subtitling in as well. bsp_text.inc: Defines most of the textures used in the animation. bugbot.inc: This defines the small robot seen in the opening shot; it is also the robot that harbors the grudge against Rusty in my January 1999 round. fade.pov: This file does the wipe from the first shot to the second. First I render frames from both shots for the overlapped time period, and then I feed the resulting frames to this scene. Note that the render to merge the two sequences should not be anti-aliased. flatbug.inc: This is what you get when you step on a bugbot. greb.inc: This is the main file for the Grebs. greb_*.inc: These files make the individual pieces of the Greb. guards.inc: This sets up the Grebs for the second shot. gulch.inc: This does most of the work for creating Greb's Gulch. idol.inc: Creates the foul god worshipped by the Greb. land3.inc: The hills that form the border of Greb's Gulch. macs.inc: This is my Thoroughly Useful Macros file, with a few other macros thrown in. meshmacu.inc: Contains a bunch of mesh macros. penrose.inc: Sets up the Penrose pattern you see in the opening shot. penshape.inc: Does the actual inflation of the Penrose tiling. I found a way to break down the tiles into triangles and inflate the triangles, and then color them to give the overall pattern I want. port.inc: This makes the interdimensional portal that Rusty & Boxer use to leave. redo.ini: This is basically bsp.pov, but slightly altered to generate the sampled frames for the motion blur in the opening shot. rusty.inc: The main file for the famous Rusty. rusty_l.inc: Enables Rusty to talk. spline.inc: My spline macros. sticker.gif: If you want to know what Boxer's bumper sticker says, look here. I looked for an elegant way of making it legible in the animation, but gave up after several tries. voronoi.inc: Based on the source code for the crackle texture, this file generates a slab made up of irregular blocks. walk.inc: The Walk() macro which makes the Grebs go. OTHER NOTES: During the test rendering, the MS-DOS version suddenly started bombing at about 400f the way through rendering. I have since migrated over to the Windoze version. I originally had plans to make the hills of Grebs' Gulch more natural-looking, but my time was consumed with more important things. If you have any other questions about things, e-mail me directly, or leave comments on the comments page.