450 likes | 457 Views
This paper presents a method for radiosity rendering on scenes with detailed models using face cluster hierarchies. It introduces the concept of volume clustering and proposes a hierarchical radiosity algorithm with sub-linear complexity. The approach combines simplification and radiosity algorithms, using multiresolution hierarchies of the models to adjust the resolution on the fly. The method effectively reduces computational complexity and provides improved approximation for connected, smooth surfaces.
E N D
Face Cluster Radiosity Eurographics Workshop on Rendering, 1999 Andrew Willmott Paul Heckbert Michael Garland Carnegie Mellon University
The Claim • The Domain • Radiosity on scenes with detailed models • By using face cluster hierarchies we can • Get sub-linear or constant complexity • Better approximate detailed model surfaces
State of the Art • Hierarchical Radiosity with Volume Clustering • Constructs a complete scene hierarchy • Adds volume clusters above input polygons (preprocessing) • Subdivides below input polygons (during solution) • Algorithm is O(k logk + n) • k is the number of input polygons • n is the number of elements used by the solution
Problems • Slow for complex scenes (k >> n) • Must push irradiance down to leaves when gathering, pull radiosity up when shooting • All input polygons must be touched on each iteration • Approximation • Volume clusters approximate a cloud of unconnected polygons • Can do better for connected, largely smooth surfaces
Background • Experimenting with large scanned models • Large enough to make klogk a problem • Observation • Most polygons are for high resolution detail • Don’t affect radiosity computations much • and with Multiresolution Models • Allow you to adjust the resolution of the model at different places on the model
Intuition Instead of running radiosity on detailed model Run radiosity on simplified model Apply results to original model
A Better Solution • Combine simplification & radiosity algorithms • Use multiresolution hierarchies of the models directly • Adjust resolution on the fly to match that needed by the radiosity algorithm
Refinement in the Hierarchy Root: entire scene Input polygons Refinements High Resolution
Simplification Root Simplifications Input polygons High Resolution
Advantages • No manual selection of simplification level • Don’t access each of the k input polygons during each iteration • Don’t store radiosity for each input polygon • Multiresolution models are precalculated • Once for each new model acquired • Amortized over many scenes and renders
Multiresolution Models • Initially used edge-collapse models directly • These contain vertex hierarchies • Switched to using dual of vertex hierarchy algorithm: face cluster hierarchies • It’s easier to deal with face hierarchies
Face Clusters • Group faces rather than vertices • Don’t change geometry of the model
Hierarchical Radiosity Used refinements Input polygons Leaf elements Unused refinements
Add Volume Clustering Volume clusters Used refinements Input polygons Leaf elements Unused refinements
Add Face Clustering Volume clusters Face clusters Used refinements Unusedface clusters Input polygons Leaf elements Unused refinements
Face Cluster Hierarchies • Iteratively merge face clusters • Initial clusters each contain a single polygon • Create links between two child clusters and their union • Repeat until only root cluster left
A Face Cluster • An approximately planar region on the mesh • Container for a set of connected faces • Oriented bounding box • Aggregate area-weighted normal • Pointers to the two child clusters that partition it
Building the Hierarchy • We use Garland’s Quadric method • Dual of edge-collapse simplification • Quadric error term measures distance to best-fit plane of face vertices, rather than distance to face planes of best-fit vertex. • Most important properties • Produces clusters that are approximately planar • Tight oriented bounding box calculated via PCA • Add well-shaped term to get compact clusters
Face Clustered Venus Planar term only With ‘well-shaped’ term
Vector Radiosity • Standard radiosity equation is scalar • Applied to face clusters it incorrectly ignores variation in local normals • No obvious way of combining radiosities of two elements with different normals • Solution • Recast radiosity equation in terms of irradiance vector and power vector
Why Vector Radiosity? Leaf Elements Haar Basis Vector Radiosity
Vector Radiosity Approx. P E E = -mmTP m
Justification • Simplest representation that captures the appropriate behaviour • Minimises storage for each face cluster node • We combine vectors hierarchically to represent complex radiosity distributions
Algorithm Overview • Construct face cluster hierarchy file for each new model. Super-linear in k • Create scene from models • Read in scene description, add root face cluster nodes to a volume cluster hierarchy • Run gather/push-pull/refinesolver. Sub-linear in k • Propagate radiosity solution to leaves of all models, write to disk. Linear in k Dominant
Results • Tested on a million polygon scene. • Medium-high illumination complexity (sun, sky, three spotlights, much reflection) • 6 scanned models, implicit surface podium, displacement-mapped floor • Also tested at several resolutions of that scene, along with progressive and HRVC radiosity algorithms
Museum Scene 2,700,000 triangles Time: 109 secsMemory: 100 MB Progressive and HRVC would not fit in 1GB
Results: Solution Time Same scene, progressively fewer polygons
Results: Resident Set Size Same scene, progressively fewer polygons
Conclusions • Face cluster hierarchies proved highly effective for use with radiosity • Sub-linear performance in the number of input polygons, as opposed to ‘previous best’ of O(klogk) • Low memory usage • Extremely detailed scenes
Future Work • Better visibility sampling in final pass • Conservative bounds on radiosity transfer • Comparison to radiance and other radiosity code bases • Project page at • http://www.cs.cmu.edu/~radiosity/mrr/
Virtual Memory • Face cluster files are written in breadth-first order, so get good memory locality • Usually only small first section of the face cluster file used, so it’s memory mapped • Progressive Radiosity has good total memory use, but very poor locality
Details • m and its error estimated by sampling • Error term doesn’t depend on normals, but penalizes side-on clusters • Visibility by ray casting, nested grids • Use bounding boxes • Fractional visibility used during simulation, visibility resampled at higher resolution for final illumination
Complexity • O(slogs), not O(klogk), where s is the number of face cluster hierarchies. • s << k • Almost always, s << n • Each face cluster hierarchy represents a separate polygon mesh