CSCI 441 - Computer Graphics

Fall 2023

|     Home   |   Assignments  |   Leaderboard  |   Schedule  |   Resources    |

Szeth-son-son-Vallano

L00: The Hero's Hometown


Szeth-son-son-Vallano, also known as the Assassin in White, is a fictional character in the Stormlight Archive epic fantasy series written by Brandon Sanderson. He is from the country Shinovar on the world Roshar. The Valley of Truth is mentioned in his backstory, and the above image is my depiction of what the Valley of Truth looks like. I used triangle fans to make the hills appear round, and modified how many triangles I wanted to draw to increase or decrease the smoothness of the hills. I also hardcoded a depth for each hill, and used linear interpolation along with the depth value to determine the steepness and color of each hill.

A1: Hoist Your Sign


I spent much longer on this assignment than I should have, but the end result is pretty cool. The emblem on the right side of the banner is actually the House Kholin emblem; I chose to use this because Szeth and his people (the Shin) are very mysterious and little is known about them; I will not go into detail about other reasons for choosing this, as they would spoil a major part of the series. I implemented the designs on the emblem by loading in point coordinates from text files, and then manually finding an arrangment of vertices that would triangulate the outline -- I am sure there is a better method for doing this, which we will probably learn soon. The letters are built completely from equilateral triangles, arranged in an isometric fashion, and their are color and scale gradients from the top left of the name to the bottom right.

L02: Flight Simulator


In this lab, we learned how to implement a Free Cam and utilize it in a 3D world. The free cam technique allows the user to move forward and backward along the camera's look-at direction, and also change the camera's pitch and yaw angles. The vector math to make this happen wasn't as crazy as I expected, although I am very glad that the really ugly linear algebra is encapsulated within GLM's lookAt() method. Once all of the attributes and methods are in place, it's as simple as incrementing the camera's position/view angles whenever the right keys are pressed!

A2: An Unexpected Journey


I once again spent wayyyy longer on this assignment than I should have, but the end result is super awesome and I'm really happy with what I was able to do. In the series, Szeth's name is the Assassin in White and he is described as wearing all white the few times that he is spotted. He also carries with him a magical sword from a different world within the Cosmere, whose name is Nightblood. The sword is all black and black mist swirls around it whenever it is unsheathed. I was able to create this effect by randomly creating triangles along the blade of the sword and giving them a random grayscale color/speed/rotation, and then having them slowly fade away as they move. The sword was easily the hardest component to draw/triangulate, but it is the star of this assignment in my opinion. I implemented WASD movement as required, and also implemented what I like to call a lashing: clicking the left mouse button while holding down F causes Szeth to "fly" to the mouse click. The sword can also be rotated/swung by holding and dragging the left mouse button.

A3: The Cabin in the Woods


This assignment was a bit rough... I spent a lot of time trying to learn how to use Blender, in order to build a model for my character and export it as a Wavefront OBJ file. I did eventually manage to do this, but built it as one large model (rather than hierarchically building body parts), which means that the entire character is one color -- not ideal. Some bright spots are that all of the implementation went very smoothly, and I also got to experiment with viewports as well. Hopefully I am able to come back to this assignment further down the road, and knock out some of the optional achievements.

MP: The Fellowship


This is definitely the coolest assignment we've done so far... it was awesome seeing all of the components come together into one final product. Taylor and James both worked their butts off to create the lighthouse and other components of the world, and we also were able to make a fly-through video of the world and implement some pretty sick shading (there's a spotlight circling around the lighthouse which looks epic!).

A4: Off to Never Never Land


I love this screenshot because it showcases everything that made A4 super cool. First off, there's the dagger that I built from 3D primitives which perpetually circles around my hero as it flies along its Bezier Curve. Then there's the rolling hills of the environment that I created out of a Bezier Surface, and used as a ground plane for all of the other objects in the world. And lastly, the mountains in the distance showcase the skybox that I created which also demonstrated my understanding of texture shaders!

A5: The Minion Horde


This goal of this program was to learn how to use particle systems as well as collision detection. I expanded off of A4 by making a game where the hero is in the enemy's lair, and must go to every cabin and blow it up (by touching it). Each of these will grant a small speed boost. The enemies will not let the hero go easily, though; they are programmed to always correct their heading towards the hero, and if they reach the hero the hero will die (turn red). The enemies will bounce off walls and each other, and if they are hit by the hero's dagger (travelling along the Bezier curve from A4, they are "killed" and sent back to their spawn position. Finally, if the hero steps off of the map (Bezier Surface), they will fall to their death. The user knows the game is won when all of the cabins are blown up, the hero turns green, and the enemies disappear.

FP: There and Back Again


This project was a ton of fun and was a great way to showcase everything we've learned all semester! Our lighthouses look fantastic and are the source of spotlights that periodically light up the bridge that the hero must cross, and the raging ocean beneath the bridge is textured and 3D -- A Bezier Surface that moves and looks like waves. Additionally, the spooky moon in the background is the source of a small amount of directional light which gradually changes to a red tint as the hero progresses. This was a super fun project and I got to do it with fantastic teammates!