Title: Ray Space Factorization for From-Region Visibility
1Ray Space Factorization for From-Region Visibility
- Tommer Leyvand
- Olga Sorkine
- Daniel Cohen-Or
- Tel-Aviv University, Israel
2From-Region Visibility
Problem of identifying which parts are visible
from a region (viewcell)
Visibility Set Valid from within the viewcell
Entire Model
3Dimensionality ofFrom-Region Visibility
- From-Region visibility is 4D
- A ray exists the viewcell through a 2D surface
and enters the target region through a 2D surface
viewcell
4From-Region Occluder Fusion
- Wonka et.al. EGRW 2000
- Koltun et.al. EGRW 2000
- Schaufler et.al. SIGGRAPH 2000
- Durand et.al. SIGGRAPH 2000
5A Ray Space Technique
t0
1/4
t
s0
1/4
3/4
1/2
1/2
3/4
s
1/2
3/4
1
0
1/4
Primary Space
Ray Parameter Space
6A Ray Space Technique(Cont.)
- Appropriate for 2D from-region visibility
- Exact (up to discretization)
- Can be realized with common graphics hardware
- Can be used to accelerate 2.5D from-region
visibility - Koltun et.al. EGRW 2001
- Bittner et.al. PG2001
7Our Factorization
We factor the 4D visibility problem into
horizontal and vertical components
Ray Space Approach
Umbra Merging Approach
Horizontal direction
Vertical direction
8Lumigraph/Light Field
A 2D grid of 2D images
Light field
9Vertical Slice
The visibility is solved within each vertical
slice
A vertical slice
Within a vertical slice
Horizontal direction
Vertical direction
10Our Main Contribution
- A factorization that
- Exploits vertical coherence
- Maps to the graphics card
11Algorithm Overview
- Per object
- Parameterization of vertical slices
- Umbra encoding
Vertical umbra
footprint
12Algorithm Overview(Cont.)
- Parameterization of vertical slices
- Umbra encoding and visibility test
- Merging umbrae
Vertical umbra
footprint
13Horizontal Parameterization
- Produces a 2D polygonal footprint of scene
objects - Project scene objects onto the ground plane
- Maps planes slicing both the viewcell and some
object into points in parameter space
t0
1/4
s0
1/4
3/4
1/2
1/2
3/4
14Building the footprint
- Our parameterization maps a 3D triangle into
several 2D polygons - Each point in the resulting footprint represents
a plane that slices both the viewcell and the
segment
t
1/4
t0
q
s0
1/4
1/2
3/4
s
1/2
3/4
1/2
3/4
1
0
1/4
15Umbra Encoding
Encode directional umbra using supporting and
separating lines
Vertical slice P(s,t)
v
directional umbra
t
(s,t)
Intersection of some scene object with slice
viewcell
s
Parameter Space
16Global Occlusion Map
- Stores the directional accumulated umbra for all
directions - Encoded by sets of supporting and separating
angles - Each set encodes a single umbra
- Traverse the scene top-down front-to-back, and
- Bounding boxes are tested for visibility
- Objects in visible leafs augment the map
17Testing Visibility
- Within a slice
- Test occlusion by comparing supporting angles
- Performed in parallel on all (s,t) slices
18Merging Umbrae
- Increase the current accumulated umbra in the
occlusion map - Augment if directional umbra intersects
viewcell
19Merging Umbrae
- Increase the current accumulated umbra in the
occlusion map - Augment if directional umbra intersects
- Otherwise create another umbra entry
- In case there are too many entries, discard
viewcell
20Implementation
- Cg implementation
- 4x32bit floating point PBuffers
- Used to store a single set global occlusion map
- Fragment programs for testing occlusion and
merging umbra - Calculates less conservative values
- Previous generation hardware implementation
- Using occlusion query and OpenGL
21Results
Procedural Urban Model
Box Field Model
Vienna 2000 Model
3D-e
2.5De
2.5D
22Video
23Thanks
- Israel Science Foundation
- Israeli Ministry of Science
- Reviewers
24The End
Before
After
25Procedural City
- XML configured city generation engine
- Simple building blocks
- 3D boxes and pyramids
- Rotation and scaling operators
- Texture groups
- Instantiation parameters within user defined
random limits - Exports city to VRML 2.0
26Conservativeness
Piecewise constant approximation of the rational
umbra function at each slice
Each vertical plane is not infinitesimal - it has
some width