Title: Visibility Sorting and Compositing without Splitting for Image Layer Decompositions
1Visibility Sorting and Compositing without
Splitting for Image Layer Decompositions
2Layered Decomposition Problem
- Given set of moving geometric parts,
- and moving camera,
- find visibility ordering for every frame.
sort
composite
parts
sorted images
composited result
3Occlusion Cycles
split
group
When no order exists, can split or group parts.
4Non-Splitting Layered Decomposition
- Dont split parts that form occlusion cycles
- run-time splitting is slow
- splitting is often unnecessary
- splitting destroys coherence
Sorting requires no global separating plane.
5Image-Based Rendering AccelerationLengyel97
sprites
composited image
6Other Applications
- fast special effects
- animation playback with selective display
- incorporation of external image streams
- image stream compression
- fast hidden line rendering
- z resolution targeting
7Previous Work
- invisibility culling Greene93,Zhang97
- analytic hidden surface removal Mulmuley89
- global visibility Teller93,Durand97
- image layer decompositions
Schumacker69,Newell72,Fuchs80 - dynamic visibility Torres90,Sudarsky96
- depth sorting for special effects Max85
8Occlusion Graphs
- pairwise occlusion relation A?E B
- relations on parts forms directed graph
occlusion graph
A
B
view from E
side view
9Occlusion Graphs (Ex. 1)
A
B
A
B
C
C
10Occlusion Graphs (Ex. 2)
A
B
A
B
C
C
11Occlusion Graphs (Ex. 3)
A
B
C
Forms strongly connected component (SCC).
12Resolving Non-Binary Cycles
SCCs need not be rendered as an aggregate!
13Occlusion Testing via Collision
B
A
For convex hulls of objects A and B B?E A ?
ch(A? E) ? B ? ?
14Occlusion Testing via CollisionOccluding Example
B
ch(A? E) ? B ? ? ? B?E A
15Occlusion Testing via CollisionNon-Occluding
Example
B
16Trivial Sorting Algorithm
- compute occlusion graph
- detect and topologically sort SCCs
- at least quadratic in number of parts!
A
C
F
D
17Improving the Trivial Algorithm
A? B,C,D,F but nothing occludes A. Process A
first.
18Improving the Trivial Algorithm
A
C
F
D
Sorting Output A
19Improving the Trivial Algorithm
C
B
F
D
Sorting Output A, B
20Improving the Trivial Algorithm
C
F
D
Sorting Output A, B, C
21Improving the Trivial Algorithm
F
D
Sorting Output A, B, C, D, F
22Incremental Visibility Sort (IVS)
- similar to Newell, Newell, Sancha algorithm,
1972 - sorts parts, not polygons
- detects SCCs, doesnt split
- uses order from last query, not depth order
- culls more efficiently using kd-tree
A
Z
B
Depth order doesnt indicate visibility order.
23IVS Algorithm
- While L is nonempty, pop off top element A
- if A is unmarked
- if nothing remaining on L occludes A
- send A to output
- else
- mark and reinsert A into L
- else // A is marked
- check for occlusion cycle
- if found, group cycle objects and reinsert
- else reinsert A into L
24Occlusion Culling
- Fundamental IVS query
- Which parts remaining in L occlude A?
- use convex hulls around parts
- bound hulls with spatial and angular extents
- occlusion cull reduces to 1D interval
intersection - bounded parts organized in dynamic kd-tree
object
kd extent
convex hull
25Spatial Extents
B ? A
B ? A
/
26Angular Extents
B ? A
B ? A
/
27Kd-Tree Occlusion Culling
- rebalance kd-tree every frame
- kd-tree supports part deactivation
x1
A
y2
y1
y1
y2
C
A
y
x1
x
28Exact Occlusion Testing
- Does B ? A?
- uses hybrid Chung/Gilbert collision algorithm
- requires extremal vertex query on A and B
- no need to create ch(A? E) dynamically
- exploits coherence in object motion
extremal vertex minimizes Dv on A
D
A
v
29Results (Video)
30IVS Complexity
31Performance with Increasing Objects
32Future Work
- animation previewer
- continuous time queries
- adaptive splitting, especially for terrain
- faster, less conservative visibility tests
- automatic part decomposition
- visibility sorting with minimal splitting
33Conclusions
- non-splitting layered decomposition useful
- software visibility sorting is practical
- basic ideas of approach
- exploit temporal and spatial coherence
- exploit properties of convex objects
- exploit incremental collision detection algorithms
34(No Transcript)
35Extent Tracking
- use vertex descent
- on convex polytope, local minimizer of extent is
also global minimizer
v1
D
v0
v0
frame t1
frame t0
36Results Tumbling Toothpicks
- eccentric ellipsoids moving in cubical volume
- uniform scale (us) add more of same size
- biases occlusion complexity superlinearly
- uniform density (ud) add more of scaled size
- occlusion complexity increases linearly
37Performance with Increasing Velocity
38Performance with Increasing ObjectsUniform
Density Uniform Scale
39Kd-Tree Culling Performance
40Results Canyon Flyby
- six aircraft flying through valley
- investigates rendering acceleration at various
levels of terrain splitting - update rate assumptions
- aircraft parts 20
- terrain parts 70
- sky 40
- aggregation penalty render every frame
41Results Canyon Flyby
- cpu times are in ms per frame
- update rate is poly-weighted
42Newell, Newell, Sancha (1972)
- traverse depth-sorted list of polygons
- if next polygon doesnt overlap, send to output
- otherwise use tests of increasing complexity
- screen bounding box, vertex/plane, 2d
intersection - if unoccluded, polygon is sent to output
- if occluded, polygon is marked and reinserted
- marked polygons are split to remove cycle
H
C
F
A
B
Z
G