CS 33400 Fundamentals of Computer Graphics
-general information-
Administrative
affairs
·
Instructor:
Voicu Popescu, popescu@purdue.edu
-
Office hour: by appointment, LWSN 3179
·
Teaching
assistant: Paul Rosen, rosen@purdue.edu
·
Office hour: Thursdays 3:00-4:00pm, LWSN 3151
Emergency
preparedness
·
In the event of a major campus emergency, course
requirements, deadlines and grading percentages are subject to changes that may
be necessitated by a revised semester calendar or other circumstances. All changes to this course will be posted on
this website. During an emergency this website will continue to serve as a
means for communication between instructors and students and for disseminating
course materials and assignments.
Lectures
·
Basics
·
Triangle
rasterization
·
The planar pinhole
camera
·
Rasterization
parameter interpolation
·
Basic
shading and lighting
·
Texture mapping
·
Environment
mapping
·
Projective
texture mapping
·
Projected
scene impostors for high-quality reflections at interactive rates
·
Hardware
rendering
·
Code
Assignments
·
A1
·
A2
·
A3
·
A4
·
A5
·
A6
·
A7
·
A8
·
A9
·
A10
You are allowed to develop in any environment you want
(Windows/VS vs. Linux/Eclipse). We
recommend Windows and Visual Studio 8.0, since that is what you will turn
in. You are also allowed to use any
windowing toolkit you'd like (FLTK, GLUI, SDL), but FLTK is recommended.
Your actual submission must...
- Code must compile on WinXP & VS 8.0 (in particular, the machines in
HAAS G056)
- Include in your submission
- Visual Studio Solution
& Project
- Any libraries you use
(excluding FLTK, GLUT, & LIBTIFF)
- Any additional files
specified in the assignment documentation
Prerequisites
- Basic programming (data
structures, algorithms, file I/O, C / C++)
- Some basic mathematics
concepts (3D vectors, matrices)
Syllabus
We will spend the semester studying and implementing
interactive 3D graphics techniques. The syllabus has three parts.
·
Basics
o Vectors,
matrices, transformations
o Basic
analytical geometry (e.g. points, lines, segments, planes, triangles,
intersections)
o Camera
models, projection, navigation
·
Classic feed-forward rendering
o Rasterization
o Screen
space and model space interpolation
o Basic
shading
o Texture
mapping, projective texture mapping
o Shadow
mapping
o Environment
mapping
o Antialising
o GPU
programming
·
Advanced rendering techniques (a subset of the
following topics, time permitting)
o Ray
tracing
o Geometric
modeling
o Image-based
rendering
o Automated
scene modeling (e.g. stereo, structured light, laser range finding)
o Computational
photography
o Camera
model design
Required (but Fun)
Work
- Assignments (pending TA
support)
- 10 total, due
approximately every week
- Require implementation
of a pipeline stage or rendering technique; they are incremental, you
cannot complete the later assignments w/o having earlier assignments that
work; you are responsible for not falling behind (and for catching up); I
will not give out solutions to the earlier assignments since you need to understand the earlier
assignments.
- credit
- 5% each assignment
- numerous extra-credit
opportunities
- late policy
- once late (up to one
week): no penalty
- late second and
subsequent times: 0 points for assignment
- all assignments are
required by the last day of classes for completion of course
- turn in assignments
via Blackboard Vista
- assignments need to
compile and link and run once downloaded; use relative paths
- include Readme.txt or
Readme.doc file describing your submission
- after you receive the
grade for an assignment you have exactly 1 week for asking for a regrade
- Exams
- Midterm 20%
- Final exam 30%
Cheating policy
- Do not cheat!
- Frequent and thorough scans
for cheating
- If caught automatic failing
grade for the class and reported to the Dean of Students' Office
- Examples of cheating (courtesy
of Gene Spafford)
- Using part or all of
someone else's work, from this or any prior semester, in projects or
homework without the instructor's prior approval;
- Misrepresenting the
functionality of code. That is, if a student submits a project with
falsified output or test data to make it look as if a program works
better than it does;
- Using hidden notes or
hints to answer questions during a test that does not allow open notes or
crib sheets;
- Submitting answers on
homework or projects that were developed or researched by any other
individual and presented as the student's own work;
- Copying text from a
book or paper to include in the student's own writing without clearly
marking it as a quote and citing the source (This is plagiarism and may
be a violation of copyright law as well as cheating.);
- Setting permissions on
files and directories in a student's account so that someone can easily
copy programs and documents, or allowing any other person, in the class
or otherwise, to use your computer account (note that this is also a
violation of department policy or PUCC policy;
- Providing program code
or problem solutions to another student in the class without the
instructor's explicit, prior approval;
- Encouraging anyone to
do any of the above, or failing to report anyone involved in any of these
activities.
Course material
- Recommended texts
- Peter Shirley, Fundamentals of Computer Graphics,
ISBN 1568811241
- Alan Watt, 3D Computer Graphics, ISBN
0-201-39855-9
- Foley, van Dam et
al., Computer Graphics Principles
and Practice, ISBN 0-201-84840-6
Voicu Popescu, spring 2010