Main menu

Computer Graphics

This was a class I took at Carnegie Mellon University in Spring 2012.

It was a standard graphics class, but I definitely learn a lot from it - much of it being outside the domain of the class itself. We learnt to code within a large and complex code-base, some basics about efficient programming and (almost) real world application of many C++ concepts I had learnt many times in school, and the brought the vector math and linear algebra I had learn a few years ago back into focus. It also exposed me to some of the research in areas I am still interested in - specifically animation technology.

 

Simple Physics Engine

This was the final project of our graphics class, and was a bit of a departure from the other projects. In this project, we were required to create a basic physics engine. We were required to write an RK4 integrator that could handle simple forces, as well as torque and angular momentum using quaternions. In addition, we were to implement collision detection and response, damping, spring forces, and putting them all together. It was definitely my favorite computer science project.

 

 

Ray Tracer

In this project, we were required to implement a ray tracer that could render a scene, with direct illumination, specular reflections, refraction and the fresnel effect. This was probably the most challenging assignment in the class, and also probably the one that taught me the most about programming in general.

 

 

 

Loop Subdivision

In this project, we were to implement the loop mesh subdivision algorithm. The goal was to render a mesh with its assocated texture, then subdivide the mesh iteratively using the loop subdivision algorithm. The focus was on writing an implementation that was fast enough to successfully subdivide as many iterations as possible, and we were judged both on how many iterations could be achieved, as well as how fast the program ran.

 

Before subdivisionBunny - after 5 subdivisions