CSCI 441 - Computer Graphics

Fall 2021

|     Home   |   Assignments  |   Leaderboard  |   Schedule  |   Resources    |

"The Warrior"


This is the sign for my hero. I created this for the Assignment 1 where we were to make a sign, with a crest from our hometown, and include the hero's name.
My proudest part of this assignment was segmenting my sign methods and letter methods into their own classes.
For the letters, I was also able to simplify them down to 4 registration methods!. Clearly there were many more draw methods but I only had to register 9 vertex buffers for 10 letters, each with multiple pieces needed.


"The Warrior explores his world"


This is my very bland hero created in Assignment 2. This hero can move around the screen with the WASD controls, changing worlds as it reaches the top/bottom/left/right of the screen.
As the mouse is moved around, you can see the hero's eyes follow the mouse pointer, as if its tracking it for a purpose.
Then, when the mouse is clicked, a laser is shot out of the center of it's head, directed where the mouse click was located.
While it is not very clear from simple screenshots, the hero's arms move up and down while the program is running.


"The Warrior's Vehicle Comes to Life"


This is a vehicle created in Assignment 2 to carry my hero around. The car moves using the WASD controls while the camera tracks it.
There are two notable features here, the specular lighting (also known as "shininess"), and the overhead minimap in the top right corner.
As you might expect, as the car moves around, the minimap follows it wile keeping the same forward direction.
A few things not able to be shown by screenshots, the wheels and axels rotate as the user moves the car, and the car is limited to the green platform using "collision detection".


"The Warrior moves to 3D and battles in the Arena"


For the Midterm Project, my fellow teammates and I created an arena, filled with trees.
Inside this arena, are three heroes. The warrior (seen in these photos), Eeyore (seen in the first photo), and a small rotating chair.
You can cycle through each of the heroes to control a different one by pressing the 1-3 number keys.

This program also features 3 different light sources, a point light (Blue), a spotlight (Green), and a directional light (blue). This is why the colors appear so crazy in the first 3 photos. To get an idea of what this scene looks like naturally, the last photo shows all of the lights being set to white.

There are a total of 4 different camera types. Arcball, Free Cam, Sky Cam, and First Person. The Arcball and Free Cameras are primary cameras, the cameras that fill up the main screen.
The Sky Cam and First Person are secondary cameras. These appear in the picture in picture window in the top right (if selected).

Each hero has the ability to implement a few different controls and animation timing options. Each hero has the choice to implement a left click action, an action on start moving, an action while moving, and an action on stop moving.
The Warrior has an idle animation of the head bobbing up and down, a movement animation of moving the legs back and forth (shown in photo 1), a stop moving action which slowly moves the legs back to rest, and a left click action to swing the sword.
Eeyore similarly has an idle animation of head bobbing, a movement animation of rotating its legs, and a click action thats turns the eyes red with rage.
The rotating chair has an idle animation of rotating in a small circle.

Lastly, something not very visible from these photos but still cool, is the trees sway in the breeze, adding an extra layer of realisim to this world. The bricks that make up the arena are also solid and do not let people out.

My proudest parts of this project were, creating a virtual class to allow for easier hero switching and generalization, creating the different camera perspectives and PIP, as well as learning more about GLSL by using a struct and second function in our shader files.


"The world expands and planets enter the picture"


For this assignment I used my warrior model from the midterm project and placed it in a world with swaying trees and a beautiful skybox.
Our requirement for this project was to create a Bézier curve which follows the player around, with an object following the curve.
I decided to make the curve a planatary orbit and to make the object the planet of Mars. I also added a second Bézier curve around Mars to simulate one of it's moons.
Along the way I also decided to add a so called "displcement map" to the objects (Mars and its moon) to simulate the bumpiness of its surface. It isn't that clear from the images but it is there.
As the planets orbit the player they also bob up and down.
Lastly, the final picture shows the Bézier curve itself as well as the cage of control points that make it up, as per the assignment.


"A Christmas Fight"


For this assignment, I used my same warrior model as before but instead of a sword, it is now armed with a torch.
The warrior needs a torch because he is now fighting against snowmen and he must melt them with his torch.
These snowmen follow the player and combine when they get close enough, adding their health and growing in size.
Since the player is melting these snowmen, water errupts when a snowman is killed.
Once all of the snowmen are killed, confetti will stream down, indicating the end of the game.
As you can imagine, I used two computer graphics techniques frquently in this assignment, particles and dynamic light sources.
While not immedietly visible, the end of the torch has a fire effect coming out of it (as you might imagine), and it also gives off some light.
I hoped that I would have had more time for this project but unfortunately I have not.
If I did have more time I was planning on adding a snow particle effect, adding text to the screen and possibly health bars to indicate the game status better,
and add better animations.


"Ridin' the Rails"


For the Final Project, my team and I designed a rollercoaster.
This project had multiple lights, from the moving Sun and a spotlight on the the front of the cart for when it is night time.
There is also a custom path on the ground, following where the rollercoaster goes.
There is also a skybox in the world so it looks more expansive.
The rollercoaster follows the rules of gravity with the player being able to move forward and brake.
The rollercoaster track follows a custom designed Bezier Curve.