Mesh Simplification Mesh Simplification 1 Spring 2010
The The Law The The Law Law of Law of of Cosine of Cosine Cosine Cosine � Here are some commonly used formulas. � First, we learn that c 2 = a 2 + b 2 – 2 ab cos( θ ), where ( ) θ is the angle opposite to side c . � Vector form: |X − Y| 2 = |X| 2 +|Y| 2 − 2|X| ⋅ |Y|cos( θ ). 2|X| |Y|cos( θ ). � Vector form: |X Y| |X| |Y| � Note that |X| 2 = X ⋅ X, where ⋅ is the inner product. � Since (X − Y) ⋅ (X − Y) =X ⋅ X+Y ⋅ Y-2X ⋅ Y, we have X ⋅ Y � Si (X Y) (X Y) X X+Y Y 2X Y h X Y = |X| ⋅ |Y|cos( θ ). θ θ b a X Y 2 X − Y c
Projection Projection Projection of Projection of a Vector of a Vector Vector to Vector to to Another to Another Another Another � Let A and B be two vectors. We wish to compute the length of projecting A to B. � It is obvious that the length is L = |A|cos( θ ) . � Since A ⋅ B=|A| ⋅ |B|cos( θ ), we have � Since A B |A| |B|cos( θ ), we have ⋅ A B B = = θ θ = = = = A A A A A A | | | cos( ) | | cos( ) | | | | L L ⋅ A B B | | | | | A θ θ B L = |A|cos( θ ) 3
Point Point to a Plane Point Point to to a Plane Plane Distance: lane Distance: Distance: 1/2 Distance: 1/2 1/2 1/2 � Let a plane P be represented by a base point B and a normal vector n, where |n| = 1. � Compute the distance from a point X to P . � Projecting X to n yields the distance |X B|cos( θ ). � Projecting X to n yields the distance |X − B|cos( θ ). � Since cos( θ )=(X − B) ⋅ n/(|X − B| ⋅ |n|)=(X − B) ⋅ n/|X − B|), the distance is simply (X − B) ⋅ n the distance is simply (X − B) ⋅ n. X |X − B|cos( θ ) n X − B θ Compute the perpendicular foot B B from X to plane P . Easy! P 4
Point Point to Plane Point Point to to Plane Plane Distance: lane Distance: Distance: 2/2 Distance: 2/2 2/2 2/2 � Sometimes the plane is given by ax + by + cz + d = 0, where a 2 So e es e p e s g ve by ax by cz d 0, w e e a + b 2 + c 2 = 1 ( i.e ., normalized). � The normal vector of this plane is n = < a , b , c >. p � If B = < u , v , w > is a point in this plane, we have au + bv + cw + d = 0 and au + bv + cw = - d . � The distance from X = < x , y , z > to this plane is (X – B) • n. � Plugging B and n into this equation yields: (X - B) • n = (< x , y , z > - < u , v , w >) • < a , b , c > = < x , y , z > • < a , b , c > - < u , v , w > • < a , b , c > < x y > • < a b c > < u v w > • < a b c > = ( ax + by + cz ) – ( au + bv + cw ) = ( ax + by + cz ) – (- d ) ( ax by cz ) ( d ) = ax + by + cz + d 5
Volume Volume of Volume Volume of of a Parallelepiped: of a Parallelepiped: Parallelepiped: 1/2 arallelepiped: 1/2 1/2 1/2 � A parallelepiped is defined by three vectors u, v and w. p e ep ped s de ed by ee vec o s u, v d w. w u v v � The parallelogram defined by u and v has an area of |u| ⋅ |v|sin( θ ), which is the length of vector u × v, where θ is | | | | ( ), g , the angle between u and v. area = base × height = |u|( |v|sin( θ ) ) v |v|sin( θ ) = |u||v|sin( θ ) = |u × v| θ u u 6
Volume Volume of Volume Volume of of a Parallelepiped: of a Parallelepiped: Parallelepiped: 2/2 arallelepiped: 2/2 2/2 2/2 � The volume of a parallelepiped is the product of its base e vo u e o p e ep ped s e p oduc o s b se area and its height. � The base area is |u × v| . | | � Projecting w to u × v yields the height (u × v) ⋅ w/|u × v|. � Therefore, the volume is: , = × Volume BaseArea Height u × v w w × ⋅ u v w ( ) = × u v | | v (u × v) ⋅ w × u v | | u u = × ⋅ u v w ( ) 7
Volume Volume of Volume Volume of of a Tetrahedron of a Tetrahedron Tetrahedron etrahedron � A tetrahedron is also defined by three vectors u, v and w. e ed o s so de ed by ee vec o s u, v d w. � The volume of a tetrahedron is (BaseArea × Height)/3. � Base area is half of the parallelogram defined by u and v, � Base area is half of the parallelogram defined by u and v, and is equal to |u × v|/2. � Height is our old friend, projecting w to u × v, which is g , p j g , (u × v) ⋅ w/|u × v|. � Therefore, the volume is u × v 1 = × Volume BaseArea Height w 3 × ⋅ ⎛ ⎛ ⎞ ⎞ u v w 1 1 ( ) v (u × v) ⋅ w/| u × v| = × u v ⎜ | | ⎟ × u ⎝ ⎠ u v 3 2 | | 1 ( 1 = × ⋅ u v w ) 8 6
Mesh Mesh Simplification: Mesh Mesh Simplification: Simplification: 1/2 Simplification: 1/2 1/2 1/2 � Mesh simplification/decimation is a class of � M h i lifi i /d i i i l f algorithms that transform a given polygonal mesh into another with fewer faces edges and mesh into another with fewer faces, edges, and vertices. � The simplification process is usually controlled � The simplification process is usually controlled by a set of user-defined quality criteria that can preserve specific properties of the original preserve specific properties of the original mesh as much as possible ( e.g ., geometric distance, visual appearance , etc). , pp , ) � Mesh simplifications reduces the complexity of a given mesh. g 9
Mesh Mesh Simplification: Mesh Mesh Simplification: Simplification: 2/2 Simplification: 2/2 2/2 2/2 � Si � Simplification schemes usually work iteratively lifi i h ll k i i l ( i.e ., removing a vertex/edge at a time) and can be reversed Thus one can transmit the final be reversed. Thus, one can transmit the final result followed by the “reversed” operators. � A mesh simplification scheme can be viewed as a � A mesh simplification scheme can be viewed as a decomposition operator to obtain a low frequency component ( i.e ., the decimated mesh) and a high component ( i.e ., the decimated mesh) and a high frequency component ( i.e ., the difference between the original and decimated meshes). g ) Then, a reconstruction operator can perform the inverse decimation to recover the original data from its low frequency component. 10
Mesh Mesh Simplification Mesh Mesh Simplification Simplification Approaches Simplification Approaches Approaches pproaches � Vertex Clustering: It is in general fast, robust and of O ( n ), where n is the number of vertices; however, quality is not always satisfactory. � Incremental Decimation: It can deliver higher g quality meshes in most cases, and can take arbitrary user-defined criteria into account according to how the next removal operation is chosen. However, complexity may be O ( n log 2 n ) or 2 even O ( n 2 ). � Resampling: The most general approach; however, esa p g: e ost ge e a app oac ; oweve , new samples may be freely distributed. 11
Vertex Vertex Vertex Clustering: Vertex Clustering: Clustering: 1/4 lustering: 1/4 1/4 1/4 � Gi � Given a tolerance ε > 0, the t l > 0 th bounding space of the given mesh is partitioned into cells h i titi d i t ll with diameter ≤ ε . � For each cell a representative vertex is computed (will talk ε ε about this later). If a cell has more than one vertices, they ε are all mapped to this representative vertex representative vertex. 12
Vertex Vertex Vertex Clustering: Vertex Clustering: Clustering: 2/4 lustering: 2/4 2/4 2/4 � Then, degenerate triangles � Th d i l are removed. � If P � If P and Q are the d Q h representative vertices of p p 0 , p 1 , …, p m and q 0 , q 1 , …, p p and q q q n , respectively, P and Q are connected in the are connected in the decimated mesh if at least one pair of vertices (p i ,q j ) p (p i ,q j ) solid: original mesh g was connected in the dotted: new mesh original mesh. 13
Vertex Vertex Clustering: Vertex Vertex Clustering: Clustering: 3/4 lustering: 3/4 3/4 3/4 � The resulting mesh may not be a 2-manifold even though the original one is, because a portion of a surface could collapse to a point. � However, it can reduce the complexity of a mesh significantly, and guarantee solid: original mesh g a global approximation of dotted: new mesh the original mesh. 14
V Ver V ertex t t ex Cl Cl Clus uster t t ering: i i ng: 4/4 4/4 4/4 4/4 � How to compute those representatives? � The easiest way is to average the vertices in the same cell. If P 1 , P 2 , …, P k are vertices in the same cell, then the representative is P = (P 1 + P 2 + … + P k )/ k . � O � Or, depending on the importance of each vertex (of d di th i t f h t ( f the mesh) one might assign a weight w i ≥ 0 to vertex P i . Then, the representative of P 1 , P 2 , …, P k in the P i Then the representative of P 1 P 2 P k in the same cell is their weighted average: + + + P P P P … P P w w w = P 1 1 2 2 k k + + + … w w w 1 2 k 15
Incremental Incremental Decimation: Incremental Incremental Decimation: Decimation: 1/2 Decimation: 1/2 1/2 1/2 � Incremental algorithms remove one vertex or edge at a time based on user-specified criteria. � Criteria can be binary or continuous. � Binary criteria determine if a vertex is allowed to � Binary criteria determine if a vertex is allowed to remove ( i.e ., yes or no), while a continuous one rates the quality of the mesh ( i.e ., roundness of rates the quality of the mesh ( i.e ., roundness of triangles, small normal changes between neighboring triangles) before/after removal. neighboring triangles) before/after removal. 16
Recommend
More recommend