Caleb Edwards's CSCI441 Portfolio

Fall 2021

|     Home   |   About   |   My Github   |   My Github.io    |

Final Project - The Journey Home

My Way Or The Highway: (Not) Rainbow Road
Please don't come after me, Nintendo.

The Final Project. I'd like to thank my group members: Ryan/Chief, Gus/Asger, Emma/Lotuim.

We made a not-inspired-by-Nintendo-at-all version of Rainbow Road.

The player controls the (modeled by yours truly) Toyota Trueno AE86, with improved driving mechanics.

The road is rainbow textured, dynamically controlled by an input file via Bezier curves, illuminated by dynamic headlights emminating from the vehicle. The vehicle itself is illuminated by an invisibile light positioned by a combination of the camera and vehicle. Exhaust particles blow out the back end. One slip-up and the player falls spiraling down into the void, where a snappy animation hides them being reset back to the track center. Also a minimap. There's even bright headlights which can be toggled on/off.

Did I mention there's metallic gold rims? Pimped.

The combination of all these elements lend to a result I'm truly proud of.






A5 -Let The Games Begin

Evil-Marble-Collision-Avoider Tokyo Drift Edition *With Vehicle Exhaust System*

A small game built upon many previous labs an assignments with plenty of new features.

Notable novelties include a vehicle exhaust system, collision system,
and modest understeer/oversteer/traction mechanics.

The player begins with 3 lives--think of them like a shield.
Colliding with marbles (that seek and move towards the player) takes away a life.
Get hit with no lives and lose! Evil Marbles gain speed over time creating a progressive challenge.

Also, fall off the grid and lose (with a small animation).
Upon losing (from evil marbles or falling to your demise), the game resets.




A4 - Off To Never Ever Land

Skyboxes and Bezier Curves
This assignment involved implementing skyboxes for the first time and Bezier curves to a greater extent.

A control point file is read in and processed with the end goal of rendering/using a curve.
A "control cage" is generated (rendered in yellow) as well as the curve itself (blue).
Then an object can be made to travel along the curve either in 2 ways:
(1) An arc-length parameterized manner.
(2) Equal parameter steps.

In the future, this will likely be useful for directed particle systems!
It also helps I did a major refactor on the AE86!




A3 - To The Arena

This was the biggest assignment yet: Over 1000 lines of C++/OpenGl + GLSl.
For this assigment, I chose to model a Toyota Trueno AE86 in blender.
This model served as the basis for the assignment and enabled me to explore the following in-depth:

3D modeling in Blender, Directional lighting, materials (color + emission), animation, and collisons.

Additionally, the vehicle drives as expected: the wheels move in the direction they're pointing.




Lab 05 - Flight Simulator

Despite the name, this lab did not involve implementing anything that flies.
That part was given.
Rather, this lab focused on implementing directional lighting with fragment normals and normal matrices.




Lab 04 - Vertex & Fragment Shaders

In Lab 04, I implemented a vertex and fragment shader to color some models.
This lab serves as an introduction to glsl shaders.
As such, color was computed as a function of vertex position in world space!




Lab 03 - VAOs & VBOs

This lab required me to implement parts of a dynamic MD5 model library.
This library was then used to render a 3D MD5 model using OpenGl.
To succeed, implementation of Vertex Array Objects, Vertex Buffer Objects,
and Index Buffer Objects was required.




A2 - An Unexpected Journey

The Hero Bones received an avatar and a world in this assignment.
A skull head, red cloak, and two floating hands.
Not to forget a cursor-targeting particle beam.




Lab 02 - Flight Simulator

This lab was an introduction to the 3D rendering pipeline in OpenGL. The program alllowed
the user to "pilot" a Free Cam using keyboard + mouse controls.




A1 - Bones The Hero

This assignment involved drawing letters using rotation, translation, and scaling in OpenGL.
Additionally, this website's creation was a part of A1.




Lab 01 - Evil Triforce

This lab demonstrated OpenGL event callback functionality.
The Triforce on screen follows the mouse, responds to mouse inputs, and the window closes on pressing 'c'.



Lab 00 - Can You Triforce?

Part A shows the triforce, Part B is a picture of my hero Bones's hometown "Just down the road a little bit".