TITLE: "Near Miss"
NAME: Larry Gritz
COUNTRY: USA
EMAIL: lg@pixar.com
WEBPAGE: http://www.seas.gwu.edu/student/gritz/
TOPIC: Flight
COPYRIGHT: I SUBMIT TO THE STANDARD RAYTRACING COMPETITION COPYRIGHT.
JPGFILE: nearmiss.jpg
RENDERER USED: Blue Moon Rendering Tools (BMRT)
TOOLS USED: BMRT, GIMP, "AFS" (custom animation system)
RENDER TIME: about 4 hours
HARDWARE USED: Intel 486 running Linux, and SGI
IMAGE DESCRIPTION: F-18 just missed by missile

DESCRIPTION OF HOW THIS IMAGE WAS CREATED: 



This image took me about 1 1/2 days (part time) to assemble.  I didn't
use any tools there aren't available free on the net, or that I didn't
write myself.

I did the modeling both on an SGI and on my home machine, an Intel
486/66 running Linux.  I didn't use any tools that weren't available
on both platforms.  I could've done the whole thing on my Linux box,
but I just used whichever machine was in front of me when I had the
free time to work on this scene.


I followed the usual production pipeline process in creating this
image:

1. Storyboard -- 

After thinking of a little scene (aircraft veering away from a near
hit by a missile), I created a storyboard frame.  Yes, I actually drew
a sketch of the scene before going anywhere near the computer.


2. Modeling -- 

I started poking around the Avalon site http://www.viewpoint.com/
looking for aircraft models.  I found a F-18 model in 3ds format.
Though I would rather have had a NURBS model, I settled for the
polygonal one, figuring that for this one still frame, it would be
good enough.  I used Alex Segal's 3ds2rib converter
(http://mts.bashkiria.su/rmc/3ds2rib.html), which produced a bunch of
RIB files.  I poked through the RIB files, figuring out which
sub-objects were which parts of the aircraft.  The model was atrocious
-- it was bad enough that it was polygonal, but the organization of
sub-objects made it impossible to group for articulation.  But I
wasn't really making an animation, just a still frame, so it wasn't so
bad that I had to treat the entire aircraft as one rigid object.

The background sky was a cyclorama -- just a big sphere surrounding
the airplane and other objects.

The clouds were squashed ellilpsoids.

The fast-moving missile was modeled using a cylinder for the body, a
paraboloid for the nose, and four bilinear patches for fins.  I made a
cone with a fire shader for the exhaust.  The smoke trail was modeled
by randomly splatting spheres along a cubic bezier spline representing
the path of the missile.

To position objects, model the objects other than the jets, do the
lighting, etc., I used "AFS" - Animation Framework System -- a custom
animation system that I wrote as a grad student.  It's not a commercial
or otherwise available system, just something I hacked together over
the years.


3. Layout -- 

I sketched (on paper!) orthographic views of the scene, to plan where
I wanted the objects and camera.  Then I placed the camera, aircraft,
and clouds by hand, tweaking their orientations until I had the shot
that I wanted.


4. Master lighting -- 

I just made the plane out of plastic to start, so that I could place
the main lights.  I wanted a sunset scene, so I placed a bright, warm,
key light behind and to the left of the aircraft, out of view of the
camera.  Four more softer, cooler, blue fill lights surrounded the
aircraft, giving the shadowed region the appearance of indirect
lighting from the sky.  I also made a rather dim, brownish light
coming from below the aircraft, to simulate bounce light from the
ground.  I did not use an ambient light.  Remember: Ambient lights
are bad!


5. Shading -- 

I wrote several custom shaders for this scene.  Some people don't
understand why programmable shading is important.  Let me explain:

Would you use a renderer that only let you use 10 (or 20 or 100)
geometric models that came built into the renderer?  Of course not!
You *must* be able to construct complex, elaborate geometric models,
even if they are used just for one shot, right?  Then why would you
settle for any less flexibility for shading?

I wrote a shader for the body of the aircraft that simulates dull
metal broken up into panels, and a glass-like shader for the canopy.

I swiped a nice cloud shader from Sy Lee
(http://www.seas.gwu.edu/seas/eecs/Research/Graphics/ProcTexCourse/ass3.html)
and wrote a childishly simple shader for the background sky.  I modified
this shader in a few ways to get the shader I used for the missile exhaust.
I wrote a quick hack shader for the flame.

I can put the shaders I wrote up on my web site if people really
want them.


6. Lighting --

Once the shaders were written and applied to the model, I did a test
render, and decided the master lighting was pretty good.  I did some
minor adjustments to the intensities and colors of the lights, and 
declared lighting done.


7. Rendering --

I rendered at 800x600 resolution, 16 samples per pixel.  Rendering
took about 4 hours on my SGI.  I've clocked this machine as being
significantly slower than a 180 MHz Pentium Pro, so I think this is
very much in the practical range for machines people are likely to
have at home.

Rendering was done using the Blue Moon Rendering Tools (BMRT), which
is a RenderMan-compliant ray tracer.  Its home page is:
http://www.seas.gwu.edu/student/gritz/bmrt.html


8. Postprocessing --

The only postprocessing done on this image was to add my name and
site address to the bottom, which I did with "The GIMP"
(http://www.xcf.berkeley.edu/~gimp/).

I gamma corrected the image to 1.5, which should look approximately
correct on most PC monitors.


9. Notes --

Note the motion blur, subtle lighting, and the shaders for the clouds,
smoke trail, and the metal panel shader on the plane.