Download presentation
Presentation is loading. Please wait.
Published byOwen Hamner Modified over 9 years ago
1
Memory-Efficient Sliding Window Progressive Meshes Pavlo Turchyn University of Jyvaskyla
2
Previous work Progressive mesh is a data structure used to encode a large number of mesh approximations –prog. mesh is similar to undo/redo mechanism of a text editor –undo/redo keeps record of modifications done on text –prog. mesh keeps record of modifications done on mesh –by performing a certain number of modifications, one obtains the mesh with required number of triangles Progressive meshes are problematic for GPUs –mesh modifications must be performed on CPU –each mesh instance requires updating its mesh data –then the updated data has to be transferred from CPU to GPU Sliding window progressive mesh (SWPM) is a solution for view-independent LOD
3
Previous work Progressive mesh contains information what to do –which edge to collapse, which vertex is split SWPM contains triangulations –these “precomputed” triangulations can be stored in static on-GPU memory buffers Vertex split Half-edge collapse
4
“Simplified patch” Simplified patch is a patch after applying simplification operator that removes the inner vertex … that includes all triangles incident to a given vertex –this vertex is called inner vertex Definitions “Patch” Patch is a set of triangles
5
SWPM simplification algorithm
6
Step 1: find the set of inner vertices –it follows from the patch definition that the inner vertices belong to an independent set
7
SWPM simplification algorithm Step 1: find the set of inner vertices Step 2: construct the patches –criterion: a patch should not contain topologically isolated triangles –all patches (denoted P 1,...,P 10 in our example) are stored in a list P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P7 P8P8 P9P9 P 10 P1P1 P2P2 P3P3 P4P4 P6P6 P5P5 P9P9 P8P8 P7P7
8
SWPM simplification algorithm Step 1: find the set of inner vertices Step 2: construct the patches around inner vertices Step 3: simplify the patches to obtain “simplified patches” –all inner vertices are removed –the simplified patches (denoted Q 1,..., Q 10 ) are appended to the list of patches P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P7 P8P8 P9P9 P 10 Q1Q1 Q2Q2 Q3Q3 Q4Q4 Q6Q6 Q5Q5 Q9Q9 Q8Q8 Q 10 Q7Q7 Q1Q1 Q2Q2 Q3Q3 Q4Q4 Q5Q5 Q6Q6 Q7Q7 Q8Q8 Q9Q9
9
SWPM simplification algorithm This memory buffer is the main SWPM data structure Required number of triangles is obtained by choosing the corresponding subsequence of elements (“window”) –window size is 10 elements in our example P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P7 P8P8 P9P9 P 10 Q1Q1 Q2Q2 Q3Q3 Q4Q4 Q5Q5 Q6Q6 Q7Q7 Q8Q8 Q9Q9 Q 10
10
SWPM buffer holds triangles as triples of indices Such an index buffer consumes 4-6 times more memory than the index buffer of the initial mesh –often SWPM index buffer is bigger than vertex buffer of the mesh –C is the amount of memory for storing a single triangle – is the number of triangles in the buffer In order to minimize the buffer size, we have to minimize Minimal is bounded –where |T 0 | denotes the number of triangles in the initial mesh SWPM index dataset size
11
Under certain assumptions, the following estimate holds – is the average degree (valence) of the inner vertices – is a mesh-dependent parameter that reflects triangulation structure Feasible triangles quality SWPM index dataset size
12
Mesh connectivity optimization 16% dataset reduction Idea: change mesh connectivity in order to reduce
13
Using this mesh as the initial one, we construct another SWPM buffer B 1 Clustered patches This is the simplest mesh we can render from the buffer B 0 –But what if we need even simpler mesh? P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P7 P8P8 P9P9 P 10 Q1Q1 Q2Q2 Q3Q3 Q4Q4 Q5Q5 Q6Q6 Q7Q7 Q8Q8 Q9Q9 Q 10 B 0 : B 1 :
14
Then, obtain simplified patches (by deleting all inner vertices) Idea: construct the “clustered patches” –a clustered patch is a patch (see definition) –a clustered patch is a union of several consecutive simplified patches Clustered patches P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P7 P8P8 P9P9 P 10 Q1Q1 Q2Q2 Q3Q3 Q4Q4 Q5Q5 Q6Q6 Q7Q7 Q8Q8 Q9Q9 Q 10 Q1Q1 Q2Q2 Q3Q3 Q4Q4 Q5Q5 Q6Q6 Q7Q7 Q8Q8 Q9Q9 Q1Q1 Q2Q2 Q3Q3 Q4Q4 Q6Q6 Q5Q5 Q9Q9 Q8Q8 Q7Q7 Q4Q4 Q6Q6 Q5Q5 Q9Q9 Q8Q8 Q7Q7 Q6Q6 Q9Q9 Q8Q8 Q7Q7 Q9Q9 Q8Q8 Q7Q7 Q9Q9 B 0 : B 1 :
15
– –thus, it is sufficient to store only the last part of B 1 Consider the buffers B 0 and B 1 –each clustered patch represents several consequtive simplified patches, so the first part of B 1 is identical to the part of B 0 Clustered patches P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P7 P8P8 P9P9 P 10 Q1Q1 Q2Q2 Q3Q3 Q4Q4 Q5Q5 Q6Q6 Q7Q7 Q8Q8 Q9Q9 Q 10 B 0 : B 1 :
16
Clustering algorithm Input: the set of simplified patches Q1Q1 Q2Q2 Q3Q3 Q4Q4 Q6Q6 Q5Q5 Q9Q9 Q8Q8 Q 10 Q7Q7
17
Clustering algorithm Input: the set of simplified patches Step 1: construct special vertices connectivity graph –any two vertices that belong to the same patch must be connected with an edge –resulting graph is not planar
18
Clustering algorithm Input: the set of simplified patches Step 1: construct special vertices connectivity graph Step 2: find the set of inner vertices –inner vertices belong to an independent set –it is possible to use the same program code, which is used in the original SWPM simplification algorithm to find the set of inner vertices
19
Clustering algorithm Input: the set of simplified patches Step 1: construct special vertices connectivity graph Step 2: find the set of inner vertices Step 3: construct the clustered patches –a clustered patch must include all simplified patches indcident to its inner vertex
20
Clustering algorithm Input: the set of simplified patches Step 1: construct special vertices connectivity graph Step 2: find the set of inner vertices Step 3: construct the clustered patches Step 4: since clustered patch is a union of several consecutive simplified patches, thus one may have to reorder the list of simplified patches
21
Replace the last part of B 0 with the last part of B 1 – resulting buffer is also SWPM The trade-off P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P7 P8P8 P9P9 P 10 Q1Q1 Q2Q2 Q3Q3 Q4Q4 Q5Q5 Q6Q6 Q7Q7 Q8Q8 Q9Q9 Q 10 B 0 : B 1 : It is possible to trade the size of SWPM index dataset for the number of approximations stored in SWPM P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P7 P8P8 P9P9 P 10
22
Results Reduction of SWPM index dataset: –via connectivity optimization: ~20% –via clustering: ~20% –via optimization+clustering: ~30% –via optimization+clustering+trade-off: >50% Clustering increases vertex cache miss ratio, but not significantly
23
? Thank you for attention
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.