Computer Graphics

SOS Computer Graphics with OpenGL, Spring 2014

Note:  Handouts, Lectures and Labs can be found on the Fileshare!

This course is an introduction to 3D computer graphics programming. It begins with a short unit on ray-tracing followed by an in-depth exploration of OpenGL and GLSL. Topics include ray tracing, the 3D rendering pipeline, geometric transformations, modeling, scene graphs, graphics data structures, lighting & shading, textures, and shaders. Extensive programming in C++ and OpenGL will be required.  We also highly recommend that you use an IDE; we will use Visual Studio in lab.

Wednesdays 10-12, Lecture:  Sem 2 E 1105.  Please complete weekly reading and any assigned problems for this.

Thursdays 9-12, Quiz, followed by Lab:  Lib 2612.  Please complete the programming  assignment from the prior week by this time.  Please be ON TIME.  You will not be able to take the quiz until the following week if you are not on time.  If performance on the quizzes is satisfactory we will NOT have midterm or final exams, but only slightly longer problem sets and quizzes in weeks 5 and 9.

TextInteractive Computer Graphics: A Top-Down Approach Using OpenGL, 6th Edition, Edward Angel, Addison-Wesley; 6th edition (April 10, 2011).  Electronic version of the book available for $50

Other resources:  To complete the programming for this course, you will need to either use the facilities in the Lab or install on your own machine:

  1. a C++ compiler, Open GL, GLUT, GLEW.  See “Obtaining OpenGL
  2. highly recommended:   an IDE, such as Eclipse or Visual Studio.  At the dreamspark.com student signup page you (as a full time student) can sign up through your student email, and  download available software from the student software catalog, and get the full version FREE.
  3. on-line OpenGL documentation:  opengl.org/documentation

  4. OpenGL Tutorials and Demos.  There are many tutorials online.  Nate Robbins’ tutorials (according to Matt Evett at Eastern U. Mich) are worth looking at, especially those illustrating “basic OpenGL stuff such as lighting, transformations, and textures.

Prerequisites:

  1. Reasonable proficiency in C++
  2. Willingness to review some linear algebra, e.g., CSCUs Vector Math for 3D Computer Graphics, Wolfram Math World Tutorial (e.g., on Vectors).

Learning Objectives:

  1. Achieve proficiency in Computer Science skills: graphics programming, computer graphics theory, vector & matrix algebra.
  2. Demonstrate the ability to communicate through presentation and discussion of your work.
  3. Demonstrate the ability to work effectively as part of a team.
  4. Demonstrate the ability to work independently to analyze and solve problems.
  5. Become familiar with some computer graphics research and scientific visualization community.

Assignments:  Lab (programming) assignments will be assigned approximately every 1-2 weeks. Partial instructions and due dates will be posted online, however, some instructions (and resources) will be given in class on the day the assignment is assigned. If you are absent that day, it is your responsibility to get this material as soon as possible either from the instructor or classmate. It is strongly recommended that you start the assignments early if you want to be certain of finishing on time. Starting the night before the due date will mean 1) you probably won’t have enough time to finish, 2) you will be up all night, 3) you won’t be able to get help from the instructor and 4) the instructor will have little sympathy.

If you must miss class on the day the assignment is due, you are still expected to turn in the assignment electronically by the due date. If you are physically unable to do this, e.g., due to significant illness, then please email me as soon as possible to arrange a makeup schedule. If a presentation is part of the assignment, you will be asked to present as soon as you return to class.

Late assignments are problematic for several reasons. First, it is difficult to catch up once you are behind. Second, you won’t be able to contribute to the class discussion and assignment review. For these reasons – don’t be late! The best way to avoid lateness is to start the assignment early and seek help when you have problems. To provide a strong incentive to get assignments done on time, we will NOT be able to grade late assignments, but we will note that you handed it in.

Evaluation:  There will be weekly short quizzes, but NO midterm or final IF performance on the quizzes (and labs) is satisfactory.  I will base your evaluation on the labs and in-class demo’s and exercises (~50-60%), weekly quizzes (~15%), week 5 and 9 quizzes and problem set (~20%).   I will note in your evaluation your attendance record (lectures and labs).  Lab attendance will be taken by your taking the quiz in lab.

Plagiarism and Cheating:  If you do a search on the web or look in books, you will find a significant amount of information and code available. You are not to use this material without explicitly stating that you have used it;  it would be best to get permission from instructor. The purpose of this class is for you to learn the concepts and coding. Copying material from other sources defeats this purpose.

In the context of this class, plagiarism is defined as representing someone else’s work as your own. Cheating is defined as violating stated rules for an exam or an assignment. Plagiarized work could be grounds for us to ask you to leave the program, the course, to include the charge in your evaluation, or to loose credit for a plagiarized assignment.  It’s not worth it.Ratanasanpunth and Ron Metoyer, Oregon State University, and Nik Molnar (Conservation Biology Institute) for generous advice.  Ed Angel has also been very responsive to questions.   We all owe Dani Witherspoon thanks for serving as teaching assistant for this course; go Girl! We also need to thank Hao Nguyen for his math support, and Isaac Goodfellow who is working with Dani on refining the labs and assignments for our environment!