_________________________ESDEMO by ERIC SCHMIDT__________October.1.1996______ _____________________________________________________________________________ INTRODUCTION: The purpose of this demo is to present a cross-section of my graphics and animation programming skills. I have applied many of today's standard rendering techniques as well as my artistic ability and design. The graphics library used to create this demo was hand crafted from scratch over the months of July-September 1996 using C/C++. REQUIREMENTS: * Pentium-586 133MHz or better recommended. A 486 will do. * VGA mode 0013h (320x200x256) compatibility and VESA VBE v1.2 mode 0112h (640x480x16.7M) compatibility * 4MB of free RAM * 3MB of free hard disk space * MS-DOS 6.2 or higher or Windows95 * DPMI host (ESDEMO.EXE will demonstrate optimal performance under MS-DOS. If you do not have a DPMI server installed in DOS, the demo will function under Windows95 which has built-in DPMI. ESDEMO.PIF is provided to force a full screen upon execution in Windows95.) TO RUN: ESCHMIDT.ZIP = { ESDEMO.EXE , ESDEMO.PIF , ESDEMO.DAT , README.TXT(this file) } Unzip the contents of ESCHMIDT.ZIP into a directory on a hard disk. Then simply enter ESDEMO at the DOS prompt while inside that directory -or- double click the ESDEMO application icon in Windows95. TECHNIQUES USED IN THE DEMO: ANIMATED PHONG-SHADED TEXTURE-MAPPED TORUS The first phase of the demo features an animated torus. As with all of the animation in this demo, Hermite cubic polynomials are used for interpolating object location and B-spline-interpolated quaternion numbers are used for object rotation. The torus is more than just texture mapped -- it is 'light sourced' using the Phong reflectance model with Phong interpolation. Since this is done with only 256 colors, special care is needed to construct a suitable color-map. Here, a single "Warn's spotlight" light source is used. The actual texture used here is derived from the following... 2D GRAPHIC ART, HAND-DRAWN PIXEL BY PIXEL A standard 'paint' program was used to draw this image into the computer. It was from a drawing on textured board that I did in 1993. No Scanners were used! The process of converting my art to a pixmap took approximately 40 hours of mouse clicking. ANIMATED TRILINEAR-INTERPOLATED PERSPECTIVE-CORRECTED MIP-MAPPED CUBE The above mentioned 24-bit pixmap is decomposed by the demo and converted into an 8-bit texture with a suitable 256-colormap. Prefiltered mip mapping arrays are then calculated. The cube is made up of six "large" polygons. At any given time, at least three of them are 'back facing' and are therefore ignored by the scanning routine. The front facing polygons are scanned using trilinear interpolated mip mapping with perspective correction. My perspective correcting routine uses hyperbolic interpolation to display large texture-mapped polygons accurately. (i.e. No 'fake-it' methods are used.) RAY-TRACED SCENE NUMBER ONE The 24-bit image makes another appearance -- This time it tiles the XY-plane. Actually, 24-bit trilinear-interpolated mip map arrays of the image were used to reduce the aliasing that can arise at the horizon. Another technique to reduce aliasing in general was used: super-sampling. For each screen pixel, 16 distributed rays were shot into the scene from the center of projection and their average returned intensity was computed. For each ray shot into the scene, if it makes contact with an object, a reflected ray is computed and then recursively traced. "Shadow feelers" are also shot out from an intersection point to each of the two "Warn's spotlights" to see if the intersection point lies in some object's shadow. If the object intersected is transparent, a transmitted ray is calculated and recursively traced as well. For the transparent cube in the scene, I used a refractive index of 1.15. ANIMATED GOURAUD-SHADED TORUS AND TWIST The torus and an interesting shape I call the 'twist' are animated and rendered using the Phong reflectance model with Gouraud interpolation. There are two "Warn's spotlight" light sources in this animation. Z-buffering is demonstrated here also. RAY-TRACED SCENE NUMBER TWO The purpose of this scene is to demonstrate transparency in objects that are more complex than the cube. Both the torus and the twist were given refractive indexes of 1.15. The surface of the glass twist is made up of 360 distinct triangles. _____________________________________________________________________________ _____________________________________________________________________________ Eric Schmidt 18571 Westbrook Drive Livonia, Michigan 48152 (810) 615 0030 eschmidt@oeonline.com _____________________________________________________________________________ _____________________________________________________________________________