CPSC 424 Computer Graphics Fall 2019

CPSC 424 Course Information

On this page:


Course Description and Objectives

Catalogue description:

This course studies the principles underlying the generation and display of 3D computer graphics. Topics include geometric modeling, 3D viewing and projection, lighting and shading, color, and the use of one or more technologies and packages such as WebGL, OpenGL, and Blender. Advanced topics might include ray tracing, global illumination, texture- and bump-mapping, the mathematics of curves and surfaces, volumetric rendering, and animation.

Prerequisites

CPSC 329 is required (corequisite OK, with instructor permission).
Programming in this course will be done in Java, JavaScript, and GLSL, with a little bit of C needed to understand the OpenGL API. Students are expected to be comfortable with Java syntax and semantics, the concepts of object-oriented programming (including classes, objects, interfaces, inheritance, and abstract classes), writing programs to solve problems, and how to use the Java API documentation. JavaScript, C, and GLSL will be introduced in the course; it is expected that students are comfortable enough with core constructs (variables, loops, conditionals, arrays, subroutines) to be able to pick up the key elements of these new languages.


Textbook

We will be using Professor Eck's Introduction to Computer Graphics, a free online textbook. It is possible to download a PDF or order a printed version of the book if desired. (Please do not print chunks of the book on the department printers.)


Software

All of the software needed for this course is available on the Linux machines in Lansing 310 and Rosenberg 009. If you want to set up your own computer so that you can work on projects without going to one of the labs, you will need:

  • Java 8 (JDK, not JRE)
  • Eclipse 2019-06 (recommended)
  • a text editor, such as Komodo Edit or atom
  • JOGL
  • WebGL
  • three.js
  • Blender
  • a file transfer program

Note that you do not need all of these things at once at the beginning of the semester; it is fine to wait and install packages as we get to that material in the course.

For Java 8, see Getting JDK and JavaFX for information on obtaining and installing the right packages. (You only need the JDK for this course, not JavaFX.) The AdoptOpenJDK site is recommended if you aren't running Linux and installing through your distribution's package manager.

Integrated development environments (IDEs) such as Eclipse make programming easier. The latest version of Eclipse (2019-06) is recommended and can be downloaded here - select either the "Eclipse Installer" at the top of the page or the "Eclipse IDE for Java Developers" version partway down the page and choose the appropriate version for your computer (Mac, Windows, or Linux).

Some Eclipse setup will be done in lab. You will need to carry out the same steps to configure your own installation.

For JavaScript and C programming, you will need a text editor. (Alternatively, Eclipse can be set up for these languages.) Komodo Edit is available for all platforms (Windows, Mac, Linux), while Atom only seems to be available for Linux.

The Using JOGL section in the text covers how to obtain the JOGL libraries and how to set up Eclipse to work with JOGL. Getting the JOGL files from Professor Eck's website is simpler than navigating the JOGL website to find the appropriate download.

WebGL 1.0 is supported by most major web browsers, so you just need to make sure that you have a recent version of Chrome, Firefox, Internet Explorer, Opera, or Safari. (This chart gives more specific compatibility information.) How to obtain three.js, a JavaScript library for 3D graphics, is addressed in Three.js Basics.

Acquiring Blender is addressed in Blender: A 3D Modeling Program. The current version is 2.79.

Finally, you will need a way to transfer files between your computer and the department filesystem. Using a file transfer program is more convenient solution than emailing files to yourself; see the SFTP section of "Using Linux at HWS" provides information on obtaining software to do this.


Time Required

Mastering the material necessarily means working with it, and a certain amount of independent learning is expected - this means doing the assigned reading (before class!) but also that you should expect to need to spend some time picking up details of things on your own.

Coursework will primarily take the form of readings, weekly labs, and two projects (a midterm project and a final project). The lab period will provide time to get started on each lab, but you should expect to spend time outside of lab to complete the assignment. Projects will be completed outside of class time, and there will generally also be new lab assignments while you are working on a project.


Valid HTML 4.01!