next up previous
Next: Progressive Transmission Up: Implementation Previous: Geomorphing

Parallel preprocessing

Meshes worth being simplified with any multiresolution method usually consist of many thousands of triangles. Therefore it is very unlikely that two consecutive edge collapse operations affect neighboring regions. A parallel preprocessing algorithm can take advantage of this property. This implementation is based on POSIX threads. Several concurrent threads try to perform the local mesh operations (edge collapses) in parallel. Before modifying the mesh it must obviously be guaranteed that no other thread is currently working on the involved region (marked red in figure

Figure 6: Locking considerations for parallel preprocessing

6). Note that the red regions are directly modified by collapsing the thick edges and therefore must not overlap. The green regions (consisting of all faces containing at least one green vertex) are also required to be untouched during the creation of the simplification record. But because only read accesses are performed, they may safely overlap as indicated in figure 6. A proper locking technique applied to the green vertices is sufficient to avoid conflicts.

Markus Grabner