Title: Constrained Strip Generation and Management for Efficient Interactive 3D Rendering
1Constrained Strip Generation and Management
forEfficient Interactive 3D Rendering
- Pablo Diaz-Gutierrez, Anusheel Bhushan,
- M. Gopi and Renato Pajarola
- Computer Graphics Lab
- University of California, Irvine
2Talk Outline
- Triangle strips Discussion
- Single-strips
- Constrained single-strips
- Applications of constrained single-strips
- Results and conclusion
3Triangle Strips Traditionally
- Improve rendering performance
- Render T triangles
- Using GL_TRIANGLES send 3T vertices.
- S strips 2ST vertices.
- Not negligible init time per strip.
- Alternating vs. generalized strips.
- Incremental vs. global algorithms
4Triangle Strips Recent work samples
- Hoppe 99 Optimization of mesh locality for
transparent vertex caching. - Strip arrangement depends on cache size
(typically 16-32 verts.). - Mitani and Suzuki 04 Making papercraft toys
from meshes using strip-based approximate
unfolding. - Rossignac 99 Edgebreaker Connectivity
Compression for Triangle Meshes. - Isenburg 00 Triangle Strip Compression.
- Stewart 01 Tunneling for triangle strips in
continuous level-of-detail meshes - El Sana, Azanli, Varshney 99 Skip Strips
Maintaining Triangle Strips for View-dependent
Rendering
Images courtesy of paper authors
5Talk Outline
- Triangle strips Discussion
- Single-strips
- Constrained single-strips
- Applications of constrained single-strips
- Results and conclusion
6Single-strips
- A single-strip is a Hamiltonian path in the dual
graph of a triangle mesh. - Calculating a Hamiltonian path is NP-complete
Introduce some vertices to simplify problem. - We use single-loops First and last triangles are
adjacent.
7Why single-strips?
- Pure performance doesnt justify single-strips
- With long strips, one extra vertex is negligible.
- Single-strips have more advantages
- Some topological properties can be derived.
- Use linearity to compress connectivity.
- Easy to keep long strips during simplification.
- Simpler data structures and algorithms.
- Reduce overhead (proportional to number of
strips).
8Single-strip creation
- We use Gopi and Eppstein 04 single-strip
algorithm. - A perfect graph matching matches every vertex to
exactly one of its neighbors. - Exists for a 3-regular, 3-connected graph
(Petersens theorem). - Such as the dual graph of a triangulated
manifold. - Perfect matching
- Matches every triangle to exactly one of its
neighbors - Disjoint triangle loops formed by unmatched
neighbors - Then merge loops to form a single strip loop.
9Single-strip creation merging loops
Insufficient to merge all disjoint loops in the
mesh. Need another operation.
10Single-strip creation merging loops
- Edge split Identify separating matched edge.
11Single-strip creation merging loops
- Edge split Split matched triangles adding
Steiner vertex.
12Single-strip creation merging loops
- Edge split Nodal vertex processing at the
Steiner vertex.
13Single-strip creation merging loops
- Edge split Two loops merged into one.
14Single-strip creation Strip control
- No control over resulting single-strip.
- By control we mean
- Deciding the direction of growth
- Making it follow patterns
- Space-filling curves
- Bounding it to a region of the mesh
- Restrict it to grow in planar regions
- Why dont we have it?
- Strip control is fine grain (local decisions)
- This is a global, coarse grain approach Input a
mesh, output a single-strip.
?
15Talk Outline
- Triangle strips Discussion
- Single-strips
- Constrained single-strips
- Applications of constrained single-strips
- Results and conclusion
16Our contribution
- We present an algorithm that provides certain
control over the single-strip. - Made to follow preferred strip directions
17Constrained Single-strips
- How to control a single-strip?
- Advice (assign weights) the matching algorithm to
choose certain edges of the dual graph over
others. - Application-dependent
- Higher weight
- Desired matched edge
- Non-desired strip edge
- Weighing scheme is independent of stripification
algorithm - Use Weighted Perfect Matching
0
0
0
3
1
0
0
0
0
0
0
4
5
1
1
1
0
0
0
0
0
0
2
1
1
1
0
18Constrained Single-strips
- How to control a single-strip?
- Advice (assign weights) the matching algorithm to
choose certain edges of the dual graph over
others. - Application-dependent
- Higher weight
- Desired matched edge
- Non-desired strip edge
- Weighing scheme is independent of stripification
algorithm - Use Weighted Perfect Matching
19Constrained Single-strips
- How to control a single-strip?
- Advice (assign weights) the matching algorithm to
choose certain edges of the dual graph over
others. - Application-dependent
- Higher weight
- Desired matched edge
- Non-desired strip edge
- Weighing scheme is independent of stripification
algorithm - Use Weighted Perfect Matching
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
20Constrained Single-strips Efficiency
- Original single-strip algorithm O(N2)
- N Number of triangles
- Dominated by matching algorithm
- Constrained single-strip O(N2 log N)
- Performance penalty for weighted matching
21Talk Outline
- Triangle strips Discussion
- Single-strips
- Constrained single-strips
- Applications of constrained single-strips
- Back-face culling
- Improvement of vertex cache usage
- Results and conclusion
22Back-face culling with single-strips
- Back-face culling to avoid rendering non visible
faces due to orientation. - More useful if many faces are tested together
- Force the strip to form planar clusters
- Test long segments of the strip at same time
23Back-face culling with single-strips
- Weight calculation
- Variational Shape Approximation Cohen-Steiner et
al. 04 to find planar clusters of triangles and
assign - High weight in edges across region borders
- Low (zero) weight everywhere else
- Resulting disjoint loops remain within planar
regions
24Back-face culling with single-strips
- Efficient visibility testing
- Construct segment tree
- Associate view-cone to each segment
- Test root segment first
- Front-facing Render segment
- Back-facing Skip segment
- Partially front-facing Traverse down the
hierarchy - Long strips after culling
25Talk Outline
- Triangle strips Discussion
- Single-strips
- Constrained single-strips
- Applications of constrained single-strips
- Back-face culling
- Improvement of vertex cache usage
- Results and conclusion
26Improving vertex cache usage
- Target maximizing vertex cache hit ratio
- Strip reuses recent vertices
- Just like a space-filling curve
- Duality Space-filling curve and its medial axis
- Equivalently Single-strip and edge spanning tree
Sierpinski space-filling curve and its medial axis
Our high-locality single-strip
27Improving vertex cache usage
- Weight calculation
- Calculate breadth-first edge tree
- Weight 1 for edges in the tree
- Weight 0 for edges NOT in the tree
- Cache oblivious strip layout
- Cache-hit ratio around 90 of other cache-aware
layouts for any specific cache-size Hoppe 99,
Bar-Yehuda et al. 96
28Talk Outline
- Triangle strips Discussion
- Single-strips
- Constrained single-strips
- Applications of constrained single-strips
- Results and conclusion
29Results
Frames per second for real-time rendering of
single-strips on 4 models with different
constraints. Values measured during a 360 degree
walk-around of the model.
30Contributions
- Added control to single-stripification
- Demonstrated two applications
- Back-face culling while maintaining long strips
- Cache-oblivious strip optimization
31Current and future work
- Handle manifolds with boundaries (done)
- Patch-based single-stripification.
- Specialized perfect matching algorithms (for
3-regular graphs). - Use approximate (non-perfect) matching.
- Test different space-filling curves.
- Find other applications of single-strips.
32Thank you.
- Questions, comments and corrections are welcome