Skip to content

Latest commit

 

History

History
63 lines (47 loc) · 5.24 KB

15462.md

File metadata and controls

63 lines (47 loc) · 5.24 KB

15462 Computer Graphics

Category Difficulty
Exams 6-7
Labs 8
Homework 4-6
This course is an introduction to computer graphics, covering many of the concepts central to computer graphics and rendering, including rasterization, meshes, ray tracing and animation. It is taught in C++ and is mostly lab-based, with the labs usually taking up more than 60% of the grade and requiring significant implementation effort. The prerequisites are 15-213, 21-259 and 21-241, or 18-213 and 18-202.

This course is a typical starting point for anyone interested in the computer graphics concentration in SCS, and is a great class for anyone interested in graphics, animation or game development. You can expect to build a solid technical foundation for computer graphics suitable for anything from game development to GPU hardware, put an impressive semester-long project on your resume, and improve your C++ programming skills dramatically.

Topics Covered

  • Rasterization and Sampling
  • Spatial Transformations
  • Perspective Projection
  • Texture Mapping
  • Depth and Transparency
  • Meshes and Manifolds
  • Spatial Data Structures
  • Color and Radiometry
  • The Rendering Equation
  • Monte Carlo Rendering
  • Dynamics and Time Integration
  • Physics-Based Animation and PDEs

What to expect

  • Lectures: The lectures are sometimes run in a traditional way and sometimes in the "inverted classroom" method where you are assigned videos to watch before the class, with class time used to discuss material and ask questions. In either case, the lectures cover a lot of content and are generally fast-paced, so frequent reviewing and revisiting old content is very helpful, especially since concepts in computer graphics can be very unintuitive or require a lot of time to understand.

  • Labs: This part of the course is the most important. Throughout the semester, there is be a sequence of 4 labs, each focusing on a different part of computer graphics and all implementing part of a 3D modelling program called Scotty3D. Usually, the labs cover the following:

    1. DrawSVG/Rasterizer: Transforms, rasterizing triangles, sampling and interpolation
    2. MeshEdit: Manipulating meshes through the halfedge mesh data structure
    3. PathTracer: BVH, ray tracing, materials and BRDFs, Monte Carlo rendering
    4. Animation: Spline interpolation, forward and inverse kinematics, skinning, particles and keyframe-based animation

    Each of the labs has a checkpoint and a final submission, where the checkpoint requires to implement a subset of the required features in the program. As part of each final submission, you will also be required to submit something that you make using your own code. Cool submissions will be compiled and featured on the course website or YouTube.

  • Exams: There are 2 exams, one midterm and one final. Although the percentage of the final grade can vary, the exams usually take up around 20% of the course grade, and are meant more as a knowledge check.

  • Homework: There will be a linear algebra and calculus review worth a lab grade at the beginning of the semester to help you review concepts that are needed in this course. In some years, there may be other homeworks that are assigned, for a small portion of the grade. These are typically not very difficult.

How to do well

  • Make sure you are up to speed in linear algebra and calculus. You will need to exercise these skills very often, and even implement them in your code.
  • Make sure that your programming skills are not rusty. This class uses C++ and relies on object-oriented programming a great deal, and your labs will not only have to be correct, but have good performance. It is helpful to learn a bit of C++ before the semester starts.
  • Labs require a lot of effort and often more than they seem, which may easily catch one off guard. Make sure to start early, and do more than the bare minimum at a checkpoint submission. This will not only help you avoid the stress and danger of last-minute debugging, but also help you avoid the OH queue times near the deadline.
  • Most labs have extra credit options, and some are not very difficult. Try to attempt them, as they are a great way to boost your grade, learn more about course concepts, and fuel your curiosity in computer graphics. Using extra credit, some people can manage to finish the course with a more than 100% average.
  • If you have no experience in 3D modelling, learning a bit about it could help immensely in the course and the labs, especially understanding the "what" and "why" of the concepts you are implementing. Blender is a good place to start.

Recommended subsequent courses

  • 15-458 Discrete Differential Geometry
  • 15-464 Technical Animation
  • 15-466 Computer Game Programming
  • 15-468 Physics-based Rendering

Resources