CPSC 424 Computer Graphics Fall 2023

CPSC 424 Course Information

On this page:


Course 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.

By the end of the course, the successful student will be able to:

  • explain the fundamentals of realtime 3D computer graphics in both the fixed polygon pipeline (OpenGL 1.1) and programmable pipeline (OpenGL 2.0) models
  • explain how to achieve photorealistic effects within the polygon pipeline, and the limitations and drawbacks of those methods
  • explain core aspects of geometric modeling, including representation of models, hierarchical modeling, and scene graphs
  • write low-level graphics programs using both the fixed and programmable pipeline (including shaders)
  • use modern high-level APIs and applications at a basic level to create scenes and animations, and build on that knowledge to explore more advanced features of those tools

Specific skills and abilities include:

  • graphics programming using OpenGL 1.1 (JOGL)
  • graphics programming using WebGL, including writing shaders in GLSL
  • graphics programming using three.js
  • modeling and animation using Blender


Prerequisites

CPSC 329 is required.

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 17 (JDK, not JRE)
  • Eclipse (version 2022-06 recommended)
  • Visual Studio Code
  • JOGL
  • WebGL
  • three.js
  • Blender
  • a file transfer program, such as FileZilla

Information will be provided about how to acquire and set up these tools and packages as they are needed.

If you are using a version of Eclipse from March 2022 or later, Java 17 comes bundled so you do not need to download a separate JDK. Otherwise see Getting a JDK for information on obtaining and installing the right packages. (You only need the JDK for this course, not JavaFX.) Use the Adoptium site if you aren't running Linux and using your distribution's package manager; make sure the "Latest LTS Release" references jdk-17.x.

Integrated development environments (IDEs) such as Eclipse make programming easier. Version 2022-06 is installed in the labs and is the recommended version, but probably newer versions will work fine. (If you only have an older version, upgrading is recommended.) See Eclipse IDE for information on how to download the right package for your system.

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

To transfer files between your computer and the Linux machines, download and install FileZilla - download the FileZilla client (choose the appropriate version for your computer). Choose the plain "FileZilla" edition to get the free version ("FileZilla with manual" and FileZilla Pro have more features but cost money).


Assignments and Evaluation

Reading: The textbook, rather than lecture, should be your first exposure to new material. Assigned readings set the stage for class and are to be completed for the class period where they are listed on the schedule page.

Labs: Hands-on practice is essential for learning and mastery, and labs provide an opportunity to apply the material for yourself. Lab sessions will be held on Thursdays in the Rosenberg 009 computer lab. (There will also be a few class periods dedicated to working with particular application programs.) Lab assignments will be posted on the schedule page prior to each lab session. You will generally not be able to complete all of the lab exercises during the lab period and should expect to spend time outside of class finishing them.

Projects: There will be a midterm project partway through the course and a final project due at the end. Projects will be completed outside of class.

Exams: There will be three in-class exams during the semester. There will not be a final exam (the final project takes the place of a final exam) but there will be project presentations during the scheduled final exam time slot and attendance is expected then (just like regular class periods). Dates and times are posted on the schedule page.

Grades: Grades in this course will be computed as follows:

  • Labs: 45%
  • Projects: 25% (midterm project 10%, final project 15%)
  • Exams: 30% (10% each)

If you are concerned about your grade, you are strongly encouraged to come to office hours to get help with any material you may be struggling with. Staying on top of things and seeking help as soon as possible when you need it is the best route to success.

Engagement and Participation: Learning isn't a passive activity where you sit back and watch someone else do things; you need to work with the material by thinking about it, trying to apply it, asking questions about it, and so forth. You are expected to be engaged in the course - this includes being prepared for class by having done the reading, making meaningful contributions to class by asking or answering questions, being on task in class and lab, and coming to office hours. Engagement and participation is not directly factored into the course grade, but a lack of engagement often translates into poorer performance on assignments and exams.

Extra credit: There may be opportunities to earn extra credit on some assignments by going going above and beyond the requirements of the assignment and/or tackling some harder tasks. You are encouraged to take advantage of these opportunities to challenge yourself! No additional extra credit assignments or special extra credit opportunities will be given - the time to worry about your grade is during the term, not at the end.


Time Expectations

You are expected to attend all scheduled class and lab meetings (a total of 4.5 hours per week), and should expect to spend approximately 8-10 hours per week on average (*) on additional work (readings, labs, projects, studying) outside of class. Readings will generally be posted a week or so in advance and you can expect a new lab each week. 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/lab time, and will typically overlap with labs. Dates for the projects and exams can be found on the schedule page.

(*) The assigned work is intended to take about this much time, though your experience may vary - it is certainly easy to get stuck on something that takes a long time to figure out! If you routinely spend substantially more time and you feel like you are spinning your wheels and not making progress, you should visit office hours for help. If you routinely spend much less time, you may not be successfully mastering the material - challenge yourself by doing more than the minimum requirements for an assignment.