Photo-Realistic Computer Graphics
CIS 5930

 

Spring 2001
MWF 1:25
499 Dirac Science Library
Dr. David C. Banks

 

 

Homework

This course requires a significant amount of reading. The 2-volume Glassner text (PDIS) has more than 1000 pages; RRT by Shirley has 150; RGI by Sillion has 200. Expect to read 50 pages of dense technical material every week.

Homework will be demonstrated in class each week, using the PowerWall in the Dirac Science Library Seminar Room. The projects and programs are described informally below, and in more detail during class. The goal of these programs and projects is to allow you to investigate and demonstrate aspects of global illumination and radiative heat transfer.

A VCR is set up in the Visualization Lab for your use in viewing past videos from past ACM SIGGRAPH conferences.

If I am asked to read an review an actual paper submitted to this year's SIGGRAPH conference, you will help with the process. The ethical aspects of the review process are important; they can be found at www.siggraph.org/s2001/review on the Web.

08 January

Project 00 Emittance
Make a 2D emissive thing. Put some pockets on it to collect samples. Send a bunch of samples from it and see the angular emittance distribution. Put images and animations on your Web page.

Reading
The Foundations of Photo-realistic Rendering
PDIS Chapter 03
PDIS Chapter 11
PDIS Chapter 14

SIGGRAPH 2000 video

15 January

Program 00 Emittance with spherical harmonics
Spherical Harmonics Art Gallery   link 1   link 2   link 3
Create a sphere in OpenInventor. Make it emit a stream of particles according to spherical harmonics. You control the coefficients of the harmonics with draggers.

Reading
PDIS Chapter 13

Video

22 January

Project 01 Scattering
Make a 2D scattering thing. Put some pockets on it to collect samples. Send a bunch of samples to it from your 2D emissive thing and see the angular scattering distribution. Put images and animations on your Web page.

Reading
PDIS Chapter 12
RRT Chapter 17
R&GI Chapter 02

Video

29 January

Program 01 Elastic Scattering
Create a spherical volume of particles. Inject a sphere with a certain momentum. Model elastic collisions. Collect the scattered particles on a spherical shell. Run many samples and combine to make a scattering cross section.

Reading
QED Chapter 01

Video

05 February

Project 02 BRDF's
Find some interactive tutorials on the Web for BRDF's. Demo them. Put pictures and animations on your Web page.

Reading
RRT Chapter 01
RRT Chapter 02
RRT Chapter 11
RRT Chapter 12
RRT Chapter 13
RRT Chapter 14
RRT Chapter 15
RRT Chapter 16
Light field
View Interpolation (Shenchang Eric Chen) (search the Web)

Video

12 February

Program 02 Surface Scattering
Use spherical harmonics to determine the scattering behavior. (Or use some other scattering model.) Create several scattering spheres on a surface. Each has a scattering function. Send particles to the spheres, causing scattering. Use the directionalLightManip as an input tool.

Reading
QED Chapter 02
Real-Time Fur
Real-Time Fur over Arbitrary Surfaces (for the upcoming I3D symposium)

Video

19 February

Project 03 Radiance
Take some photos in all directions. Print them. Affix them to a sphere (or cube or icosahedron or something) of incident radiance. Affix another copy to a sphere of exitant radiance.

Repeat the process for several viewpoints in a small grid, maybe 3x3. Or work together and make it a 3x3x3 volume.

Reviewing
Fill out the SIGGRAPH review form.

Reading
PDIS Chapter 15
R&GI Chapter 03
RRT Chapter 03
RRT Chapter 04
RRT Chapter 05

Video

26 February

Program 03 Ray Casting
Choose between either of these versions below.

Version 1: Instead of scattering many particles from all directions, your scattering sphere will scatter particles from 1 incident direction. Send in a stream of particles that hit the surface. Each particle scatters in some random direction subject to the reflectance function (like a BRDF you used before). Collect the resulting particles onto a large sphere. Convert it into an image. How do you convert it into an image? Take each sample on this sphere and convert it into Phi, Theta. Make a blob on a texture map. The blob will now appear in the right position on the sphere.

Version 2: Instead of sending in a stream of photons from the light, send out a stream of samples from a viewpoint. The samples go out in all directions, filling up a unit sphere of directions. Each direction corresponds to a ray. Put some emissive objects in the scene. If the ray hits an emitter, then calculate the emittance in the direction toward the eye. Maybe just use the emittance distribution E(x,v) = v.N for a point x on an emissive sphere.

Reading
QED Chapter 03

Video

05 March

Project 04 Radiosity
This assignment is about blurring the incident radiance.

Select a light box from the Vis Lab. Using thin threads, lay out a uniform grid over the front (open) face. Maybe 4x4 or 5x5. You will take a photo from each grid point, so be sure to leave some room at the edges to accomodate your camera.

Shine a light through the opening(s) in the light box. Take a photo from each grid point. For each image, aim the camera straight ahead. Set your camera so that it uses the same aperture and shutter speed for each image. That is, the images should be calibrated to the same scale, even if that means some of them come out very dark.

Using /usr/sbin/imean (or any other tool you like), find the average value of each image. Use that average for the corresponding vertex of an indexed face set (or quad mesh). The result will be a blurry image of the total average incident radiance impinging on the open face of the light box.

Make a 3D model of the box using Open Inventor. For the open face, make a mesh with front-face culling so you can see it from inside the box, but see through it from outside the box. Use your indexed-face set for the mesh. It should look like a radiosity solution for that part of the box.

Make a Web page for the project. Include the array of images. Include the array of blurred images. Include a screen shot showing the 3D scene.

Reading
PDIS Chapter 04
PDIS Chapter 05
R&GI Chapter 07

Video

12 March

Semester break

19 March Program 04

Part 1: Filtering
Use adaptive filter sizes to reconstruct the image from the samples in your ray-cast texture-map program. If the initial filter kernel has radius r, the nth one has radius r/sqrt(n).

Part 2: Polygon manipulation
Create a scene with 2 rectangles. Put draggers/manipulators on them so you can move them around and change their size and orientation. Give each one some sort of dragger that defines the number n of samples in each direction. Use a texture map to show nxn dots for the sample positions. Connect the dots from one polygon to the other as you move them around in 3D.

Extra credit:
Drill/cut/bore an array of holes in each face of a light box. Take pictures through the holes. Turn the average value of the pictures into a texture map. Create an Inventor model of the light box, with a textured interior.

Reading
R&GI Chapter 08
R&GI Chapter A

Video

26 March Project 05
Drill/cut/bore an array of holes in each face of a light box. Remove a hole; take a picture through the holes; replace the hole. Turn the average value of each pictures into a pixel of a texture map. Create an Inventor model of the light box, with a textured interior. Cull front-faces so you can see through the box. Make the polygons of the box un-pickable so you can use the cross-hairs to zoom in on an object inside the box.

Reading
PDIS Chapter 16
PDIS Chapter 17
PDIS Chapter 18

Video

02 April

Program 05 Radiosity
Using your polygon draggers from two weeks ago (for position, size, and number of samples), determine the form factor between polygons A and B. Make a dragger for each polygon to determine its exitant radiance (from 0 to 1) and its albedo (from 0 to 1).

First, just modify the SoMaterial properties of the two polygons. Put an soPointLight at each of the sample points, with its emissive color determined by the exitantRadiance dragger. Change the diffuse color via the albedo dragger.

Second, actually compute the 1st step of light transport for radiosity between A and B. Disable the pointLight junk. Make each sample point have the value of the exitant radiance you compute. Either store it in a texture map and interpolate it, or draw a bunch of spheres with the proper colors (as sort of a cartoon), or whatever you prefer. Be able to display the polygon with the color you compute for its (average) radiosity.

Reading
R&GI Chapter 05
QED Chapter 04

Video

09 April

Program 06 Global Illumination

Modify your ray-cast spheres program. Make each sphere have a texture map, and make each sphere gradually update its texture. For the first samples, drop a large blob in the texture. Average in blobs of smaller radius as the sphere gathers samples from more directions.

Make some of the spheres be emissive. At iteration 0, a luminaire has some radiance to give away. Pick a random point on sphere A. From that point, sample in the directions of all the other spheres and collect their radiance at that point, producing a blob of incident radiance Lin on the receiver. Use cos*cos/d^2 to determine Lin. The receiver has a diffuse reflectance, kd, and Lout = kd*Lin. You should use floating-point array, since the dynamic range between the exitant radiance from the luminaires and the reflectors will be great.

Send your rays from points on each sphere, in different directions. Not just from the sphere center.

After iteration 0, the luminaires have "given away" all their radiance. The reflecting spheres now have some exitant radiance Lout to give away.

To handle iteration 1, you must find where a ray hits a sphere and convert the point into a texture index to read the color of the sphere at the location you hit it. Each sphere now collects radiance Lout that the othere spheres are giving away.

Reading
PDIS Chapter 07
PDIS Chapter 08
PDIS Chapter 09
PDIS Chapter 10

Video

SUSSAI
topic excellent very good good bad
01 Glassner
02 Shirley
03 Sillion
04 Proj 0 Emittance
05 Prog 0 Spherical Harmonics
06 Proj 1 Scattering
07 Prog 1 Scattering Spheres
08 Proj 2 BRDF Demos
09 Prog 2 Surface Scattering
10 Proj 3 Radiance Photos
11 Prog 3 Ray Casting
12 Proj 4 Radiosity: Blurry Photos
13 Prog 5 Radiosity: Draggable Polygons
14 Siggraph review
15 Graduate-seminar style
16 QED
17 Prog 4 Ray Casting: Filtering
18 Proj 5 Radiosity: Blurry Arrays
19 Prog 6 Radiosity: Draggable Polygons

16 April

Final Project Demos
Put images, animations, and descriptions of your homework on the Web. Create a buttonfly-style demo. During class on Friday April 20, give demos for the CSIT Director, the former CSIT director, and the Dean of the College of Arts and Sciences.

Reading
The Rendering Equation

Video

Glassner PDIS assigned reading

01 02 03 04 05 06 07 08 09
10 11 12 13 14 15 16 17 18 19
20 21

Sillion PDIS assigned reading

01 02 03 04 05 06 07 08 A