-
Highly Recommended: Work through the old exams (with paper and pencil) without looking at the solutions.
Ray Tracing - see notes.
- Set up of world: camera, screen, world coordinates vs pixel coordinates.
- Calculating uvn given VPN and VUP.
- Pseudo code for the basic algorithm.
- What is a ray and how is it represented mathematically?
- Computing intersections with simple objects: spheres, planes, cylinders, ...
- Lighting:
- How are normals calculated.
- How is color computed at intersection point using the Phong lighting model?
- How are shadows implemented?
- How are reflections implemented?
- Anti-Aliasing - what
is aliasing and how do anti-aliasing techniques work?
OpenGL Pipeline, Structure and Transformations:
- Setting up the geometry:
- What are Vertex Array Objects (VAOs). What are Vertex Buffer Objects (VBOs) and why are they used?
- Geometry Primitives:
GL_POINTS, GL_LINES, GL_TRIANGLE, GL_TRIANGLE_FAN
- OpenGL Primatives and what is their relationship to the data that gets put in the points() and colors() arrays (eg. on the Cube class).
- How are the points generated, e.g. for the Disk class.
Geometric Objects and Transformations
- Coordinate systems -
right/left handed
- Scalars, Points and Vectors - what are they and what operations are allowed between them?
- Vectors: representation, length, addition, scalar multiplication,
dot products, cross products.
- Matrix Operations: multiplication, addition, transpose, inverse (of standard
transformations such as rotations, translations,scale), identity.
- 3D Transformations: Translation, Scale, Rotation, Reflection, Projection.
- Composition of transformations.
- Homogeneous coordinates. What are they, why are they used?
- How 3D Transformations are applied in opengl using the "modelview" matrix and matrix stack.
-
Scene graphs - be able to create the scene graph for a particular structure (car, robot, robotic arm, ...)
- Draw picture of object with lengths, angles, type of movement, etc.
- Draw the associated scene graph with the precise transformations identified.
- Implement the sequence of "opengl operations" (using RotateX(theta), RotateY(theta), RotateZ(theta), Translate(x,y,z),
Scale(x,y,z), PushMatrix, PopMatrix).
You don't need to know the exact syntax but the type and order of the operations is important.