jon@cit-vax.Caltech.Edu (Jonathan P. Leech) (05/10/86)
Expires: Sender: Followup-To: Distribution: Organization : California Institute of Technology Keywords: 3D models, neato, keen In article <2032@teklds.UUCP> jimb@teklds.UUCP (Timothy F. O'Connor) writes: > > I would very much like to get my hands on some of the historical > 3D models that appear from time to time (mostly in odd places). > These are things like the champagne glass from Phong's thesis, > Clark's Klein bottle, and the ever infamous teapot (is it > Catmull's or Newell's? I don't know). I've got an image in mind > ... The teapot database is included as a 'shar' file at the end of this article. The comments should explain what in here. This database is quite probably the original as Jim Blinn supplied it for the Computer Graphics class I'm TAing (and he's teaching). The database is NOT in polygonal form. Basically the commands in these files are as follows: PNT N, X, Y, Z - define point #N with coordinates (X,Y,Z) BEZC N1,N2,N3,N4 - draw bezier curve with control points N1..N4 BEZS N1,..N16 - draw bezier surface with control points N1..N16 (in a grid: N1 N2 N3 N4 N5 ... N8 .. .. N13 ... N16 These are intended for a left-handed coordinate system with Z increasing into the screen (not that it really matters). You will also have to write a program to compute a surface of revolution from a bezier curve for the lid and body profiles. If you don't know how to compute bicubic patches, you should - try Newman & Sproull or Foley & Van Dam. There is a paper by Caltech professor Jim Kajiya on ray tracing bicubic patches in SIGGRAPH Proceedings a few summers back, and more recent articles on tracing parametric patches in general in the last few SIGGRAPHs. Or just chop it up into lots of polygons (``Polygons, Keptin! Millions of them!''). I also have the Sutherland VW database (in polygonal form). If there's sufficient interest I'll post it to the net. I do not particularly want to send individual copies because of the effort involved. -- Jon __@/ #! /bin/sh # This is a shell archive, meaning: # 1. Remove everything above the #! /bin/sh line. # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh (not csh) to create the files: # TPOTBC.TEXT # TPOTHH.TEXT # TPOTLC.TEXT # TPOTLQ.TEXT # TPOTSH.TEXT # This archive created: Sat May 10 03:26:18 1986 export PATH; PATH=/bin:$PATH if test -f 'TPOTBC.TEXT' then echo shar: will not over-write existing file "'TPOTBC.TEXT'" else cat << \SHAR_EOF > 'TPOTBC.TEXT' OUTLINE CURVE OF BODY OF TEAPOT SWEEP AROUND Y AXIS FOR WHOLE BODY PNT 1, 1.40000, 2.25000, 0.00000,,,, PNT 2, 1.33750, 2.38125, 0.00000, PNT 3, 1.43750, 2.38125, 0.00000, PNT 4, 1.50000, 2.25000, 0.00000, BEZC 1,2,3,4 PNT 5, 1.75000, 1.72500, 0.00000, PNT 6, 2.00000, 1.20000, 0.00000, PNT 7, 2.00000, 0.75000, 0.00000, BEZC 4,5,6,7 PNT 8, 2.00000, 0.30000, 0.00000, PNT 9, 1.50000, 0.07500, 0.00000, PNT 10, 1.50000, 0.00000, 0.00000, BEZC 7,8,9,10 SHAR_EOF fi # end of overwriting check if test -f 'TPOTHH.TEXT' then echo shar: will not over-write existing file "'TPOTHH.TEXT'" else cat << \SHAR_EOF > 'TPOTHH.TEXT' 1/2 HANDLE OF TEAPOT MIRROR ABOUT Z FOR OTHER HALF PNT 1, -1.60000, 1.87500, 0.00000,,,, PNT 2, -1.60000, 1.87500, 0.30000, PNT 3, -1.50000, 2.10000, 0.30000, PNT 4, -1.50000, 2.10000, 0.00000, PNT 5, -2.30000, 1.87500, 0.00000, PNT 6, -2.30000, 1.87500, 0.30000, PNT 7, -2.50000, 2.10000, 0.30000, PNT 8, -2.50000, 2.10000, 0.00000, PNT 9, -2.70000, 1.87500, 0.00000, PNT 10, -2.70000, 1.87500, 0.30000, PNT 11, -3.00000, 2.10000, 0.30000, PNT 12, -3.00000, 2.10000, 0.00000, PNT 13, -2.70000, 1.65000, 0.00000, PNT 14, -2.70000, 1.65000, 0.30000, PNT 15, -3.00000, 1.65000, 0.30000, PNT 16, -3.00000, 1.65000, 0.00000, BEZS 1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16 PNT 17, -2.70000, 1.42500, 0.00000, PNT 18, -2.70000, 1.42500, 0.30000, PNT 19, -3.00000, 1.20000, 0.30000, PNT 20, -3.00000, 1.20000, 0.00000, PNT 21, -2.50000, 0.97500, 0.00000, PNT 22, -2.50000, 0.97500, 0.30000, PNT 23, -2.65000, 0.78750, 0.30000, PNT 24, -2.65000, 0.78750, 0.00000, PNT 25, -2.00000, 0.75000, 0.00000, PNT 26, -2.00000, 0.75000, 0.30000, PNT 27, -1.90000, 0.45000, 0.30000, PNT 28, -1.90000, 0.45000, 0.00000, BEZS 13,14,15,16, 17,18,19,20, 21,22,23,24, 25,26,27,28 SHAR_EOF fi # end of overwriting check if test -f 'TPOTLC.TEXT' then echo shar: will not over-write existing file "'TPOTLC.TEXT'" else cat << \SHAR_EOF > 'TPOTLC.TEXT' CONTOUR OF TEAPOT LID (IN XY PLANE) SWEEP AROUND Y AXIS FOR WHOLE LID PNT 1, 0.00000, 3.00000, 0.00000,,,, PNT 2, 0.80000, 3.00000, 0.00000, PNT 3, 0.00000, 2.70000, 0.00000, PNT 4, 0.20000, 2.55000, 0.00000, PNT 5, 0.40000, 2.40000, 0.00000, PNT 6, 1.30000, 2.40000, 0.00000, PNT 7, 1.30000, 2.25000, 0.00000, BEZC 1,2,3,4 BEZC 4,5,6,7 SHAR_EOF fi # end of overwriting check if test -f 'TPOTLQ.TEXT' then echo shar: will not over-write existing file "'TPOTLQ.TEXT'" else cat << \SHAR_EOF > 'TPOTLQ.TEXT' PNT 1, 0.00000, 3.00000, 0.00000,,,, PNT 2, 0.00000, 3.00000, 0.00200, PNT 3, 0.00200, 3.00000, 0.00000, PNT 4, 0.00000, 3.00000, 0.00000, PNT 5, 0.80000, 3.00000, 0.00000, PNT 6, 0.80000, 3.00000, 0.45000, PNT 7, 0.45000, 3.00000, 0.80000, PNT 8, 0.00000, 3.00000, 0.80000, PNT 9, 0.00000, 2.70000, 0.00000, PNT 10, 0.00000, 2.70000, 0.00000, PNT 11, 0.00000, 2.70000, 0.00000, PNT 12, 0.00000, 2.70000, 0.00000, PNT 13, 0.20000, 2.55000, 0.00000, PNT 14, 0.20000, 2.55000, 0.11200, PNT 15, 0.11200, 2.55000, 0.20000, PNT 16, 0.00000, 2.55000, 0.20000, BEZS 1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16 PNT 17, 0.40000, 2.40000, 0.00000, PNT 18, 0.40000, 2.40000, 0.22400, PNT 19, 0.22400, 2.40000, 0.40000, PNT 20, 0.00000, 2.40000, 0.40000, PNT 21, 1.30000, 2.40000, 0.00000, PNT 22, 1.30000, 2.40000, 0.72800, PNT 23, 0.72800, 2.40000, 1.30000, PNT 24, 0.00000, 2.40000, 1.30000, PNT 25, 1.30000, 2.25000, 0.00000, PNT 26, 1.30000, 2.25000, 0.72800, PNT 27, 0.72800, 2.25000, 1.30000, PNT 28, 0.00000, 2.25000, 1.30000, BEZS 13,14,15,16, 17,18,19,20, 21,22,23,24, 25,26,27,28, SHAR_EOF fi # end of overwriting check if test -f 'TPOTSH.TEXT' then echo shar: will not over-write existing file "'TPOTSH.TEXT'" else cat << \SHAR_EOF > 'TPOTSH.TEXT' 1/2 SPOUT OF TEAPOT MIRROR ABOUT Z FOR OTHER HALF PNT 1, 1.70000, 1.27500, 0.00000,,,, PNT 2, 1.70000, 1.27500, 0.66000, PNT 3, 1.70000, 0.45000, 0.66000, PNT 4, 1.70000, 0.45000, 0.00000, PNT 5, 2.60000, 1.27500, 0.00000, PNT 6, 2.60000, 1.27500, 0.66000, PNT 7, 3.10000, 0.67500, 0.66000, PNT 8, 3.10000, 0.67500, 0.00000, PNT 9, 2.30000, 1.95000, 0.00000, PNT 10, 2.30000, 1.95000, 0.25000, PNT 11, 2.40000, 1.87500, 0.25000, PNT 12, 2.40000, 1.87500, 0.00000, PNT 13, 2.70000, 2.25000, 0.00000, PNT 14, 2.70000, 2.25000, 0.25000, PNT 15, 3.30000, 2.25000, 0.25000, PNT 16, 3.30000, 2.25000, 0.00000, BEZS 1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16 PNT 17, 2.80000, 2.32500, 0.00000, PNT 18, 2.80000, 2.32500, 0.25000, PNT 19, 3.52500, 2.34375, 0.25000, PNT 20, 3.52500, 2.34375, 0.00000, PNT 21, 2.90000, 2.32500, 0.00000, PNT 22, 2.90000, 2.32500, 0.15000, PNT 23, 3.45000, 2.36250, 0.15000, PNT 24, 3.45000, 2.36250, 0.00000, PNT 25, 2.80000, 2.25000, 0.00000, PNT 26, 2.80000, 2.25000, 0.15000, PNT 27, 3.20000, 2.25000, 0.15000, PNT 28, 3.20000, 2.25000, 0.00000, BEZS 13,14,15,16, 17,18,19,20, 21,22,23,24, 25,26,27,28 SHAR_EOF fi # end of overwriting check # End of shell archive exit 0 -- Jon Leech (jon@csvax.caltech.edu || ...seismo!cit-vax!jon) Caltech Computer Science Graphics Group __@/