CSCI 441 - Computer Graphics

Fall 2020

|     Home   |   Assignments  |   Leaderboard  |   Schedule  |   Resources    |

Marigorudo





This is a snapshot of our first animation project. The 'hero' constantly bobs back and forth. The 'hero' also responds to keyboard and mouse input so that the user can move her around and cause her to pick up or drop a flower.


Side Quest 1: 2D Video Game. In this game (Bubble Filler), the user can create bubbles on the screen by clicking and holding the mouse. The longer the mouse is held, the larger the bubble. After releasing, the bubble begins to move around the screen, bouncing off of the walls and any other bubbles. The aim is to fill as much of the screen with bubbles as possible; however, if the bubble currently being made touches a wall or another bubble, then the player has lost. After playing, the area covered by the user is displayed and the user may choose to play again by pressing the space bar. This game requires very simple graphics, but a significant amount of thought went into the bounds and collision detection code, as well as the best method for dynamically creating circles according to user input.
Assignment 3: The Main Attraction. The goal of this assignment was to development an arcball camera alongside a 3D animated character or vehicle, and to explore additional camera views and viewport implementation. My 'vehicle' is a pogo stick, which bounces when idle and 'hops' around the screen according to user input. By default, the primary view is an arcball camera and the 'minimap' in the top-right corner is a first person camera. The user also has access to a sky-cam and can toggle both the main and mini views between the three available cameras.

Midterm Project: Enter the Park. This assignment was completed alongside two other heros, Wytawik and Giorno Giovanna. This project involved implementning a complete custom vertex/fragment shader program alongside the character and scene models (image #1). The lighting calculations in the vertex shader involved a full Phong Illumination model for a directional light, a spot light, and a point light (image #2), using the Blinn-Phong approximation for the specular component. Additionally, we implemented an arcball camera, a free cam, and a first-person cam. The user may toggle between camera views, with the first-person camera displaying as a minimap, and may toggle between characters as they move about the scene.

A4: Light Up the Night.

This assignment starts roughly where A3 ends, but additionally implements a custom shader using the full Phong light model with Gourad shading for three distinct point lights. The point lights are red, green, and blue and arranged in roughly a triangle. The above two images show the overall scene and the pogostick within the scene.

Additionally, notice that the cones in the scene have a somewhat "spectral" appearance. This is accomplished using the fragment shader to decrease the opacity for fragments that are not strongly lit (i.e., the back portions of cones that do not receive a significant amount of light from any of the three lights).

The next three images show the lights toggled on and off. In order, they show the red and green light; the green and blue light; and the blue and red light toggled on. These images display both the additive nature of the light calculations as well as the attenuation applied to each point light.


A5: Sell Out

This assignment started where A4 left off. It places the entire world in a textured skybox and features a 'mascot' - here suzanne the monkey - running around our character. The animation for the mascot is controlled using a bezier curve generated from control points read in from an external file. The control points, control cage, and curve are displayed in this screenshot but can be toggled on and off if the user wants.


A6: Fireworks Show

This assignment worked with particle systems to simulate a fountain / firework effect. The initial configuration for the scene was read in from a control file. The particle system continues for some time, with gravity acting on each particle, until the fountain naturally fizzles out on its own.

Additionally, the user may spontaneously create fountains at their current location with user input.


A7: Avoid the Park Mascots


This assignment is a simple 3D game featuring basic collision detection. Upon colliding with the user character, the enemies can push the character off the edge of the world grid. Upon colliding with each other, the enemies form a 'stack'.


The stacked enemies can be seen above. Additionally, the user can interact with the enemies to 'pacify' them, turning them from red to yellow (also seen here).


Final Project: Reopen the Park

This final project was a simple maze game featuring two animated people. The goal is to control both characters to meet in the middle of the maze. The shot above is player 1's starting position in the maze.

Additionally, there were 'switches' scattered throughout the maze that controlled colored walls in the maze. These walls were blocking the path to the center, so some teamwork between the two characters is needed to get to the middle of the maze. When a switch is activated, the screen flashes the color of the switch momentarily to inform the player.

A top down view of the maze is accessible to aid in solving the maze. Note the bright green block on the right; this is one of the switched walls described above.

Lastly, we applied a noise function in the post processing shader to obtain the effect in the first two images. Although of course static in a screenshot, this efect is actually dynamic and changes 'randomly' over time. The strength of the effect is controlled by the player's distance from the center of the maze. When at the center, the noise is nearly or completely imperceptible, as in the last shot.