My Graphic Images

I created these are images in a computer graphics class, offered through NTU. The images were generated mathematically by a program I created during the class called a ray tracer. With each successive project more features were added. I hope you can see improvement!

Click on the images to see them full size (640x480). The images are 256 color bitmaps, and are best viewed with high or true color. If you are only using a 256 color graphics mode, your window manager will steal colors for its own selfish reasons and the images will look spotted!

I used ThumbsPlus to generate these thumbnails.

Part #1

Grayscale: ambient and diffuse lighting
jack.gif
jack.gif

15 Spheres
The jack is not in the middle of the table. Because the table top is curved, if I put the jack in the middle, it appears to be on the back edge. Of course when I add shadows, I won't be able to get away with this trick!
fight1.gif
fight1.gif

40 Spheres
I drew this manually. Starting from a paper drawing, I guessed on the initial sizes and placement, and then spent hours making adjustments.



Part #2

Grayscale: added specular reflections, shadows, antialiasing, 2D texturemapping, and 3D textures: checker, wood, and marble. also added more primitive shapes: cylinders, cones, and polyhedrons.
fight.gif
fight.gif
fights.gif
fights.gif
fighto.gif
fighto.gif

fight.gif
40 Spheres
Compare this to the previous fight image. Shadows and specular reflections make the difference! These three images show the same scene, just from different camera locations.
fightm.gif
fightm.gif

40 Spheres
I added a 3D marble texture. My code for this and the wood textures is small, but required hours of tweaking. They still need improvement.
chessw.gif
chessw.gif

213 Objects
I love this wood texture because I spent a long time on it. People who did not spend time on it don't seem to like it as much. 8(
paint.gif
paint.gif

50 Objects
This is 2D texture mapping. One of the wall pictures is this picture, so I ran my raytracer several times to get it to recede.



Part #3

256 colors: added color, reflections, and refractions. also added boolean objects.
chessrs.gif
chessrs.gif

171 Objects
The chessboard is flat! I placed the 'camera' in the middle of the board, pointing up, into a reflective sphere above the board. (i.e. You are looking at the sphere.) The board is also reflective.
chesswc.gif
chesswc.gif

213 Objects
My color map selector needs help! This image looks better in true color (below).
glass.gif
glass.gif

Check out the refraction. The straws and glasses are identical. The only difference is the left glass is filled with water, making the straw appear to touch the outside surface of the glass. You do not see the checkerboard through the filled glass because of the refraction. I should have put something behind the glass to make this clear.



Epilogue

True color: any size.
after the class I added the option to output a true color bitmap. So here is the chess board with a fuller color palete.
chesswc.jpg
chesswc.jpg

213 Objects
(800x600) This looks a little better. The thin wood grain lines are less than a pixel wide, and would be disjoint without the sub pixel resolution achieved with antialiasing. (actually, I just wanted to use "sub pixel" in a sentence.) Check out the knights on the right, for a comparison.
anti.jpg
anti.jpg

anti.bmp
anti.tif
(200x150) On the left is a non-antialiased knight, on the right is an antialiased knight. "antialiasing" means that each pixel is sampled multiple times (in this example, 16) at evenly spaced points within the 2 dimensional pixel. The average of these samples is used. TV's generally have fewer pixels than computer monitors, but images still look good because they are antialised. (The anti.jpg is smaller than anti.bmp, but it is a lossy compression. So, if you're actually reading this text get the bmp file.)