CSE 40166 / 60166 - Computer Graphics

|    Home  |   Syllabus  |   Assignments  |   Schedule  |   Resources   |

Mark Andrew Riehm

Project 1



Description: This is my first assignment of the year. MAR are my initials and CSE are the initials for the Computer Science and Engineering Department. Everything is drawn in OpenGL using only triangles, including the curves. The curves were made by drawing two triangles to form a skinny rectangle and then rotating that rectangle around the center.

Project 2



Description: This assignment is the first to involve animation and more complex object hierarchy. The randomly sized bubbles are constantly moving upwards and new ones form at the fish's mouth at a regular rate. The fish can be moved around the screen using the WASD keys or by clicking in a location. However, the fish will not move off the screen or out of the water. The fish's eye will follow the mouse by "rotating" around its "socket" when the mouse moves to a different side of the fish.
Project 3



Description: This program allows you to drive a tank. Originally, this was going to be a Star Fox Landmaster but artisitc and time constraints made it into a generic tank. This idea of this program is simply to get a feel for how to build OpenGL programs in 3D. The 'landmaster' lives in a randomly generated teapot forest grid that it can never escape, although it can go through the teapots. The turret on the tank continually spins around and the wheels spin when the tank moves forward or backward.
Project 4



Description: This program displays a cubic bezier curve and its specified control points in 3D space. A bezier curve is simply a smooth curve that is flexible and simple to specify and so is widely used in computer graphics. This program has a grid on the XZ plane to help with orientation. A ball travels along the bezier curve and goes back to the beginning of the curve when it gets to the end.
Midterm



Description: This program simulates a rollercoaster riding along a track. There is use of materials properties to simulate different kinds of lighting and colors. There are gray pyramids and buildings in the environment around the rollercoaster track. Although only one track is shown, there are multiple tracks that this program can display. Each track is specified by a file that conforms to the file format we designed, which specifies the bezier curve points for the track, the "up-vector" for the track, and the environmental objects. Ambient rollercoaster noise loops while the program is running, and as the coaster goes down a long drop a screaming sound will play. The frames per second are displayed in the upper left corner. Different perspectives (first or third person) can be activated in a picture in picture window by pressing '`' and choosing the view by pressing '1' - '3'.
Project 5



Description: This program is a framework for graphical particle systems and it showcases two example systems. The first system models a fountain by displaying many tiny water droplets spitting out of a single source point. These water droplets are all affect by gravity although they have randomized velocities and lifespans, although they are restricted somewhat to make the fountain appear more real. The second particle system modeled are rain drops falling from a cloud. These rain drops are generated randomly in a cloud that is also rendered. Instead of having fixed lifespans, these raindrops die when they hit the ground and they create small splash fountains upon impact. All of the particles on the screen are 2D quads, but they are billboarded so that they don't disappear at any angle. Also the water droplets have transparent textures so they are necessarily drawn from the back of the screen to the front so that the z-buffer does not force transparency to prevent a droplet from being drawn. The entire scene is surrounded in a skybox.
Project 6



Description: This is a game that I dub "Snowman vs. Fire". The snowman is made up of three snowballs and if you get hit by fire or fall off the edge of the map then you will lose a snowball. The goal is to jump over the flames. This is hard because the flames are chasing you and you barely having enough jumping ability to get over the flames if you time it right. There is collision detection between the flames so that if they touch each other their directions will be reversed so they will appear to bounce. Also, there are trees in game that the flames will bounce off and that the play cannot move through. The snowballs will roll in the direction the camera is facing when the snowman moves. The flames are each their own particle system based off of the fountain particle system from last week but with a different texture and some parameters changed (no gravity or wind). If you jump over three flames before losing your head, then you win. There is a skybox and everythin except for the trees are textured.

Project 7



Description: This program is just a shader and Wavefront object reader showcase. A few lion models are read in from some text files and the vertex shader interpolates between two at a time to give the impression of a moving lion. A fragment shader is used to provide cel-shaded lighting to the lion. A multipass technique is also used to give the lion a black border by drawing a thick black mesh of the lion before rendering the full, colored triangles. Trees are randomly located around the lion but they will never be placed on top of the lion. These trees add to the sense of wilderness.

Final



Description: This program is a game that mimics Angry Birds. The bird and pigs are represented by textured spheres that also reflect light. This light is, by default, creates a cel shaded effect via a shader. There is also a cat in the background that "pounces" via a mesh deformation shader, when it sees the bird start to fly, but it never moves. There is a slingshot that the user aims to fire at blocks and pigs. There is a very good physics simulation when the blocks, pigs, and bird collide. The cat is always growling and the sound comes from the position of the cat because the listener follows the orientation of the camera. When a bird hits a pig and the pig dies, it explodes and a crashing sound is made in the location that the crash occured.