CMPSC 458: Fundamentals of Computer Graphics
This course
challenges students to learn the approaches and mathematical techniques
that allow a computer to digitally render a scene, as well as advanced
methods of image analysis yielding more realistic textures and
environments. Topics include transformation, projection, illumination models, shading, hidden lines/surface elimination, viewing, color, raytracing, physics-base graphics, and image based redering, in particular image-based texture synthesis.
Textbook: Fundamentals of Computer Graphics by Shirley Marschner et al.
The course
includes four projects:
- Heightmap:
An image serves as the heightmap for a virtual terrain. Students
use OpenGL to render the surface of the terrain in an interactive
window allowing real-time movement, camera rotation, and terrain
scaling.
- Rollercoaster:
Catmull-Rom splines are used to interpolate between points in a
provided text file. Students use OpenGL to dynamically build a
rollercoaster and render physically-accurate camera movement along
the track to match any provided series of control points.
- Raytracer:
Students need a strong understanding of 3D geometry and
object-oriented programming to create a program which renders a
scene with accurate shadows, reflections, refractions, material
properties, and texture mapping given a text file describing the
positions and properties of lights, triangles, spheres, and the
camera in a scene. OpenGL is not used; raytracing is done with
mathematical operations and object-oriented techniques alone.
- Texture
Synthesis: Many applications simply tile an input texture to cover
a larger area, but many techniques exist which provide more
realistic results, generating larger textures that look as if they
are made of the same material as the input. Students will read
leading research papers in this field and either implement one of
they methods they like or develop a method of their own.
- Motion
Animation: Since the fall of 2015, we have allowed students to implement
a project based on motion capture data obtained from LPAC's
Motion Capture (MoCap) lab. The goal is to create an animated actor
with proper characterization, background textures and lighting that
is mapped to the MoCap data. This project is an alternative option to the Texture Synthesis project.
|