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.