\( \newcommand{\vecIII}[3]{\left[\begin{array}{c} #1\\\\#2\\\\#3 \end{array}\right]} \newcommand{\vecIV}[4]{\left[\begin{array}{c} #1\\\\#2\\\\#3\\\\#4 \end{array}\right]} \newcommand{\Choose}[2]{ { { #1 }\choose{ #2 } } } \newcommand{\vecII}[2]{\left[\begin{array}{c} #1\\\\#2 \end{array}\right]} \newcommand{\vecIII}[3]{\left[\begin{array}{c} #1\\\\#2\\\\#3 \end{array}\right]} \newcommand{\vecIV}[4]{\left[\begin{array}{c} #1\\\\#2\\\\#3\\\\#4 \end{array}\right]} \newcommand{\matIIxII}[4]{\left[ \begin{array}{cc} #1 & #2 \\\\ #3 & #4 \end{array}\right]} \newcommand{\matIIIxIII}[9]{\left[ \begin{array}{ccc} #1 & #2 & #3 \\\\ #4 & #5 & #6 \\\\ #7 & #8 & #9 \end{array}\right]} \)

CS 307: Computer Graphics

This is the home page for CS307, Computer Graphics. CS307 provides an introduction to fundamental techniques used in computer graphics, with an emphasis on three-dimensional graphics. Topics include the graphics pipeline, modeling geometry including three-dimensional curves and surfaces, projection, coordinate transformation, synthetic camera specification, color, lighting, shading, surface material, texture mapping, hidden surface removal, transparency, animation, and user interaction. Students create web-based computer graphics displays using software that integrates JavaScript, WebGL, and Three.js, and also learn some of the mathematical foundation underlying computer graphics.

A few notes on what this course is not

  • It is not the Arts 313 Virtual Form class, where students use a software package to build 3D models. We do build 3D models, but at a lower level, without GUI assistance.
  • It is not any of the Virtual Reality courses that use the Unity game engine to help us build and view the models, but that requires special software.
  • It is not a (digital) art class. We won't be learning to use Photoshop or similar software.

What this course does is teach you how to program the web browser, using JavaScript, to create complex, 3D models, with lighting, texture-mapping, animation and user interaction in a way that can be delivered in an ordinary web browser. You can put your scenes and animations on your personal web page. You can create interactive games that anyone can play. Past students have, for example, used their CS 307 skills to create chemistry tutors that can be used by high school students who only have a Chromebook with no special software.

We also look deeper at the underlying mathematical techniques for building 3D graphics models. The prerequisite math skills are not a lot: some high-school math such as algebra (linear equations, maybe some cubics), and trigonometry (sines and cosines), and maybe a little calculus (do you know what a derivative is?) We will learn the math that goes beyond that.

The software we build gives us a lot of control and allows the result to run in an ordinary web browser.

The menu bar at the top has links to the syllabus, schedule, and more.