cs184 was an awesome class. After each homework assignment, we were given relatively free rein to do whatever we wanted for fun. So I did that as much as I could. I thought it was cool to create cool things in a tool that I coded and understand from the inside out. Here are the extra little things that I created after each homework. Final project is not on this page. It can be found here: final.html
Assignment 1
In this assignment, we were told to make it so the user could click on the screen to define points on a polygon, then close that polygon with another click. Also, we had to make it so the user could save the file out to a SLF formatted file.
We were also told to draw a car.
To help me draw my car, I added a few features:
Undo, select polygon, cycle colors, snap
Assignment 2
In this assignment, we were supposed to make it so a user can take an existing SLF file (created from previous assignement's program) and then drag the points around. After these points are dragged, the user can save it out to a special morph file that would create a slider-driven animation to blend between the beginning and ending pictures.
Here is my morph:
Assignment 3
In this assignment, a whole lot of stuff was implimented. Bounding boxes, dynamic polygons, and we had to basically write the entire internal heirarchy of SLIDE.
The SLF file shows off dynamic objects, both blending and doing simple transforms like scaling and translation. Its hard to see with these couple of pictures, but the clouds flew at the screen, the ground would curve right when the car turned, the car would turn, and the whole time the car was on a sin function translate, so it would sort of sway back and forth.
Assignment 4
In this assignment, we implimented clipping and culling.
For my SLF file, I decided to create something interactive. It starts with 3 boxes with pictures in them. If the user clicks on any one of the boxes, the file will do a small zooming effect (shows off clipping and culling) into the selected box until it fills the entire screen. Then, the picture that was in the box would play a small animation. The car would drive off the ramp, the stick figures would fight, and the smiley just bounced around.
Assignment 5
In this assignment, we ventured into the 3d world. Parrellel projected cameras and 3d versions of the stuff we did earlier. We also implimented a "crystal ball UI".
The professor supplied us with a bunch of SLF files containing data for different types of shapes in 3d. My final SLF file took these objects and dropped them in a primitive "gravity engine". The object selected would drop from the sky, through some hoops that reacted when the object fell through, then hit the ground. Upon hitting, the object would bounce with a "squash and stretch" manner, which exagerrates its bounce in a cartoony fashion. There was also a control panel that would let you change the elasticity and size of the object, the gravity force, velocity, and height on the object. If the user moved the height bar quickly upwards and let go, the object would conserve that velocity, thus letting the user "throw" the object.
Also, when the ball hit, the floor would light up and the light would spread outwards radially. Note the squash and stretch in the picture below:
A couple more pictures of other objects falling in the "engine" (wireframe so you can see what they are)
And the control panel:
Assignment 6
In this assignment, we created a perspective camera. We also experimented with stereo vision techniques.
In my SLF file, I recreated a city because I like 3d cities and I thought the straight lines would show off the perspectives pretty well (lots of parrallel bundles of lines to converge)
There were cars driving around in this city, mostly on a straight path. Except one car which would drive around the city block. I also made that car slow down for turns so its slightly more realistic.
As for controls, the user had control over the camera. In "free flight" mode, the user could move forward, backward, look up/down, and turn. In a "top" view, the user could see the entire city from above. And in "follow car" mode, it would be attached to the top of the car that drove around the city block.
Free flight view:
Top view:
Car view:
Control Panel:
Assignment 7
In this assignment, we worked on the pixel level. I thought it would be fun to impliment the simple blur algorithm we learned in EE20n since that's at the pixel level. It worked for any image loaded in slide. If the user presses the blur buttong ('t'), the image would become more blurred. Heres an example of a few different levels of blur:
Assignment 8
In this assignment, we did lighting. Finishing this assignment was hard enough. I did not have time to do anything extra. :(
Assignment 9
In this assignment, we took an object that the professor gave us and put it in a few different scenes. One was an indoor scene, another was outdoor. Then we could make a final picture which was more complicated. This was all to be exported to a renderman file format and then rendered in BMRT or Pixie.
For my outdoor scene, I wanted to make the object HUGE. We're working in 3d and we are the controllers of this universe, so why not? To give it scale, I made a bench and put it in there. It also had a blasted out feel which was a result of a low radiosity sample, but I liked it. The white/blue brightness gave it a dreamy feel.
For my indoor scene, we were given pretty strict guidelines, so I followed them. I spruced up the "pedastal" slightly to make it more interesting. We also were told to render with and without radiosity to see the difference.
Without Radiosity:
With Radiosity, note how warm it is due to the light bouncing off the brown floor:
And now for the final picture. I took my "outdoor" idea and ran with it. I dumped the object into a heavily modified version of my city from AS6. Textured mapped stuff, added lighting and a skybox. I also added birds, although they are rediculously low poly and probably impossible to make out.
Here are some working pictures for this assignment: