ECSE-4750 Computer Graphics, Fall 2007, W. Randolph Franklin
Rensselaer Polytechnic Institute, Troy NY USA
(:nogroup:)
Final exam assists:
The exam
- Wed 12/12 3-6 pm in JEC5119
- Allowed: books, xeroxes, notes, papers
- Not allowed: computers, calculators, communication devices, sharing with other students during the exam
- The exam
Open hours before final exam
- Mon 12/10: Jon will be in JEC6204 from 3 to 6 pm.
- Tues 12/11: WRF will be in JEC3205 from 4 to 5.
- Wed 12/12: Jon will be in JEC6204 from 11am to 2pm.
Old exams
(:showhide div=syl init=hide lshow='Show Syllabus' :)
Syllabus
ECSE-4750 Computer Graphics
Electrical, Computer, and Systems Engineering Dept.
Rensselaer Polytechnic Institute
Troy NY 12180 USA
Fall 2007
Updated Catalog Description
ECSE-4750 Computer Graphics
Introduction to Interactive Computer Graphics, with an emphasis on applications programming. Objects and viewers, and the synthetic camera model. Graphics architectures, the graphics pipeline, clipping, rasterization, and programmable shaders. Input and interaction. Geometric objects, homogeneous coordinates, and transformations. Viewing, hidden surface removal, frame and depth buffers, compositing, and anti-aliasing. Shading, light and materials, texture mapping, ray tracing, and radiosity. Intellectual property concerns. Extensive programming with the OpenGL API and C++. Prerequisite: ECSE-2610 or equivalent. Fall term annually. 3 credit hours
Course Objectives
- to learn the principles and commonly used techniques of computer graphics
- to develop a facility with the relevant mathematics
- to gain an introductory proficiency with OpenGL, one of the most widely used APIs.
Why Take This Course?
- Graphics is fun. It's got a history, since it is a takeoff from geometry, which is at least 2500 years old. There are pretty pictures involved. It's based on state-of-the-art hardware.
- It has applications, and is tied into the real world, and is not just theoretical.
- Nevertheless, it's not just practical stuff with no depth, but has some theory and math also.
- It teaches practical knowledge, e.g., OpenGL that can lead directly to a job.
Why Not To Take This Course
- You don't like programming.
- You don't like documenting your programs.
- You don't like math.
- You don't like reading.
- You don't like writing exams at the official scheduled times.
Prerequisites
This is a senior CSYS course, and assumes a moderate computer maturity, represented in the catalog by ECSE-2610 (Computer Components & Operations). You should know some HW, but if you don't have that specific course, don't worry.
Since there is programming in C or C++, you also must know some high level language, which you can translate into a knowledge of some C. If you don't know what a pointer is, then drop this course and take Computing Languages first. A good review book on C is Kelley & Pohl, A Book on C.
Computer Graphics also assumes that you know, or be able to learn, some basic linear algebra, up to the level of what an eigenvalue is.
If you're uncertain about taking this course, then, by all means, talk to me, or to previous people in it. If there is one specific fact that is unfamiliar, such as eigenvalue, then there's no problem at all.
Professor
W. Randolph Franklin. BSc (Toronto), AM, PhD (Harvard)
I've been doing graphics related programming since the 1960s, and have been teaching versions of this course since 1982. I've been at RPI since 1978, apart from several absences, including a year at Berkeley, 3 months at Genoa, and shorter times at Laval University in Quebec City, the Commonwealth Scientific and Industrial Research Organization in Canberra, and the National University of Singapore. I also spent 2 years 7 months as Director of the Numeric, Symbolic, and Geometric Computation Program at the [[http://www.nsf.gov/|National Science Foundation]], recommending how to spend your tax dollars (thanks!).
My current research on representing terrain, is largely supported by the Defense Science Office of the Defense Advanced Research Projects Agency. DARPA people are crazy. My main worry is that I'm not crazy enough for them.
- Office
- Jonsson Engineering Center (JEC) 6026
- Phone
- (518) 276-6077
- wrfATecseDOTrpiDOTedu, making the obvious substitutions.
- Web
- http://www.ecse.rpi.edu/Homepages/wrf/
- Office hours
- after each lecture. Usually I stay as long as anyone wants to talk.
- Preferred communication medium
Course Homepage
http://www.ecse.rpi.edu/Homepages/wrf/pmwiki/ComputerGraphicsFall2007
Reading Material
Textbooks
As listed on the RPI Bookstore site:
ECSE - 4750 - 01 - TROY COMPUTER GRAPHICS INTERACTIVE COMPUTER GRAPHICS...OPENGL 9780321321374 Author: ANGEL Edition: 4TH Pub: AW Req / Opt: R New Price: $106.25 Used Price: $79.75 ECSE - 4750 - 01 - TROY COMPUTER GRAPHICS OPENGL SUPER BIBLE WCD 0-321-49882-8 Author: WRIGHT Edition: 4TH Pub: PH Req / Opt: O New Price: $59.99 Used Price: $45.00
Angel's web site for his text is here.
There are also several other good OpenGL books, if you have the money. One good (and cheap) one is:
OpenGL : A Primer (2nd Edition) (Paperback) by Edward Angel.
My Notes on Various Graphics Topics
I've prepared web notes on some topics that I think I describe better than the text. They'll be linked from the appropriate lecture.
Assorted online material
There is a lot of good, free, online material about OpenGL and graphics in general. I'll mention some of it; Google can find more.
Class-Only Online Material
Material that for copyright reasons is restricted to the class is here. Log in with user name 4750. I will announce the password in class.
Computer Systems Used
You may use any system that works for you, and that can do the work. My examples will generally be in Linux.
Times & Places
Lectures
Mon & Thurs, 2-3:20pm, in Sage 3510. The SIS CRN is 80747.
Attendance is not taken. However, I may base an exam question on a student question in class. Also, students may be expected to present some topics in class.
There is plenty of space for new students to enroll.
Labs
Wed 2-3:50 in Low 3051.
There will be no scheduled labs at first. I may use the time to make up missed classes.
Grades
Components
Midterm Exam
There will be a midterm exam in class as listed in the calendar. You may bring in any printed material, but no computers. No collaboration or communication (except with the staff) is allowed.
The exam may contain some recycled homework questions.
Homeworks
There will be a homework approximately every week. You may do it in teams of 2.
Term Project
A term project will be due. You may do it in teams of up to 3 people. You will implement, demonstrate, and document something related to Computer Graphics. You will present a 15 minute talk on your project TA in one of the last two classes.
Final Exam
There will be a final exam on a date set by the Registrar. You may bring in any printed material, but no computers. You may not share the material with each other during the exam. No collaboration or communication (except with the staff) is allowed. The final exam will contain material from the whole course, but more from the last half.
Weights and Cutoffs
Component | Weight |
---|---|
All the homeworks together | 25% |
Midterm exam | 25% |
Term project | 25% |
Final exam | 25% |
Even if the homeworks be out of different numbers of points, they will be normalized so that each homework has the same weight.
Course percentage | Letter grade |
---|---|
>=90.0% | A |
>=75.0% | B |
>=60.0% | C |
>=50.0% | D |
>=0% | F |
Missing or Late Work
We will drop the lowest homework grade. That will handle excused absences, unexcused absences, dying relatives, illnesses, team trips, and other problems. Unless otherwise stated, the homeworks will be due on paper in the lecture. Late homeworks will not be accepted.
If you miss the midterm because of an excused absence, we will use your final exam grade also as your midterm grade.
If you miss the final exam because of an excused absence, you may demonstrate your knowledge of the 2nd half of the course at an individual oral makeup exam.
If your term project is late, you will be offered an incomplete and the project will be graded in Jan 2008.
Grade Distribution
Whenever there is a new grade, we'll email the class.
Verifying Grades
When we return a graded homework or exam to you, please report any errors within one week.
When we report grades to you, please report any missing grades within one week.
It is not allowed to wait until the end of the semester, and then go back 4 months to try to find extra points. It is especially not allowed to wait until the end of the following semester, and then to try this. (Yes, someone tried this last year.)
Honesty Policy
You may collaborate on homeworks, but each team of 1 or 2 people must write up the solution separately using their own words. We willingly give hints to anyone who asks.
The penalty for two teams handing in identical work is a zero for both.
You may get help from anyone for the term project. You may build on a previous project, either your own or someone else's. However you must describe and acknowledge any other work you use, and have the other person's permission, which may be implicit. E.g., my web site gives a blanket permission to other people to use it for nonprofit research or teaching. You must add something creative to the previous work.
The penalty for plagiarism is a zero grade.
You must not communicate with other people or machines or use electronic aids like computers and PDAs during exams. That includes not exchanging books and notes during the exam. You may use as many paper books and notes as you can carry, wheel, or drag into the room.
The penalty is a zero grade on the exam.
Also, all cheating will be reported to the Dean of Students Office.
The penalty for handing in the answer for a slightly different question that was on last year's homework or exam, because you copied but didn't even see that the question was different this time, is a zero and our scornful laughter.
Ditto for writing an exam answer that was more appropriate for the version of the exam handed out to other people in the room.
(:showhide div=syl:)
(:showhide div=ann init=show lshow='Show Announcements' :)
Announcements
Date | Event |
Sep 4 |
Jon Muckell assigned as TA. His email is .
He will hold office hours in the scheduled lab session. |
Sep 10 |
The simple.c program that I discussed in class today needs one more line to run. It's glutInit(&argc,argv); in main. I've added it and called the new file simple2.c . |
Sep 10 |
In order to cover more material, for awhile we'll have lectures also in the labs, on Wed, starting this Wed, Sep 12. |
Sep 12 |
Homework 2 is online. |
Sep 20 |
Homework 3 is online. |
Sep 24 | To compile the OpenGL examples in Visual C: If you get a
redefinition error for exit, then do not include stdlib.h in your program. It is already included by another include file, and it lacks an inclusion guard. Thanks to Julio. |
Oct 4 |
Homework 5 is online. |
Oct 4 |
Final exam is set for Wed Dec 12 at 3-6 pm. Please tell me if you have a conflict (and what that conflict is). |
Oct 10 |
Homework3Solution.doc and Homework4Solution.doc are online. |
Oct 24 |
Summer Opportunity - SIGGRAPH Student Volunteer is the biggest Computer Graphics conference. In 2008, it's Aug 11 to 15 in Los Angeles. Everyone who likes graphics should see it once. Student interns can see it cheap. If you work halftime then admission and a place to stay are free, and they might also pay for transportation. Hard deadline: Feb 24. I strongly recommend this opportunity. |
Oct 24 |
Term project details and Homework 6 online. |
Nov 14 |
It's time to get those project proposals (and even first progress reports) in. |
Nov 14 |
Would anyone be interested in spending a few weeks in Brazil learning to collaborate on research with Brazilian colleagues? This question is to gauge student interest, as I'm considering writing an NSF proposal. |
Nov 28 | All the Wed Dec 5 slots for presenting term projects are
full, so any one who did not sign up is assigned to Monday Dec 3. |
(:showhide div=ann:)
(:showhide div=exams init=hide lshow='Show Exams' :)
Exams
I've moved dates about homeworks, labs and lectures to their sections. This avoids redundancy.
Date | Event |
Oct 11 | Midterm F2007 MidtermSolution.doc
Scatterplot of Midterm Grade vs Finish Order |
Oct 19 | last day to drop classes |
Dec 12 | final exam, 3-6 pm. |
(:showhide div=tp init=hide lshow='Show Term Project' :)
Term Project
Details
- For the latter part of the course, most of your homework time will be spent on a term project.
- You may do it in teams of up to 3 people. A team of 3 people would be expected to do twice as much work as 1 person.
- You may combine this with work for another course, provided that both courses know about this and agree. I always agree.
- You may build on existing work, either your own or others'. You have to say what's new, and have the right to use the other work. E.g., using any GPLed code or any code on my website is automatically allowable.
- You will implement, demonstrate, produce a video on, and document something vaguely related to Computer Graphics.
- You will sign up later on Google calendar to demo it in one of the last few classes.
Schedule
- Nov 1: title, team members, 100 word summary.
- Nov 15: brief progress report.
- Nov 29: brief progress report.
- Dec 3 or 5: 10 minute talk in class. There will be a signup sheet; sign up early to get your first choice.
- Dec 6: final project report including code, video, documentation.
Deliverables
- An implementation showing dynamic interactive or 3D graphics.
- A video showing it running.
- An implementation manual showing major design decisions.
- A 10 minute talk in class.
Ideas
Anything vaguely related to Computer Graphics is ok.
- A tutorial program to demo some idea in this course, such as quaternions, which I might use in future years.
- A 3D game.
- A psychophysics experiment to test how well users can match colors.
- A physical simulation of 3 body orbits.
- A 3D fractal or julia set generator.
- An L-systems generator for random plants (as in botany).
- Get an idea from Pittsburgh's CS 1566: Introduction to Computer Graphics Class Project Repository
(:showhide div=hw init=hide lshow='Show Homeworks' :)
Homeworks
There will be about a dozen homeworks.
Due | Questions | Solution |
Sep 6 | Homework 1 | Homework1Solution.pdf |
Sep 20 | Homework 2 | Homework2Solution.doc |
Sep 27 | Homework 3 | Homework3Solution.doc |
Oct 4 | Homework 4 | Homework4Solution.doc |
Oct 11 | Homework 5 | |
Wed Oct 31 | Homework 6 |
(:showhide init=hide div=lec1 lshow='Show Aug and Sept Lectures and Labs' lhide='Hide Aug and Sept Lectures and Labs' :) (:showhide init=hide div=lec2 lshow='Show Oct Lectures and Labs' lhide='Hide Oct Lectures and Labs' :) (:showhide init=show div=lec3 lshow='Show Nov-Dec Lectures and Labs' lhide='Hide Nov-Dec Lectures and Labs' :)
I'll write a one sentence summary of each lecture, after the class.
No | Date | Summary |
1 | Mon Aug 27 | Intro by Prof Nagy |
Wed Aug 29 | no class | |
Thu Aug 30 | no class | |
2 | Thu Sep 6 |
|
3 | Mon Sep 10 |
|
4 | Wed Sep 12 |
|
5 | Thu Sep 13 |
|
6 | Mon Sep 17 |
|
7 | Wed Sep 19 |
|
8 | Thu Sep 20 |
|
9 | Mon Sep 25 |
I will present transformations 3 different ways to help you understand this important topic.
|
10 | Wed Sep 27 |
|
11 | Thu Sep 28 |
|
(:showhide div=lec1 lshow='Show Aug and Sept Lectures and Labs' lhide='Hide Aug and Sept Lectures and Labs' :)
No | Date | Summary |
Mon Oct 1 | no class; prof presenting research results at NGA and DARPA | |
12 | Wed Oct 3 |
Jon Muckell presents OpenDX, an open source visualization software package based on IBM's Visualization Data Explorer. IBMs Data Explorer - OpenDX tutorialOpenDX vs OpenGLOpenGL - fast, portable, close to hardware, event-driven OpenDX - specifically for data visualization, data should be computed before using openDX. Many default parameters and abstraction allows the user to quickly visualize the data. Installing OpenDXThe simplest way to install OpenDX is to use YaST or some automated installation tool that will install from an RPM. Installing from source can be unusually tricky. If you are running Windows you need to have Cygwin installed Installing on SUSE 10 Linux
http://download.opensuse.org/distribution/SL-10.1/inst/source http://ftp.opensuse.org/pub/opensuse/distribution/SL-10.1/non-oss-inst-source/
How To Make a Simple Picture in OpenDXI'm going to walk you through an example I made of visualizing two protein chains. First you'll need to download my example Protein.tar.gz containing the following files.
protein_i.general and lacb_i.out is the data relating to the other protein chain, we don't have to worry about that for now. Describing your DataThe Header File - protein_e.generalFirst open up the following two files protein_e.general and lacb_e.out protein_e.general is the header file for lacb_e.out and contains the following information. file = lacb_e.out #Where Data Explorer finds the actual data (consisting of points)
points = 649 #How many points are contained in each series (For this example - How many lines of our data do we want to read in)
series = 1 #We have only one set of points
field = locations #What do we want to call the variable we read in (our variable contains an x,y & z because its a 3-vector, see structure
structure = 3-vector #Each position is made up of 3 variables, so its type is a 3-vector
layout = 1,6 #At each line, for each x,y and z we skip 1 character/byte and read in 6
header = 0 #Do not skip any lines before we start reading points
interleaving = field
The Data - lacb_e.out 18.252 4.407 16.785
18.524 4.005 18.191
19.961 4.353 18.422
. . . . .
Total of 649 points
Note OpenDX skips one character and then reads in 6, as described in layout in the header file. Therefore there is two spaces between 18.252 and 4.407, and there is only one space between 4.407 and 16.785 Running The Program
Palette DescriptionA palette only has an effect on the program if there is a path from the palette to the image(or display) palette.
How To Make a Animation in OpenDXThe file animates two protein chains with the camera moving around the objects. ProteinAnimate.tar.gz The program is the same as the one above except we added a few more palettes. We needs to use the DISPLAY palette so we can specify where we want the camera to be positioned. We then use the ReadImageWindow palette to read the display window and then output that result to the image palette. The final result needs to reach the image palette because that allows us to save the final frames. SEQUENCER: This is a crucial palette for creating animations because it allows us to increment numbers. For example, in this program the sequencer increments from 0 to 360 which relates to the current rotation of the protein chains for each of the 361 frames.
Here is the animation: ProteinRotate.mpeg Some Example MPEGS made using OpenDXResources |
13 | Thu Oct 4 |
|
Mon Oct 8 | no class; Columbus Day | |
14 | Tues Oct 9 |
Zero or more of the following:
|
15 | Wed Oct 10 |
Review for midterm Here is some material to help you study for the midterm. This year's topics may be slightly different, but will be mostly the same. Since there are a finite number of electrons in the universe and they say that recycling is good, I'll recycle many of these questions. I'll discuss answers in the review, or you may figure out answers on your own. Notes:
|
16 | Thu Oct 11 |
Midterm F2007. You may bring any printed, copied, or written material, but no computers or calculators. |
17 | Mon Oct 15 |
To unwind from the midterm, Jon Muckell will let you
|
17 | Wed Oct 17 |
Today's big idea is the view normalization transformation. Routines like gluLookAt and gluPerspective really create a viewing transformation matrix so that the original scene when viewed with your desired parameters gives the same image and the transformed image seen with a standard projection and clip volume. See the OpenGL Reference Manual on viewing.
|
18 | Thu Oct 18 |
Today we switch to a completely different topic.
|
19 | Mon Oct 22 |
|
20 | Wed Oct 24 |
|
21 | Thu Oct 25 |
|
22 | Mon Oct 29 |
Advantage of using Cohen-Sutherland:
Bresenham presents the fast line and circle drawing algorithms better than the text. |
23 | Wed Oct 31 |
Chance to ask Jon questions about, and demo, the homework. |
(:showhide div=lec2 lshow='Show Oct Lectures and Labs' lhide='Hide Oct Lectures and Labs' :)
No | Date | Summary |
24 | Thu Nov 1 |
Notes:
|
25 | Mon Nov 5 |
Special guest lecturer! Tobi Saulnier, PhD (EE) RPI, Founder and CEO, 1st Playable Productions talk: realtime-graphics-in-games 11-05-07.ppt |
26 | Thu Nov 8 |
Special guest lecturer! Prof Barb Cutler, |
27 | Mon Nov 12 |
|
28 | Wed Nov 14 |
|
29 | Thu Nov 15 |
|
30 | Mon Nov 19 |
|
31 | Mon Nov 26 |
|
32 | Wed Nov 28 |
|
33 | Thu Nov 29 |
|
34 | Mon Dec 3 | term project presentations in class
(In case of no-shows, we will advance the remaining speakers.) |
35 | Wed Dec 5 | term project presentations in class
|
36 | Thu Dec 6 |
term project presentations in class
review for final exam |
(:showhide div=lec3 lshow='Show Nov-Dec Lectures and Labs' lhide='Hide Nov-Dec Lectures and Labs' :)
Angel powerpoint slide directory