CS488 - Introduction to Computer Graphics - Lecture 19

Comments and Questions

Nearby Light Sources

What is used in practice

What should be in theory

  1. Points
  2. Lines
  3. Areas

Global Illumination


Calculating all the light. Why bother?

Each small bit y of surface in the scene

  1. receives some amount of light (possibly none)
  2. emits some amount of light (possibly none)
  3. re-emits some amount of light (possibly none)

Solve the resulting equations.

  1. F(x, y)dx.dy is known from the geometry
  2. I(x, <z>, \lambda) and R(<z-in>, <z-out>, \lambda) are surface properties in the model
  3. B(x, <z>, \lambda) and L(x, <z>, \lambda) are unknown.
  4. Substitute B into the third equation.
  5. The result is a set of linear equations that can be solved for L

Once L is known,

  1. B is easily calculated.
  2. The light field is easily calculated at point P

What's wrong with this picture?

Light Fields

This is a way to avoid even the need to re-project.

Let's turn our attention away from the surfaces of objects and onto the volume between objects

At every point in this volume there is a light density

This quantity L(P, theta, lambda ) is the light field. If we knew it we could

The evaluation is, in fact, just a projective transformation of the light field.

How do we get the light field?

  1. by measurement
  2. by calculation

How is the light field used in 2007?

But tomorrow!!

Plenoptic Function

Think about what the viewer can do.

  1. The seriously handicapped viewer can

    Ray tracing is perfect.

  2. The mildly handicapped viewer can

    Ray trace onto a sphere surrounding the viewer and reproject from the sphere to a view plane whenever the direction of gaze changes.

  3. The unhandicapped viewer can

    Ray trace onto a sphere at each accessible point.

The third is the light field, also called the plenoptic function, and it has to be recalculated every time something in the scene moves.

`Backdrop' Applications

Imagine making a game

An easy backdrop

A more difficult backdrop


Perhaps a window

Texture Mapping

  1. Basic
    1. Start with a 2D image: pixellated or procedural
    2. Map 2D image onto primitive using a 2D affine transformation
      • Simple if the surface of the primitive is flat
      • otherwise, ...
      • Texture pixels normally do not match display pixels, so some image processing may be needed.
    3. Backwards map intersection point with ray into the image to get the surface properties
  2. Normal Mapping (Bump mapping)
    1. Start with a difference surface, defined with respect to the surface
    2. Calculate the normals to the difference surface and map them onto the surface of the primitive
    3. Use the mapped surface models for lighting
    4. No occlusion, shadows are wrong, silhouettes are wrong, nobody notices!
  3. Solid Textures
    1. Solution to mapping texture onto curved surfaces
    2. Usually procedural

Return to: