F.I. Parke, "Computer Generated Animation of Faces,"
Transcription
F.I. Parke, "Computer Generated Animation of Faces,"
Computer Generated Animation of Faces Frederick I. Parke, University of Utah This paper d e s c r i b e s the representation, a n i m a t i o n and data c o l l e c t i o n techniques that have been used to produce "realistic" computer g e n e r a t e d half-tone animated sequences of a human face changing expression. It was d e t e r m i n e d that a p p r o x i m a t i n g the surface of a face w i t h a p o l y g o n a l skin c o n t a i n i n g a p p r o x i m a t e l y 250 polygons def i n e d by about 400 vertices is s u f f i c i e n t to achieve a realistic face. A n i m a t i o n was a c c o m p l i s h e d using a cosine i n t e r p o l a t i o n scheme to fill in the intermediate frames between expressions. This approach is good enough to produce realistic facial motion. The t h r e e - d i m e n s i o n a l data used to describe the expressions of the face was obtained p h o t o g r a m m e t r i c a l l y using pairs of photographs. also d e s c r i b e s the m e t h o d used to collect the data for the faces. These t e c h n i q u e s could be used to animate other flexible surfaces. R E P R E S E N T A T I O N OF THE FACE The face is a yery c o m p l e x threed i m e n s i o n a l surface. This surface is flexible. It u s u a l l y contains creases, and it has color variation. What is the b e s t way to r e p r e s e n t such a surface that allows both a n i m a t i o n and h a l f - t o n e r e n d e r i n g ? One p o s s i b i l i t y w o u l d be to find an analytic surface or c o l l e c t i o n of a n a l y t i c surface patches (i) to a p p r o x i m a t e the surface of the face. A s s u m i n g this were feasible, there remains the p r o b l e m of animating this surface or c o l l e c t i o n of patches. A g a i n a s s u m i n g that a p p r o p r i a t e a n i m a t i o n techniques were a v a i l a b l e for such surfaces, there still remains the p r o b l e m of p r o d u c i n g h a l f - t o n e r e n d e r i n g s of the surfaces. Hidden surface and halftone algorithms exist for quadric surfaces (2,3) but they tend to be quite expensive. One can imagine similar a l g o r i t h m s for surfaces of higher degree, but w o u l d expect them to increase r a p i d l y in expense as the degree of the surface increased. For this reason, w h e n h a l f - t o n e renderings are desired, surfaces of high degree are usually a p p r o x i m a t e d by a skin of polygons. In order to a p p r o x i m a t e the face w i t h analytic patches, one w o u l d expect these patches to be at least quadric, and probe ably of higher degree. The a p p r o a c h of a p p r o x i m a t i n g the face w i t h analytic surfaces leads to a p p r o x i m a t i n g the approximate surfaces with polygons. This seems a rather complex and r o u n d a b o u t approach. The a p p r o a c h taken in this paper is one first used by Henri G o u r a u d (4). His a p p r o a c h was to d i r e c t l y a p p r o x i m a t e the surface of the face w i t h a n o n - a n a l y t i c skin of polygons. This skin was c o n s t r u c t ed by sampling the surface of the face at a number of points and c o n n e c t i n g these points to form a skin o f polygons. In order to produce a h a l f - t o n e rendering of objects in a t h r e e - d i m e n s i o n a l space several p r o b l e m s m u s t be solved. WORDS AND PHRASES: c o m p u t e r graphics, half-tone rendering, smooth shading, computer animation, flexible surfaces, polygonal surfaces, facial topology, cosine interpolation, £ h r e e - d i m e n s i o n a l data acquisition. CR CATEGORIES: 8.2, 3.41, 4.41, 6.35 KEY INTRODUCTION The human face is a challenge for computer a n i m a t i o n for at least two reasons. F i r s t the face is not a rigid structure but is a complex flexible surface. How is the m o t i o n of such a surface specified? Secondly faces are very familiar to us, we have a well d e v e l o p e d sense of w h a t expressions and m o t i o n s are natural for a face. We notice small d e v i a t i o n s from our concept of how a face should appear. This paper d e s c r i b e s a fairly simple way of r e p r e s e n t i n g the face and an animation technique that allows the p r o d u c t i o n of r e a l i s t i c h a l f - t o n e a n i m a t e d sequences of the face c h a n g i n g expression. The p a p e r This r e s e a r c h was supported in part by the U n i v e r s i t y of Utah C o m p u t e r Science D i v i s i o n and by the A d v a n c e d R e s e a r c h Projects A g e n c y of the D e p a r t m e n t of Defense, m o n i t o r e d by Rome Air D e v e l o p m e n t Center, Griffis Air Force Base, New York 13440, under contract F 3 0 6 0 2 - 7 0 - C - 0 3 0 0 . 451 The first of these p r o b l e m s is u s u a l l y referred to as clipping. This is the problem of d e t e r m i n i n g if all or part of an o b j e c t is w i t h i n a v i e w i n g space. The v i e w i n g space is a p y r a m i d d e f i n e d by the p o s i t i o n of the view, the d i r e c t i o n the v i e w e r is looking and his v i e w i n g angle. An example of a v i e w i n g space w o u l d be that part of the u n i v e r s e v i s i b l e through a window, a s s u m i n g that all objects except the w i n d o w frame were t r a n s p a r e n t and could not o c c l u d e other objects. The second p r o b l e m is the d e t e c t i o n of h i d d e n surfaces. In other words, w h i c h surfaces are in front of other surfaces w h e n seen from a given position. The last p r o b l e m is one of d e t e r m i n i n g the shading of the v i s i b l e surfaces and p r o d u c i n g the shaded image on some o u t p u t device, n o r m a l l y a CRT. The shading u s u a l l y d e p e n d s on the o r i e n t a t i o n of the surface w i t h r e s p e c t to the viewer and the light source. A p p r o x i m a t i o n w i t h p o l y g o n s has several advantages. For p o l y g o n a l surfaces, the p r o b l e m s listed above have been solved by a n u m b e r of a l g o r i t h m s (5-11). These a l g o r i t h m s are fast and i n e x p e n s i v e w h e n c o m p a r e d to a l g o r i t h m s for surfaces of higher degree. At least one of these a l g o r i t h m s (9) is i m p l e m e n t e d in h a r d w a r e and another (ii) is c u r r e n t l y b e i n g imp l e m e n t e d in hardware. Also, the develo p m e n t by G o u r a u d (4) of a smooth shading a l g o r i t h m for p o l y g o n a l surfaces makes it p o s s i b l e to give a c o n t i n u o u s l y c u r v e d a p p e a r a n c e to a surface made up of polygons. For p o l y g o n a l shading the shade of each p o l y g o n is c o n s t a n t across the polygon. This shade is a function of the angle b e t w e e n the normal to the p o l y g o n and a line from the light source to the polygon. For G o u r a u d ' s smooth shading, however, the shade is not c o n s t a n t across the polygon. It is a function of the angle b e t w e e n the n o r m a l at each v e r t e x of the p o l y g o n and a line from the light source to the polygon, and the p o s i t i o n w i t h i n in the polygon. The n o r m a l at a v e r t e x is the average of the normals of the p o l y g o n s that have this v e r t e x in common. In smooth shaded r e n d e r i n g s a special p r o c e d u r e is n e c e s s a r y ~f creases are to be visible. Creases can be made v i s i b l e by "doubling" vertices. Since creases can occur only along the b o u n d a r y b e t w e e n a d j o i n i n g polygons, each v e r t e x along the crease is doubled. One v e r t e x of the pair belongs to p o l y g o n s on one side of the c r e a s e and the other v e r t e x of the pair belongs to p o l y g o n s on the other side of the crease. This causes separate normals to be computed. When the p o l y g o n s are shaded, there will be a shading d i s c o n t i n uity along the b o u n d a r y and the crease will be visible. F i g u r e 1 shows a face r e n d e r e d w i t h p o l y g o n a l shading and a d i f f e r e n t expression of the same face r e n d e r e d using the smooth s h a d i n g algorithm. Figure 1 Two e x p r e s s i o n s of the same face. The top one was r e n d e r e d using p o l y g o n a l shading. The b o t t o m one was r e n d e r e d using G o u r a u d ' s smooth shading algorithm. H a v i n g d e c i d e d to use a p o l y g o n a l re~ p r e s e n t a t i o n , how does one go about aPproximating a face w i t h p o l y g o n s ? There are several things to keep in mind. i. To get good smooth shading, the d e n s i t y of p o l y g o n s should be h i g h e s t in the areas of h i g h e s t c u r v a t u r e (the nose, mouth, a r o u n d the eyes and the edge of the chin) and lowest in the areas of lowest c u r v a t u r e (the forehead, cheeks and neck). 2. Where creases occur on a face (under the eyes, the side of the nose, the edge of the lips and the corner of the mouth), edges of p o l y g o n s m u s t c o i n c i d e w i t h the creases. A p o l y g o n may not span a crease. 3. Use the s m a l l e s t n u m b e r of p o l y g o n s c o n s i s t e n t w i t h good results. The reasons for this are obvious: a smaller a m o u n t of data, faster p i c t u r e g e n e r a t i o n and minim i z a t i o n of the data a c q u i s i t i o n problem. 4. If a n i m a t i o n is desired, the polygons m u s t be layed out in a w a y that allows the face to flex naturally. The p o l y g o n s should r e m a i n a p p r o x i m a t e l y p l a n a r as the face flexes. 452 5. Since the face is a p p r o x i m a t e l y symmetric, we need worry only about one side of the face. The other side is o b t a i n e d by "mirroring" or r e f l e c t i n g about the plane of symmetry. 6. Each p o l y g o n will have a s s o c i a t e d w i t h it a color. Where color b o u n d a r i e s occur on the face, the lips and eyebrows, for example, p o l y g o n edges m u s t c o i n c i d e w i t h these boundaries. A p o l y g o n may not span a color boundary. Keeping these things in m i n d the next step is to find a c o o p e r a t i v e a s s i s t a n t who will allow you to d r a w or p a i n t a set of p o l y g o n s on his or her face. After drawing the p o l y g o n skin on one half of the face, ask the a s s i s t a n t to assume a number of d i f f e r e n t expressions. For each e x p r e s s i o n observe how well these polygons a p p r o x i m a t e the face. After m o d i f y i n g the p o l y g o n set several times you should arrive at a r e a s o n a b l e set of polygons to r e p r e s e n t the face. Figure 2 shows the skin of p o l y g o n s used to produce the faces shown in figures 1,3 and 4. O n e - h a l f of this skin contains 124 polygons defined by 202 vertices. A unique point number is a s s i g n e d to each v e r t e x of the skin. The skin is then specified by going around each p o l y g o n in a c l o c k w i s e d i r e c t i o n and r e c o r d i n g the point numbers of its vertices. The details of the face are very i m p o r t a n t in a c h i e v i n g r e a l i s t i c results. Figure 3 shows the effect details, such as the eyes, eyebrows, eyelashes and teeth have on the r e a l i s m of the face. The eyebrows and teeth were included simply by adding p o l y g o n s of the a p p r o p r i a t e color. The illusion of e y e l a s h e s was a c h i e v e d by changing the color of e x i s t i n g p o l y g o n s d i r e c t l y above the eyes. The face by itself is not very realistic. It was necessary to complete the head in order to be convincing. F i g u r e 3 shows how a "bonnet" of hair was used to complete the head. Color is an i m p o r t a n t feature of the face. Each p o l y g o n has a color a s s o c i a t e d with it. This color is made up of three components; red, green and blue. By Figure 2 Two pictures showing the skin of p o l y g o n s used to r e p r e s e n t the face. Note that the p o l y g o n s of the skin change shape and p o s i t i o n as the face changes expression. I Figure 3 Four p i c t u r e s that illustrate the effect of details on the r e a l i s m of a face. The first picture shows the face alone. The next picture shows the face w i t h eyes and nose trils. In the next picture, teeth, eyelashes, eyebrows and the inside of the m o u t h w e r e added. The last picture shows the complete head. 453 s p e c i f y i n g the value of each c o m p o n e n t it is p o s s i b l e to achieve the desired colors. Color h a l f - t o n e r e n d e r i n g s are p r o d u c e d by scanning out the p i c t u r e three times, once for each of the p r i m a r y colors. The appropriate color filter is placed in front of the camera lens b e f o r e each scan. After some e x p e r i m e n t a t i o n the component values for f l e s h - t o n e and the other colors of the face were determined. These c o m p o n e n t values depend on a number of variables, including: the p h o s p h o r of the CRT, the type of filters used, the type of film used, the i n t e n s i t y setting of the CRT, and the c o m p e n s a t i o n function used to o v e r c o m e the n o n - l i n e a r c h a r a c t e r i s t i c s of the CRT. c o m p u t e d using the following algorithm. current p o s i t i o n = p o s i t i o n in the p r e v i o u s phase + C * difference where d i f f e r e n c e = p o s i t i o n in next phase p o s i t i o n in p r e v i o u s phase C = (i.0- cos (~))/2.0 and = phase f r a c t i o n * 3.14159 DATA ACQUISITION ANIMATION M e a s u r i n g the t h r e e - d i m e n s i o n a l position of points on the surface of a face or any other c o m p l e x o b j e c t is a s i g n i f i c a n t problem. If we still have our a s s i s t a n t w h o s e face is p a i n t e d w i t h polygons, we ask the a s s i s t a n t to assume a number of d i f f e r e n t expressions. We "freeze" each e x p r e s s i o n photographically. For each e x p r e s s i o n a A s s u m i n g that we have a s a t i s f a c t o r y skin of p o l y g o n s for the face, how do we animate it? We w o u l d like to specify the m o t i o n of the surface in the s i m p l e s t way c o n s i s t e n t w i t h natural motion. The a p p r o a c h taken in this r e s e a r c h is s o m e w h a t similar to the a p p r o a c h taken by the c o n v e n t i o n a l animator. The a n i m a t o r specifies the d e s i r e d m o t i o n by b l o c k i n g it out w i t h a series of key ~rawings. He then gives these key d r a w i n g s to the assistant a n i m a t o r s who g e n e r a t e the r e q u i r e d i n t e r m e d i a t e frames. For the c o m p u t e r animation, the key d r a w i n g s are r e p l a c e d by data files d e s c r i b i n g the face for each of a n u m b e r of d i f f e r e n t expressions. The data for each e x p r e s s i o n or "phase" of the face consists of the t h r e e - d i m e n s i o n a l p o s i t i o n of each p o i n t d e f i n i n g the p o l y g o n skin used to r e p r e s e n t the face. Figure 4 shows two phases of a face. The a n i m a t i o n p r o g r a m takes the place of the a s s i s t a n t a n i m a t o r s and generates the r e q u i r e d i n t e r m e d i a t e frames b e t w e e n the phases as the face changes expression. To change the face from one expression to another is a m a t t e r of m o v i n g each p o i n t a small d i s t a n c e in successive frames. The p o s i t i o n of each p o i n t of the skin in each frame is d e t e r m i n e d by i n t e r p o l a t i n g b e t w e e n the p r e v i o u s phase p o s i t i o n and the next phase position. Figure 2 shows how the p o l y g o n s of the skin change shape and p o s i t i o n as the face changes expression. Since the face is g o v e r n e d by p h y s i c a l laws, its m o t i o n is not linear but tends to a c c e l e r a t e and decelerate. A cosine i n t e r p o l a t i o n scheme was used to approximate the a c c e l e r a t i o n and d e c e l e r a t i o n of the facial motions. Each frame has a s s o c i a t e d w i t h it a phase number. This phase number is a real number whose integer part refers to the p r e v i o u s phase and w h o s e f r a c t i o n a l part indicates the position of this frame b e t w e e n the p r e v i o u s phase and the next phase. For example, if phase 2 is a smile and phase 3 is a frown then the phase number 2.5 means an expression h a l f w a y b e t w e e n a smile and a frown. Each c o m p o n e n t of a point's p o s i t i o n is Figure 4 Two phases of a face. 454 p o i n t there is a point number and a threed i m e n s i o n a l position. The t o p o l o g y data consists of a s p e c i f i c a t i o n for each polygon of the face. The p o l y g o n specification is made up of the p o i n t numbers of the v e r t i c e s of the p o l y g o n and its color. After the desired data is read in, the data for the other half of the face is c o n s t r u c t e d by m i r r o r i n g or r e f l e c t i n g the data for the first half of the face. For each frame of a sequence a n u m b e r of tasks m u s t be a c c o m p l i s h e d in order to compute the data needed to pass on to the hidden surface and shading algorithms. U s i n g the phase number a s s o c i a t e d with each frame, the p r o g r a m i n t e r p o l a t e s the phase data to get th e p o s i t i o n of each v e r t e x of the skin for this f r a m e . These point p o s i t i o n s are s p e c i f i e d in a c o o r d i n a t e system c e n t e r e d near the center of the head. The hidden surface a l g o r i t h m requires the data to be specified in a d i f f e r e n t c o o r d i n a t e system. The new c o o r d i n a t e system, r e f e r e d to as the v i e w i n g system, has its origin at the p o s i t i o n we w i s h to look from. The Z axis of the v i e w i n g system m u s t be pointing in the d i r e c t i o n w e w i s h to look. The p o s i t i o n data m u s t be t r a n s f o r m e d (12, 13) into this new c o o r d i n a t e system. The a n i m a t i o n p r o g r a m first t r a n s l a t e s the data so the origin moves from the center of the head to the p o s i t i o n we w i s h to look from. It then rotates the c o o r d i n a t e system so that the Z axis of the v i e w i n g system is p o i n t i n g toward the p o s i t i o n w e wish to look at. After the data is t r a n s f o r m e d into the v i e w i n g system, the normal to each p o l y g o n is computed. Using these normals, the normal at each v e r t e x of the skin is computed. This is done for each v e r t e x by a v e r a g i n g the normals of the p o l y g o n s that have the v e r t e x in common. For each frame of a sequence the following p a r a m e t e r s are passed on to the hidden surface and shading algorithms: Figure 5 A typical pair of data photographs. pair of o r t h o g o n a l views of the face is taken, one from d i r e c t l y in front and one from the side. Figure 5 shows a typical pair of these photographs. Using these pairs of p h o t o g r a p h s we e s t a b l i s h an origin and a coordinate system. The three-dimensional p o s i t i o n of each p o i n t is m e a s u r e d d i r e c t l y from the photographs. Note that the coordinate system should be chosen such that two of the c o o r d i n a t e axes define the synunetry plane of the face. This facilitates the m i r r o r i n g or reflection o p e r a t i o n n e c e s s a r y to obtain the data for the other half of the face. This data c o l l e c t i o n m e t h o d has some shortcomings. P h o t o g r a p h s are not orthographic p r o j e c t i o n s but are p e r s p e c t i v e projections. Therefore, the images on the p h o t o g r a p h s are somewhat distorted. This d i s t o r t i o n can be reduced by using long f o c a l length lenses when the pictures are taken. Some a d j u s t m e n t of the data may be n e c e s s a r y due to this distortion. A n o t h e r shortcoming is that some points on the face may not be visible in both views. A best guess must be made for at least one of the coordinates of these o c c l u d e d points. i. The v i e w i n g angle (this is used to d e t e r m i n e the v i e w i n g space and is also used in the p e r s p e c t i v e t r a n s f o r m a t i o n (12,13)). 2. The color of each polygon. 3. The p o s i t i o n of the b e g i n n i n g and ending points of each edge of each p o l y g o n and the normals at these points. 4. The d e s i r e d resolution. The a n i m a t i o n p r o g r a m was w r i t t e n in SAIL (14), an e x t e n d e d algol for the PDP-10. THE A N I M A T I O N P R O G R A M The a n i m a t i o n p r o g r a m contains arrays to store the topology and phase data for the face. Up to three phases may be stored in the program. The topology and phase data is read in from data files. The user of the p r o g r a m interacts w i t h it to specify w h i c h data files he wants read in. The phase data files consist of the data for a sequence of points. For each IMPLEMENTATION The system used to produce a n i m a t e d sequences, and the h a l f - t o n e r e n d e r i n g s included in this paper is shown in F i g u r e 6. This system uses two PDP-10 computers. One of these is a d e d i c a t e d machine that allows only one user at any given time. 455 Time-Shared PDP-10 Buffer x01A S i n g l e - U s e r PDP-10 Link I Watkins' Visible Surface I Alqorithm ~ Y D/A Gouraud's Smooth Shading I Al~lorithm Z D/A St°•r•Tube Animation Program Film Advance/ Shutter Control i Color Filter Box \CRT / ------J " Figure 6 System configuration. This p r o c e s s o r is i n t e r f a c e d to the special e q u i p m e n t n e e d e d to produce h a l f - t o n e pictures. The other PDP-10 is time-shared, and runs under the TENEX o p e r a t i n g system. There is a link b e t w e e n the m a c h i n e s that allows data to be t r a n s f e r e d b e t w e e n them. This system allows us to take advantage of the TENEX o p e r a t i n g system, particularly the file system, on one m a c h i n e and the special h a l f - t o n e d i s p l a y e q u i p m e n t on the other machine. When one wishes to use this system, he connects the terminal to the s i n g l e - u s e r PDP-10 and loads a p r o g r a m w h i c h contains; a software v e r s i o n of W a t k i n ' s v i s i b l e surface algorithm, G o u r a u d ' s smooth shading algorithm, a p r o c e d u r e to c a l i b r a t e the h a l f - t o n e d i s p l a y s and p r o c e d u r e s to handle the s i n g l e - u s e r side of the data transfers across the link. When this p r o g r a m begins execution, it first allows the user to calibrate the display equipment. It then initializes the r e c e i v i n g side of the data link and goes to sleep. At this p o i n t the user switches the terminal to the timeshared machine. A f t e r logging in, the user loads and starts the e x e c u t i o n of the anim a t i o n program. This p r o g r a m asks the user a number of questions, including: w h i c h phase data files he wants read in, the d e s i r e d number of frames b e t w e e n phases, the r e s o l u t i o n to use, w h e r e he wants to look, where he wants to look from, and w h e t h e r he wants smooth or p o l y g o n a l shading. After r e c e i v i n g this information, the p r o g r a m begins p r o c e s s i n g the first frame of the sequence. Data to be passed to the hidden surface and shading a l g o r i t h m s is stored into one of two buffers. When a buffer is full, a flag is set. This causes the a n i m a t i o n p r o g r a m to transfer to the other b u f f e r and wakes up the s i n g l e - u s e r program. When the s i n g l e - u s e r p r o g r a m wakes up, it transfers the data out of the full buffer into its memory, resets the flag and goes back to sleep. R e s e t t i n g the b u f f e r flag allows the a n i m a t i o n p r o g r a m to reuse the buffer. When all the data for a single frame has been transfered, the s i n g ! e - u s e r program begins w o r k i n g on it to g e n e r a t e the h a l f - t o n e image. The a n i m a t i o n p r o g r a m goes on to the next frame of the sequence. While the s i n g l e - u s e r p r o g r a m is in the process of g e n e r a t i n g the h a l f - t o n e image, it ignores the buffer flags set by the anim a t i o n program. This means that as soon as the a n i m a t i o n p r o g r a m fills b o t h b u f f e r s it m u s t w a i t until the s i n g l e - u s e r p r o g r a m completes the picture and empties a buffer. The o u t p u t of the s i n g l e - u s e r p r o g r a m goes to three d i g i t a l ~ t o - a n a l o g c o n v e r t e r s w h i c h in turn drive any c o m b i n a t i o n of the d i s p l a y devices shown in F i g u r e 6. This system works w e l l if the timeshared s y s t e m is not h e a v i l y loaded. If the t i m e - s h a r e d system is h e a v i l y loaded the s i n g l e - u s e r is idle m u c h of the time w a i t i n g for data. All of the h a l f - t o n e r e n d e r i n g s shown in this r e p o r t were p r o d u c e d w i t h the high p r e c i s i o n d i s p l a y using a r e s o l u t i o n of i024xi024. At this r e s o l u t i o n it takes about 2% m i n u t e s to scan out a single b l a c k - a n d - w h i t e picture. A n i m a t e d sequences are r e c o r d e d using a 35 ram a n i m a t i o n camera. F i l m advance and 456 shutter are under program control. Animated sequences of the face are produced at the rate of about 20 frames per hour. University of Utah, Technical Report UTECH-CSc-70-101, June 1970. 12. Coons, S. A., "Transformations and Matrices", Notes for the 1967 Summer School on Computer Graphics for Designers, University of Michigan, June 5-16, 1967. ACKNOWLEDGMENTS I am grateful to Professors R. E. Stephenson and I. E. Sutherland and to Barry Wessler and Ed Catmull for their" help and encouragement, also to Mike Milochik for his photographic assistance. 13. Ahuja, D. V. and Coons, S. A., "Geometry for Construction and Display", IBM S [ s t e m s Journal, vol. 7, pp. 188-205, 1968. REFERENCES 14. Swinehart, D. and Sproull B., "SAIL", Stanford Artificial Intelligence Project Operating Note No. 57.1, April 1970. 1. Coons, S. A., "Surfaces for Computer Aided Design of Space Forms", M.I.T., Cambridge, Mass., Project MAC Report MAC-TR41, June 1967. 2. Mahl, R., "Visible Surface Algorithm for Quadric Patches", Computer Science, University of Utah, Technical Report UTECCSc-70-iii, December 1970. 3. Weiss, R. A., "Be Vision, IBM 7090 Fortran Programs to graphic Views of Combinations and Quadric Surfaces", JACM, April 1966, pp. 194-204. A Package of Draw Orthoof Plane vol. 13, 4. Gouraud, H., "Computer Display of Curved Surfaces", Computer Science, University of Utah, Technical Report UTEC-CSc71-113, June 1971. 5. Wylie, C., Romney, G., Evans, D., and Erdahl, A., "Half-tone Perspective Drawing by Computer", Proc FJCC, vol. 31, pp. 49-58, 1967. 6. Appel, A., "The Notion of Quantitative Invisibility and the Machine Rendering of Solids", Proc ACM, vol. 14, pp. 387-393, 1967. 7. Kelley, K. C., "A Computer Program for the Generation of Half-Tone Images with Shadows", Coordinated Science Laboratory, University of Illinois, Report R-444, November 1969. 8. Romeny, G. W., "Computer Assisted Assembly and Rendering of Solids", Rome Air Development Center, Griffiss Air Force Base, New York, Technical Report RADC-TR-69-365, September 1969. 9. Rougelot, R. S. and Shoemaker, R., "G. E. Real Time Display", General Electric Co., Syracuse N. Y., NASA Report NAS 9-3916. 10. Warnock, J. E., "A Hidden Surface Algorithm for Computer Generated Halftone Pictures", Computer Science, University of Utah, Technical Report 4-15, June 1969. ll. Watkins, G. S., "A Real-Time Visible Surface Algorithm", Computer Science, 457