Programming Assignment #2

Simon Premoze

 

Introduction

This programming assignment implements error-driven adaptive meshing. The Monte Carlo technique from the Programming Assignment is used to compute the radiosity for each mesh element. Instead of uniform mesh subdivision, an error metric is used to decide whether the mesh needs to be further subdivided or not.

Two error metrics were used in this assignment: L1 norm and L infinity norm. Maximum (Lmax) and minumum (Lmin ) radiance on each mesh element were computed and converted to brigthness.

L1 norm
L1 norm computes the difference between maximum and minimum radiance on the mesh element. In addition, This difference is weighted by the ratio of mesh element area to the are of entire polygon.

L = | Lmax - Lmin |  * patch area / polgon area

Linfinity norm
Linfinity norm simply computes the difference between maximunm and minimum radiance on the mesh element.

L = | Lmax - Lmin |

Sample Images
OpenGL was used for displaying the mesh.

 
L1 norm error metric
L1 norm error metric
 
Linfinity norm error metric
 
Linfinity norm error closeup
There is not much meshing done on the umbra/penumbra region
 

Conclusion
L1 norm takes into account the area. So, errors over large areas will be more significant as opposed to errors over small areas. Thus, L1 norm emphasizes areas of high radiance gradient (soft shadow, or penumbra, regions). On the other hand, Linfinity norm does not account for the area of the mesh element. This causes problems such as really fine meshing in certain regions (bright regions), slower computation, higher memory demands. In general, L1 norm error metric works better than Linfinity norm metric in terms of computation time, memory usage and mesh quality.
 


Simon Premoze

premoze@cs.utah.edu