Thomas Potthast

Projects

Final Project

For the final project, I wrote a flying shooter game. It models the enemies, enemy projectiles, player projectiles, and afterburner as particle systems. It also uses multiple shaders to color the scene, and provides a robust set of keyboard controls. Two demo videos ara available: With a colorizing shader that oscillates enemy colors and does per-vertex lighting for 8 lights, and a per-pixel lighting shader that does per-pixel lighting for all 8 potential gl lights.

Shaders

For homework 7, I wrote a vertex and fragment shader that implemented pose based animation and cel shading. It requires the CSE40166 library.

Game

For homework 6, I developed a game using two particle systems based on those created in the Particle System homework. Additionally, it implements basic collision detection. It requires the CSE40166 library.

Particle System

For homework 5, I developed rain cloud and fountain particle systems. They are both highly templated and customizable, allowing various particle and spawned system(for the rain) classes to be used. Additionally, I implemented a skybox and Texture class using SOIL. It requires the CSE40166 library.

Roller Coaster

For my midterm project, I developed a roller coaster simulator. It uses configuration files to generate a Bezier Curve track and to lay out the environment objects. It also plays music and has triggered sound effects, as well as a selection of 4 cameras each for primary and secondary cameras. It has extensive keyboard shortcuts and a very object-oriented design.

Bezier Curves

For this project, I developed a set of classes that represented complex Bezier curves as a chain of cubic Bezier curves. Additionally, I developed Enfironment, Point3d, and Arcball Camera classes that greatly simplified development of the Bezier classes and general 3d interactivity. I also added in a simple middle-click menu to exit.

Moving Vehicle Project

This project was an introduction to 3d and multiple cameras/viewports. I created a vehicle that traversed a 3d bounded grid with a cityscape, while providing 2 viewports with a choice of 4 cameras. The initial primary camera was an arcball camera that could be controlled by the mouse, with first person, 3rd person, and 3rd person reversed cameras available as well.

Interactive Creature Project

For this project, I created an 2D turtle that would respond to mouse movements and keyboard input by moving and firing a lased. It also did boundary checking to stay onscreen and had accelerating gravity, mimicking natural gravity.

Initials Project

This was the first project for Computer Graphics. It involved learning how to set up and use opengl and glut, using transformations and scaling, and using colors. I also developed a function to draw arbitrary arcs, which was used to draw the curved letters.