CSE 40166 / 60166 - Computer Graphics

|    Home  |   Syllabus  |   Assignments  |   Schedule  |   Resources   |

DAVID LOPES


Homework 1: Draw my initials and "CSE" on a window using only OpenGL primitives.
David Augustus Lopes, Computer Science and Engineering





Homework 2: Draw an animated "creature" and have it interact with the mouse and keyboard. This atom's electrons are constantly orbiting the nucleus. It can be controlled with WASD. The circle centered at the mouse cursor is the user's "gravity well" -- if the atom is within this circle, it will fall towards the cursor. It also bounces off the walls of the screen.
The electrons are constantly spinning

If the user holds the left mouse button down, the electrons will speed up. If the user holds the right mouse button down, the electrons will slow down and eventually reverse direction. The user can use the mouse scroll (or the Z and X keys) to adjust the size of the gravity well. The -o flag can be used in the command line to force the program to display the orbitals of the electrons. Additionally, the constants at the top of source code can be easily fiddled with to alter the number of electrons, protons, and neutrons, and their speed, randomness, etc.
The electrons are constantly spinning
In this picture, we have three electrons instead of the default 6, and the orbitals are being displayed.




Homework 3: Crappy Cart
This program displays a very simple cart that the user can move around in a grid-like area. The camera can also be controlled with the mouse, though the camera will always be looking at the cart, and moving along with it. The cart can be moved with WASD -- A and D change the cart's heading, and W and S move the cart in the direction of the heading. The camera can be controlled by holding down the left mouse button and dragging along the screen (pitch and yaw) or by holding the right mouse button down and moving up and down the screen (zoom).
'I'll take you anywhere!' said the crappy cart. 'No thanks', said I.


Homework 4: Bezier, baby!

This program draws a Bezier curve on the screen using input from any given file. It draws the "cage", or each of the bezier points and the lines connecting them in their specific order, and the curve itself, as well as a sphere that is continually moving along the curve, following the t parameter.

Bezier




Midterm Project: Roller Coaster
Team: David Lopes, Jeremy Vercillo, Joe Fetsch

This project displays a roller coaster on a track. There are three lights set up: The sun, which is a directional light that shines straight down, a strobe light that is emmitted from the center of the front cart of the roller coaster, and a spotlight, which also is emmitted from the center of the front cart and points where the cart is facing. The track is modeled with a series of Bezier curves input from a file. There are three files to choose from (coaster1.csv, coaster2.csv, coaster3.csv) -- each of these files dictates the shape of the coaster track, as well as the location of the scenery objects such as rocks, clouds, and trees.
Bezier
The camera can be panned and rotated, and the user can opt to view a point-of-view or a sky camera in the top right corner. There is also a free camera. These options are detailed in a pop-up menu that can be accessed with a middle mouse click. For more information, see the README.txt file.
Bezier



Homework 5: Particle Systems

This program displays particle systems. The systems are of either rain or fountain type, as specified in the control files. The systems are displayed within a skybox, which is a lovely sea panorama. The fountain type can have a specified cone angle that specifies how wide the spread is. Dimensions can be specified for the cloud type -- particles are randomly generated within this box. If there is a cloud being displayed, the user can move it with W, A, S, D, E, and G. The camera is an arcball and can be controlled with the mouse's right and left buttons.
fount

clerd


HOMEWORK 6: COLLISION GAME
This game is all about sprites. Move mario with the WASD keys and shoot fireballs out of his hands with the spacebar. Defeat all the boos to win! They will start spawning at increasing rates. Don't let them touch you, or you lose. Crates get in your way, but they do not affect the movement of the ghosts. Do not fall off the edge. Ghosts that fall off the edge count as kills for you, so be good at dodging!
The game has an optional skybox, but it runs very laggily with it.
collision


HOMEWORK 7: SHADERS
This program depicts a cat lifting its paw to its mouth. It demonstrates the use of shaders to deform meshes and performing advanced lighting techniques (in this case, cel-shading, or toon shading).
kittyyy kitty!


FINAL PROJECT: THE SINGULARITY
Our final project is meant to be an interactive game. The user controls a singularity that can bring in protons into its orbital by clicking and dragging a box around them. We intended to include options to shoot said protons but were too pressed for time to include them. The objective of the game is to acquire all the protons.
protons!


XC3 : RAYS EVERYWHERE
In this final extra credit, ray tracing was implement upon user command, and the resulting image was texture to the screen on a quad and saved in a file called output.ppm. Rays detect intersection with planes and spheres, and they contain information regarding how to color the pixel they represent (things like surface normals and material colors).
rays!