This flashcard is just one of a free flashcard set. See all flashcards!
27
How are Progressive Meshes generated, stored and reconstructed? How can we do Selective Refinement?
Original mesh:
Incremental Decimation applies a series of decimation operators:
By reversing these operators, we can reconstruct from the decimated mesh
In order to make a Halfedge Collapse operator reversible, we need to store:
Thus, each operator is stored as
Selective Refinement
If we want to undo an operator
the problem might be that one of the opposite vertices or does not exist:
In order to solve this problem, we store the refined mesh as a binary forest where the leaf nodes are the unrefined vertices and each inner node corresponds to a decimation operator.
During decimation, we remember from which original vertices our mesh started out. Initially, we store at every triangle corner a pointer to the incident vertex. As we decimate the mesh, these triangle corner labels remain intact. When we store an operator, instead of storing , as the vertices in the decimated mesh, we store the values stored in the respective triangle corners.
If we want to refine at a vertex , we find the two opposite vertices , in the currently refined mesh by walking up the binary forest of operators until we find vertices that have already been instantiated.
Incremental Decimation applies a series of decimation operators:
By reversing these operators, we can reconstruct from the decimated mesh
In order to make a Halfedge Collapse operator reversible, we need to store:
- Position of the source vertex which was collapsed:
- A pointer to the target vertex towards which was collapsed:
- Pointers to the two boundary vertices which were adjacent to both and before the collapse:
Thus, each operator is stored as
Selective Refinement
If we want to undo an operator
the problem might be that one of the opposite vertices or does not exist:
- / might not exist yet if it is still not expanded
- / might not exist anymore if it has previously been split
In order to solve this problem, we store the refined mesh as a binary forest where the leaf nodes are the unrefined vertices and each inner node corresponds to a decimation operator.
During decimation, we remember from which original vertices our mesh started out. Initially, we store at every triangle corner a pointer to the incident vertex. As we decimate the mesh, these triangle corner labels remain intact. When we store an operator, instead of storing , as the vertices in the decimated mesh, we store the values stored in the respective triangle corners.
If we want to refine at a vertex , we find the two opposite vertices , in the currently refined mesh by walking up the binary forest of operators until we find vertices that have already been instantiated.
Flashcard info:
Author: janisborn
Main topic: Informatik
Topic: Computergrafik
School / Univ.: RWTH Aachen
City: Aachen
Published: 18.05.2022