DM842 Computer Game Programming

Fall 2014
Rolf Fagerberg and Marco Chiarandini


Official Course Description

See the course description at the web pages of the faculty.

Time and Place

Warning: Schedule could not be included.

The course starts Wednesday, September 3.

Textbook

As textbooks/teaching material, we will use the following:

  • Computer Graphics Through OpenGL, 2nd edition
    By Sumanta Guha
    Published by CRC Press/Taylor and Francis Group, 2014
    ISBN 9781482258394

    The book has a website.

  • Artificial Intelligence for Games, 2nd edition
    By Ian Millington and John Funge
    Published by CRC Press/Taylor and Francis Group, 2009
    ISBN 9780123747317

    The book has a website.

  • The lecture notes from the Particle Dynamics and Rigid Body Dynamics parts of the 2001 SIGGRAPH Course on Physically Based Modeling by Witkin and Baraff.

  • Collision Detection in Interactive 3D Environments
    By Gino van den Bergen
    Published by Morgan Kaufmann/Elsevier, 2004
    ISBN 155860801X

    The book has a website (click on menu entry "Interesting").

Examination

The exam is oral, with grades on the 7-point marking scale. The exam dates are January 23 and January 27.

A programming project must be passed in order to attend the oral exam. The deadline for the project is January 6.

At the oral exam, you will draw an exam topic delineating a part of curriculum which you are to present in the first part of the examination. More details of the exam form are described below the list of exam topics.

Lectures

Date Time Room Contents Reading
Wednesday, September 3 12-14 Imada seminar room Introduction to course (slides). Some elements of 3D graphics and OpenGL (slides). Start on transformations (slides). The slides. Chapter 2 in the textbook. Chapter 3 is not curriculum for the oral exam (and will not be covered at the lectures), but is useful to read with respect to the programming. Pages 16-25 on GLUT from the book OpenGL Programming Guide, 6th ed. (handout, an older version of the book is available online). Sections 4.1-2 in the textbook.
Thursday, September 4 14-16 Imada seminar room More on transformations (slides). General rotation matrices, specified by axis and angle. The slides. Sections 4.3-5 in the textbook. Sections 5.4.1-4 in the textbook. (For section 5.4.3, you may also look at the lecturer's informal notes on the proof).
Monday, September 8 08-10 Imada seminar room Rotations specified as a change of coordinate system, and its use in the viewing transformation. Affine transformations. The lecturer's notes on change of coordinate system. Section 4.6 in the textbook. Sections 5.2 and 5.4.5-8. No proofs of sections 5.2, 5.4.5 and 5.4.7 are curriculum, but you should know the contents of the statements. These sections are summarized in the lecturer's informal notes.
Wednesday, September 10 12-14 Imada seminar room Light and shading (slides). Sections 11.1-9, 11.11.1-2, 11.12. 11.14 in the textbook. In the course, we only cover the (Blinn-)Phong light model. Many others models (as well as empirically based reflection data sets) exists, see Section 11.13 or (not curriculum) the Wikipedia page on BRDFs for overview and directions. Also, the paper (not curriculum) Experimental Validation of Analytical BRDF Models (Ngan, Durand, Matusik, SIGGRAPH 2004) is a nice read with good introductory value. In particular, it explains (presentation slides of paper, page 44-52) better than the textbook (pages 420-22) why using the half-vector in the specular term is a better choice than using the reflection vector (in particular, the claim of Example 11.3 in the textbook that they are essentially equal is only true when the eye vector lies in the plane determined by the normal vector and the light vector). Empirically, using the half-vector is in better correspondance with real life - specular reflections at oblique angles are not round (which turns out to be the case when using the reflection vector), but vertically elongated (which turns out to be the case when using the half-vector), as can be seen on any photograph of a harbor at night.

Wednesday, September 17 12-14 Imada seminar room Barycentric coordinates and interpolation. Textures (slides). Sections 7.1-3. The lecturers notes on barycentric coordinates is an alternative to Section 7.2. Chapter 12 (excluding Section 12.4.2), Section 13.6 (actual math of 13.6.1 is not curriculum, the method in Section 13.6.2 is both simpler and much easier to create textures for). Sections 13.9-10 (actual math of 13.9 is not curriculum - think instead of the normal vectors of Figure 13.27 being stored in a texture).
Thursday, September 18 14-16 U28A Perspectively correct interpolation. Derivation of the full projection matrix. Section 19.1.3. An alternative presentation is pages 81-83 in 3D Game Engine Design by David H. Eberly, Morgan Kaufmann, 2001 (handout) and the lecturers notes. Section 18.1. An alternative derivation (not relying on Appendix A, which is not curriculum) is lecturers notes.
Wednesday, September 24 12-14 Imada seminar room End of derivation of the full projection matrix. Section 18.1. An alternative derivation (not relying on Appendix A, which is not curriculum) is lecturers notes.
Thursday, September 25 14-15 Imada seminar room Clipping. Sections 14.1-2.
Wednesday, October 1 12-14 Imada seminar room Rasterization, Bresenham's algorithm. Various smaller subjects (slides). Section 14.3. Pages 566-567, 569-571, 578-580 (note in particular Remark 14.7) of Section 14.4. Sections 13.1-5.
Thursday, October 2 14-16 Imada seminar room Handout of the project. Various smaller subjects (slides). Euler angles. Start on quaternions. Sections 13.7-8. Section 4.8, Chapter 9. Section 6.2. Sections 6.3 and 6.4.1.
Wednesday, October 8 12-14 Imada seminar room End of quaternions. Section 6.4.2 (except for page 281). Lecturers notes on the use of quaternions for interpolation (takes the place of page 281). Overview of representations of rotations.
Thursday, October 9 13-15 Imada seminar room Fix for avoiding division by zero in projection and clipping step. Change of normal vectors during transformations. Shadow maps. Midterm course feedback. Start on collision detection, basic primitives. Section 19.1.2. Sections 11.11.5-6. Section 18.2. In the textbook by Gino van den Bergen: Sections 3.1 and 3.2.0.

Date Time Room Contents Reading
Wednesday, November 26 12-14 Imada seminar room More on collision detection, basic primitives. In the textbook by Gino van den Bergen: 3.2.1, 3.2.2, 3.3.0. The proof of Theorem 3.1 may be skipped.
Thursday, November 27 14-16 Imada seminar room Video guest lecture on AI by Mike Preuss from TU Dortmund University. More on collision detection, basic primitives. In the textbook by Gino van den Bergen: 3.3.1, 3.3.2, 3.3.3.
Wednesday, December 3 12-14 Imada seminar room More on collision detection, basic primitives. Start on physics simulation: particles. In the textbook by Gino van den Bergen: 3.4.1, 3.4.2, 3.4.4, 3.4.6 (i.e., rest of chapter 3 in the book by van den Bergen, except tests involving polygons). Sections 1-3 in the Witkin notes.
Thursday, December 4 14-16 Imada seminar room More on physics simulation of particles. Start on physics simulation of rigid bodies. Sections 4, 5, 7 in the Witkin notes. The first subsection of the Wikipedia page on Runge-Kutta methods. Notes by Chad Berchek on elastic collisions of balls in 2D (in 3D, simply change the separating line to a separating plane in the last half of the notes). The math left out in the derivation in the 1D part in the first half of the notes can be found in these notes by Patrick Rutkowski (not curriculum). Sections 1, 2.1, 2.2, 2.4, 2.7, 2.8 in the Baraff notes.
Wednesday, December 10 12-14 Imada seminar room Start on physics simulation of rigid bodies. Rest of Section 2, sections 3, 4, 5, and 6 in the Baraff notes. Overview over terminology (English and Danish) for physical quantities underlying rigid body simulation.
Thursday, December 11 14-16 Imada seminar room End of physics simulation of rigid bodies. Sections 8 and 9 in the Baraff notes.
Wednesday, December 17 12-14 Imada seminar room Spatial data structures for space partitioning and model partitioning. Sweep and prune. Chapter 5 in the textbook by Gino van den Bergen. Sweep and prune (Section 5.4) is also described in Section 7 in the Baraff notes.
Thursday, December 11 14-16 Imada seminar room No lecture, as all material has been covered.  


Maintained by Rolf Fagerberg (rolf@imada.sdu.dk)