object-space visibility culling anthony steed university college london based upon material...
TRANSCRIPT
Object-Space Visibility Culling
Anthony SteedUniversity College London
Based upon material presented by Claudio T. Silva at Eurographics 1999
Slides, and material for slides, have been provided by
Satyan Coorg (MIT/IBM), Sigal Dahan and Dudu Sayag (Tel-Aviv)
Approximate Visibility Determination
Develop algorithms that are output sensitive, that is, complexity depends on the number of visible polygons, not the total number of polygons.
Drop the exact visibility requirement, and instead attempt to develop algorithms that estimate the triangles which have visible fragments
In this talk, we will speak about algorithms that overestimate the visible fragments, the so called conservative visibility algorithms
Talk Summary
• Cells and portals – Teller and Sequin, Siggraph 91– Luebke and Georges, I3D 95
• Visibility culling with large occluders– Coorg and Teller, SoCG 96 and I3D 97– Hudson et al, SoCG 97
Talk Summary
• Cells and portals – Teller and Sequin, Siggraph 91– Luebke and Georges, I3D 95
• Visibility culling with large occluders– Coorg and Teller, SoCG 96 and I3D 97– Hudson et al, SoCG 97
The Cells-and-Portals Approach
(1) Decompose space into convex cells
(2) For each cell, identify its boundary edges into two sets: opaque or portal
(3) Precompute visibility among cells
(4) During viewing (eg, walkthrough phase), use the precomputed potentially visible polygon set (PVS) of each cell to speed-up rendering
Space Subdivision
Input Scene:
Convex subdivision:
Generated by computing a k-d tree of the input faces
Determining Adjacent Information
Computing the PVS of a cell
S•L 0, L LS•R 0, R RLinear programming problem:
Find_Visible_Cells(cell C, portal sequence P, visible cell set V) V=V C for each neighbor N of C for each portal p connecting C and N orient p from C to N P’ = P concatenate p if Stabbing_Line(P’) exists then Find_Visible_Cells (N, P’, V)
Eye-to-Cell Visibility
The eye-to-cell visibility of any observer is a subset of the cell-to-cell visibility for the cell containing the observer
Eye-to-Cell Visibility
• A cell is visible if– cell is in VV– all cells along stab
tree are in VV– all portals along stab
tree are in VV– sightline within VV
exists through portals
Results
Results
Results
Results
Talk Summary
• Cells and portals – Teller and Sequin, Siggraph 91– Luebke and Georges, I3D 95
• Visibility culling with large occluders– Coorg and Teller, SoCG 96 and I3D 97– Hudson et al, SoCG 97
Luebke and Georges, I3D 95
Instead of pre-processing all the PVS calculation, it is possible to use image-space portals to make the computation easier
Can be used in a dynamic setting
Luebke and Georges, I3D 95
Luebke and Georges, I3D 95
Talk Summary
• Cells and portals – Teller and Sequin, Siggraph 91– Luebke and Georges, I3D 95
• Visibility culling with large occluders– Coorg and Teller, SoCG 96 and I3D 97– Hudson et al, SoCG 97
When does A occludes B ?
A B
Convex Occluers
AB
A occludes B
B is not occluded
C
AB
Important Events
e
A
v
B
e
A
v
B
Naïve Algorithm
• For all combinations of edges and vertices find the corresponding plane (n2) planes
• Partition space by these planes (n6) cells
Relevant Planes• Only a small selection of planes are actually
relevant• For complete objects - consider the
silhouettes
ve
Plane ve separates A and B
A
B
All silhouette edges produce supporting planes
For Individual Polygons
• Track Visibility Changes– Track all planes
defined by E and vertices in edge from B that intersect E
For Individual Polygons
• Non-edge cases Track planes– V7,V3,V5
– V7, V5, V6
– V7, V6, V3
• Overall this is (n+m) for an object pair
For N Objects
• Reduce complexity from (n2) by using an octree structure
Hierarchical Tests
O
Hierarchical Tests
O
Hierarchical Tests
O
Optimising the Octree Traverse
• Not feasible to compute visibility relationship for whole octree each time viewpoint moves
• Re-use the idea of tracking the separating planes – Do this for each octree cell on boundary– Note that a cell visibility can only become
visible if its parent is partially visible
Dynamic Plane Maintenance
• First approach – find a sub-set of close planes and test only
those if viewpoint does not move more than r
Dynamic Plane Maintenance
• Second approach– keep the planes themselves in an octree– in each octree cell keep a list of intersecting
planes– a cell-cell traversal through the octree goes via
the LCA, adding and deleting planes• no possibility of repeating an add or delete, so this is
strictly better than naïve recomputation with worst case being situations where LCA is root
Coorg and Teller, I3D 97
Ignored
IgnoredA
B
T
Added the capability tojoin the effect of connectedoccluders, that is, a form of occluder fusion
Occluder Fusion
Fast Tangent Plane Computation
Fast Tangent Plane Computation
Fast Tangent Plane Computation
Because this computation is fast, it is no longer necessary to keep fine-grain visibility events
Use Temporal Coherence to Cache
Relevant Events
Choosing Occluders
• Pick large occluders close to the viewpoint– Good for application to octree scene structure
• Pick smaller occluder that are close to objects (detail occluders)– I.E. they occlude an object most of the time– Applied only to a specified object, not to the
general scene octree
Detail Occluders
Metric for Comparing Occluder Quality
Occluder quality: (-A (N * V)) / ||D||2
A : the occluder’s area
N : normal
V : viewing direction
D : the distance between the viewpoint and the occluder center
Large polygon have large area-angle.
VA
N
DO
Results
ResultsThe percentage of polygons draw
The culling and drawing times (in milliseconds)
Scene
Soda
City
134,832
108,841
Polygons Frustum Occlusion
19.7 2.6
36.9 5.6
Scene
Soda
City
Frustum Occlusion
83 10
102 26
Soda
City
CullDraw TotalTotal DrawCull
482
435
12
13
11
12
89
77
57
34
32
494
448
113
95
29
27
45
101
37
Elan - workstation times
Onyx - workstation times
Talk Summary
• Cells and portals – Teller and Sequin, Siggraph 91– Luebke and Georges, I3D 95
• Visibility culling with large occluders– Coorg and Teller, SoCG 96 and I3D 97– Hudson et al, SoCG 97
Hudson et al, SoCG 97
CB
AViewpoint
Occluder
Occluder Storage
• Partition model into cells and store good occluders in the cells
• Identify likely occluders for a cell – they subtend a large solid-angle (similar to
Coorg and Teller)
• Test likely occluders – use a sample of viewpoints and compute actual
shadow volumes resulting
Occluder Usage
• At run-time– form shadow volumes from likely occluders– do view-volume cull and shadow-volume
occlusion test in one pass across the spatial sub-division of the scene
– each cell of the sub-division is tested for inclusion in view-volume and non-inclusion in each shadow volume
Occluder Test
• Overlap test (cell to shadow volume) is performed in 2D– If the subdivision uses bounding boxes, then a
very efficient overlap test is presented
Conclusions
• Cells and portals – Gives excellent results IF you can find the
cells and portals– Good for interior scenes– Identifying cells and portals is often done by
hand • General polygons models “leak”
Conclusions
• Visibility culling with large occluders– Very good for outdoor (city) scenes where
occluders are large and depth complexity can be very high
– Not good for indoor scenes in general since there are many small occluders that would need to be fused