3D Graphics and Rendering

CSCI 580


Instructor:                              Ulrich Neumann            PHE-402         213-740-0877

Teaching Assistant:               TBA    

Prerequisites:                         C++ programming skills
                                                Familiarity with VC C++ development

No specific course prerequisite.  Some computer graphics or image processing course or experience is recommended.  OpenGL, Direct3D, Java3D, backgrounds are very helpful for term projects

Textbook:       3D Computer Graphics by Alan Watt  (recommended / not required)

A reference book on OpenGL is recommended for help with term projects


Course Web site:       USC Blackboard System     https://totale.usc.edu/

Research Publications:  (examples of forums related to the class)


            ACM SIGGRAPH: Computer Graphics

            IEEE Computer Graphics and Applications

            ACM Interactive 3D Graphics

Course Overview:     

This course explores topics related to 3D computer graphics rendering.  It assumes that students possess an understanding of digital images, programming, and basic linear algebra.

The course focuses on rendering algorithms and the development of graphics libraries; it is not a course on 3D geometric modeling, the use of commercial tools (such as Maya), or animation.  We will explore how images are produced once a model has been created or acquired.  Topics include: the 3D rendering pipeline, rasterization techniques, lighting, color, hidden surface removal, textures, volume rendering, photo realism, graphics hardware, and virtual environments.

Textbooks are used for reference.  Recent and seminal publications will be referenced when appropriate to get an understanding of the research frontiers.  Copies of recommended papers will be available from the class web site.  Video/DVDs may be used to illustrate concepts and results.

The course is based on the belief that computer graphics is best learned by doing.  There are no written exams.  Grades are based on the homework programming assignments and a final term-programming project.  Homework assignments focus on producing the components of a 3D graphics library.  The term project is expected to take most of the 2nd half of the semester to complete and should explore a new research concept or a novel extension to a research publication.  A one-page proposal abstract is required by mid-semester for approval by the instructor, and a 4-5 page report describing the complete project is required at the end of the semester.  All the projects are presented and demonstrated in the final days of class.

You are encouraged to talk among yourselves about the assignments and projects; however you must turn in your own work.  Files that are clearly the same, or slightly altered copies of each other, will receive zero credit and the USC Office of Student Judicial Affairs and Community Standards will be notified.  Protect yourself by making your work unreadable by others. 

See  http://www.usc.edu/student-affairs/SJACS/nonacademicreview.html for details of the USC student conduct code.


Home Work Assignments  (approximate sequence – subject to change)

Compile and run for setup

Triangle renderer with Z-buffer and constant color


Lighting and shading

Procedural and image textures

Accumulation buffer anti-aliasing

Project (due at end of semester)