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.

