CS184/284A Project Webpages

This course provides a broad introduction to the fundamentals of computer graphics. The main areas covered are modeling, rendering, animation and imaging. Topics include 2D and 3D transformations, drawing to raster displays, sampling, texturing, antialiasing, geometric modeling, ray tracing and global illumination, animation, cameras, image processing and computational imaging. There will be an emphasis on mathematical and geometric aspects of graphics, and the ability to write complete 3D graphics programs.

Project 1: Rasterizer
This project involves many tools required to rasterize images in order to render vector graphics. We begin with rendering shapes as simple triangles, supersampling for antialiasing, and transforming these triangles. The project also includes sampling and using Barycentric coordinates for texture mapping. We have implemented bilinear and trilinear sampling.

Project 2: MeshEdit
Often objects are graphically modelled as a mesh. In this project we explore how we can represent a mesh using the Half Edge data structure, and develop many tools to edit mesh structures such as splitting, flipping and subdividing meshes. We also look at Bezier curves and how we can evaluate them using de Casteljau's methods. This project was especially interesting because it provided a deeper look into the geometry of shapes, and was a good insight into how many object modelling tools work today.

Project 3-1

Project 3-2
PathTracer 1 and Pathtracer 2: We build a pathtracing algorithm to render scenes with physical lighting. In part 2, we extend this in order to account for various types of materials, lighting and depth of field camera effects. This allows us to render much more interesting images. We will discuss adding reflection and refraction for glass and mirror materials, implementation of a microfacet model, and adding a depth of field effect using the thin lens model.

Project 4
Cloth Sim: This project involves building a physical simulator for a cloth model. This model is interesting because a cloth is not a rigid object. We model the cloth using springs and add forces and collision constraints to the model. We also build a simulator to animate the object. At the end of the project, we implement various shaders using GLSL.

Final Project
In this project, we create a candle fire simulation based on the Navier Stokes equation for fluid dynamics and shaders implemented with webGL. Fire simulation is vastly different from rendering solid objects due to its irregular behavior and sensitive response to air movement. Thus, a separate physics engine needs to be implemented along with appropriate lighting for a fire to appear realistic. There are a lot of popular and existing means of stimulating fire.