# Senior Fall Classes by Danny and Allan G. '20

Better late than never

We didn’t blog about the cool classes we took last semester yet, so we are blogging about them now. This is the second semester when we decided to take 36 units, because we knew that senior fall would be busy with job applications. Looking back, it was definitely the right decision. Anyways, here are the three classes we took!

6.837: Computer Graphics

One of the big reasons we decided to take course 6 classes in the first place was just to work our way up to this class. And after taking it, we can confidently say that the struggle was very worth it! This class covers 5 main areas of computer graphics – splines, character rigging, physically based simulation, ray tracing, and real-time rendering. There is a two-week pset associated with each of these topics, and an open-ended final project where you can choose to focus on any computer graphics related topic! Every assignment was challenging but very rewarding, because it resulted in some sort of 3D art! Here are some of the things we worked on:

Splines

Splines are basically curves. For this assignment we had to write code with a lot of math, that would create splines given a set of points. The next part of the assignment was to write a function that rotated the curve around a vertical axis to a create a 3D model with rotational symmetry like a wine glass or pottery, and another function to rotate a circular spline around another spline to create 3D models that look like puffy outlines. Here are our puffy outlines of the nerdy things we like.

Character Rigging and Mesh Deformation

To create a character, first we had to write code that could create a skeleton out of spheres (for the joints) and cylinders (for the bones), given a set of points defining the location of the joints. Then, we had to hook up the joints to a user interface to get them to move with sliders. Finally, we had to create the mesh by parsing through a file that defined all the vertices, and another file that defined the contribution of motion from all the joints for each vertex.  This assignment was probably one of the most challenging for us, but we got animatable characters out of it! Here is one of them.

Physically Based Simulation

This assignment was probably one of our favorites, which was actually really surprising to us because of how much physics was involved! We had to create a grid of spheres and keep track of all the forces on each sphere. To simulate the cloth, we had to connect the spheres with 3 different grids of springs, and then add gravity, drag, and a wind force. This physics actually made sense, very unlike 8.01L and 8.02, and it was really cool to see the force equations translated into the animation!

Ray Tracing

Ray tracing is a technique to render 3D scenes by shooting out rays of light from the camera that bounce around (if the materials in the scene are reflective) and keeping track of where they intersect objects. The assignment let us create some really cool results!

Non-Photorealistic Rendering

Non-Photorealistic Rendering or NPR is a technique in computer graphics used to render 3D models to look as thought they are 2D drawings. There are a lot different techniques out there, so for our final project, we surveyed a few of them, namely toon shading, outlines, and hatching. Toon shading is a way to get discrete bands of shading on a model, like you see in 2D animated cartoons. Outlines(not shown in the video) is exactly what it sounds like. And hatching is a way to get a model to look as though it was drawn with hatch marks. We actually did not fully implement the hatch marks technique, because it would have been very difficult and outside of the scope of the project, so it does not look as good as it did in the paper we based the implementation on. Instead, we combined the techniques we implemented in different ways. So here is a video showing toon shading, hatching, and the ways we combined them.

Overall, this class was super informative, rewarding, and worthwhile!

21A.502: Fun and Games: Cross-Cultural Perspectives