Download presentation source
Download
Report
Transcript Download presentation source
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
Input
polygons
Unused
face clusters
Used
refinements
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
m
E
E = -mmTP
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/refine
Dominant
solver. Sub-linear in k
Propagate radiosity solution to leaves of all
models, write to disk. Linear in k
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 secs
Memory: 100 MB
Progressive and
HRVC would not fit
in 1GB
Venus Close-up
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/
EXTRAS
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
Radiance: Medium Quality
Radiance: High Quality
Radiance: Memory Use
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
Vector Radiosity Equations
Ei =
T
n̂i r̂i j
T
r̂ji n̂j
--------------------2---------------- v ij A jb j
rij
j
E i n̂ i
T
T
– r̂r̂
---------2--- n̂j A jb j
j
r
E
P
T
E = –mm P
A Dual Edge Contraction
Iterative Face Clustering
FCR Pedestal: Clusters
Transfer Examples
HRVC Pedestal Final
FCR Pedestal Final