Programming Assignment 2: Light Fields

Due Tuesday, Nov. 14

Overview

For this assignment, you will implement a light field viewer based on the techniques described by Levoy & Hanrahan 96.

I. Deriving Equations

The basic operation performed by the light field viewer is looking up the color corresponding to a given ray in space. Since the light field is represented by "slabs" (pairs of planes in space), you will need to derive code for intersecting a ray in space with a rectangular region of a plane (specified with the region's four corners).

Hints:

II. Basic Light Field Viewer (60%)

  1. Begin with code to read a single-slab, uncompressed light field given as a pair of files:

    Some sample data files are here.

  2. For each frame, do the following:

III. Extensions (30%)

Implement extensions (A and B) xor C:

A. Interpolation

In addition to the "closest-point" sampling implemented above, implement the following interpolation schemes:

Which of the first 2 appears to produce better results? Why?

B. Multiple Slabs

Extend your viewer to handle light fields consisting of multiple slabs. Some data is here.

C. VQ Decompression

Extend your system to handle VQ-compressed data. The changes in the data format are as follows:

Some data to get you started is here. However, once you have VQ decompression implemented, it should be possible to view the .lif files available here. The only tedious part is parsing the .lif header, documented here.

Note that for this assignment, it is acceptable to decompress the data in memory before the start of rendering - it is not necessary to render directly from the VQ-compressed data.

IV. Writeup and analysis (10%)

Please submit your source code together with a writeup (as plain text, HTML, or PDF) that contains a description of the design decisions you made, options you implemented, and sample screen-shots.

Submitting

Please make your writeup and code accessible via the web, and send the URL to funk@princeton.edu with "COS526" in the subject line. Please see the general notes on submitting your assignments, as well as the late policy and the collaboration policy.