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.
|