simplification of arbitrary polyhedral meshes

Download Simplification of Arbitrary Polyhedral Meshes

Post on 20-Jan-2016




0 download

Embed Size (px)


Simplification of Arbitrary Polyhedral Meshes. *Presented by Shaun D. Ramsey at CGIM 2003 ra msey() Motivation. Model Size Interactive/Hardware Rendering Editing Modeling Programs Transmission. Level of Detail (LOD) - PowerPoint PPT Presentation


  • Simplification of Arbitrary Polyhedral Meshes*Presented by Shaun D. Ramsey at CGIM 2003 ramsey()

    Shaun D. Ramsey*Martin BertramCharles HansenUniversity of UtahUniversity of KaiserslauternUniversity of Utah

  • MotivationModel SizeInteractive/HardwareRenderingEditingModeling ProgramsTransmission

  • Previous WorkLevel of Detail (LOD)Progressive Meshes (PM)Edge CollapsesTriangulate PolygonsFrom Sanders Texture Mapped Progressive Meshes

  • The ProcessEdge SelectionVertex SelectionEdge Collapse

  • The ProcessEdge SelectionVertex SelectionEdge Collapse

  • The ProcessEdge SelectionVertex SelectionEdge Collapse

  • Edge SelectionFor All EdgesCompute Error

    Choose Minimal Error

    Error MetricDot Product TestAdd Threshold

  • Polygon NormalsTriangles



    AAABBBA = p - p ; B = p - p i-1 i i+1 i

  • Refined Edge SelectionPre-computation

    Random Selection

    Single Selection

  • Vertex SelectionHalf-edge


  • Vertex SelectionHalf-edge


  • Collapse and Split

  • OptionsHalf or Full-edge CollapsesChanging the Error MetricError ThresholdPercent/Number of Edges SearchedTreat N-sided Polygons Differently

  • Threshold Differences Maximum Simplification256 1478 6492 13795 0.950 0.990 0.999 0.9999

  • Threshold DifferencesRemove 15000 Polygons0.00 minimum dot product 0.99 minimum dot product

  • ResultsPercentage SearchOriginal 42 Edges 425 Edges

  • Results Simplification~870k polygons ~370k polygons

  • ResultsLOD Simplification 871k378k 67k

  • Results Timing0.99 minimum dot product, search 1% of the mesh

    ModelOriginalSimplifiedTime (s)Dragon8714144858442.900Bunny6945169584.110Crocodile21590116953.670Venus42547110.310

  • Future WorkSelective RefinementMulti-resolution EditingPreservation of Feature LinesSurface ParameterizationSurface Segmentation

  • AcknowledgementsUtah Graphics GroupStanford Scanning RepositoryAvalon

    Model sizes are becoming increasingly larger which makes them difficult to render and edit interactively on any hardware.Modeling programs and designers create polygons with an abritrary number of sides. These polygons may also be non planar.Models of such sizes can also be difficult to transmit and display remotely. By supporting progressive transmission, a small coarse mesh can be transmitted and displayed while being slowly updated from the network.

    These goals can be achieved through level of detail. We simply perform operations on a mesh that allow a multi-resolution representation of the mesh which well call LOD or level-of-detail from now on.LOD allows the amount of detail to be arranged to meet hardware performance or arranged according to the size of an object in screen space. Thus, rendering times can often be reduced with little or no loss in visual accuracy. There have been quite a variety of LOD methods presented but none have been built for arbitrary polyhedral meshes. For a more complete run-down of all the LOD types available, please see the paper.The method we have chosen to extend is Hoppes Progressive Meshes. PMs solve the problem on triangle meshes by collapses edges of triangles. Other problems like texture mapping by Sander have been solved on these PMs. So what if we have non-triangular meshes that we wish to turn into PMs. First we must break up and somehow triangulate polygons with more than three sides. However, if the objective is to simplify a mesh, this could increase the size of a mesh (a factor of 2 for quad meshes for example). Our method extends this well-known method into the arbitrary polyhedral domain.We choose to extend two edge collapse techniques for our method.Here we describe the overall process of an edge collapse.First we choose some edge for the edge collapse. Generally this is done by some error metric. We describe our error metric later.- Secondly we choose a vertex to collapse the edge. In this case, lets choose the vertex as the midpoint of the edge (this is what well call a full edge collapse).Lastly we perform the edge collapse. For triangle meshes two tris disappear for each collapse. Simply replace the edge with the vertex. This requires a number of changes to most data structures for a mesh.Also, we must store some information to allow the mesh to be progressive. Well discuss this in more detail later as well. Visually you can see the effect on a mesh here. Ill switch back and forth so that you can see some of the effects. Lets walk through our simplification process step by step and describe what changes need to be made to extend the edge collapse algorithm to arbitrary meshes.What we would like to do is compute the error for collapsing every edge and choose the collapse with the least error. To do this we need to create a metric for describing the error of a mesh or at least for describing how to select an edge.We simply choose the difference in angle in the normals of a polygon before and after a collapse. In this example, an edge is chosen and collapsed. The polygons which are modified (non-grey) are the polygons normals which we compare. The smallest dot product will represent the most change in a normal (negative values mean a polygon flipped). We set a threshold in the metric as well. Simply, if the error in removing an edge is higher than this threshold, we do not allow the collapse.What does this mean for larger-sided polygons?Computing the normal of a triangle is easy. Simply take the cross product of two edges.For quads, we use the cross product of the diagonals.For N-sided polygons, we take the cross product of each pair of adjacent edges and average them. This is represented by the equation here and gives a rough estimate of The best compression would be to compute an error for removing any edge in a mesh. This is updated on the fly as edges are removed. This could work well on small meshes, but thats not really our target and we want a more efficient version however.We select a random number of valid edges (we must test edges and make sure that removing them is above the error threshold) and remove the best edge from this set.We have found that as the threshold becomes constrained, we can search fewer edges and even possibly take the first valid edge which passes the threshold test.

    The edge collapse methods we consider differ only in the vertex selection phase. In a full-edge collapse we choose the new vertex as the midpoint of the edge. In half-edge collapses, we collapse the edge to an endpoint of the vertexFull edge collapses alter more of the mesh, but the amount that each vertex must move is less than in a half-edge collapse. Half edge collapses on the other hand leave vertices on the mesh and alter a smaller local region. In these slides we show examples. You can see how the half-edge typically affects only 4 polygons.- Here we show some full edge collapses. Generally 6 polygons are affected but the mesh seems less drastically altered.

    The last step is to perform the actual collapse. So in data structures we must replace references to the endpoints of the edge collapsed to the new vertex. For progressive transmission and geomorphing level of detail we must also store information about how to split the vertex.In a tri mesh we must store the endpionts of the collapsed edge connected to the vertex replacing the edge. Lastly we must list which polygons are incident with which endpoint.In a polygonal mesh, we must be careful to label non-triangles with a lost edge. We also tag the new vertex in these polygons to alert us of a vertex split to occur.There are a bunch of options to extend this technique rather directly. Some have been implemented and some we have left as future work.The user can control which edge collapse type to use. In fact, we should extend this to be more automatic and choose the best vertex to minimize error in the mesh.The threshold for the dot-product test can be changed to any value. We have discussed some of our work earlier, but its worth repeating that high thresholds minimize the number of searches necessary in a mesh.The user may modify how many edges to search before making a decision. Only valid edges are considered as searched edges, although several edges may be searched before a collapse above the threshold value is found.Lastly, the user may wish to simplify, preserve, or treat n-sided polygons differently for any reason.These options allow the user to tailor the simplification process if needed. Most of the values can be set to safe defaults however.Full v2.spec 17018 vertices 17016 polygons .9999 11314, 13795 (4959quads) .999 4426 vertices 6492 polygons (1990 quads) .990 1004 verts 1478 polys (152 quads) .950 318 vertices 256 polygons (3 quadS)

    0.00 and 0.99 as the dot product test while remove 15000 polygons 3300 polys hereHere we see the venus model using an order of difference in the percent value.The left is the full model.The right show the models under 42 valid edges searched before simplification and 425 edges searched. Its not obvious which is which, but the right most model checks 425.Roughly 370.000 polys compared to the original 870,000871k , 378k, 67k


View more >