目录
1.1.1 Loop细分(Loop Subdivision)
1.1.2 Catmull-Clark细分(Catmull-Clark Subdivision (General Mesh))
(4)算法规则(FYI: Catmull-Clark Vertex Update Rules (Quad Mesh))
(3)坍缩一条边之后,周围的边会变化,周围边的二次度量误差也会变化,怎么办?
1.3 网格正则化(Mesh Regularization (same #triangles))
1 网格(Mesh)-续
网格操作:几何处理(Mesh Operations: Geometry Processing)
·网格细分(Mesh subdivision)
·网格简化(Mesh simplification)
·网格正则化(Mesh regularization)
1.1 网格细分(Mesh subdivision)
1.1.1 Loop细分(Loop Subdivision)
表面细分不仅要增加三角形的数量,而且使模型的表面更加光滑。
注意,Loop细分和循环没有任何关系,只是因其发明人叫Loop。
loop细分仅能对三角形网格进行细分。
下面介绍loop细分的步骤:
(1)将三角形分割成4个
比较简单,如图分割即可
(2)调整新、老顶点的位置
·对于新产生的顶点
该新顶点位于某一条边上,且有两个三角形共用这条边。对于两个三角形的顶点,若顶点落在这条公共边上,则称之为A,B;若不在公共边上,则称为C、D。新顶点的位置就由这A、B、C、D四个点加权得到:3/8 * (A + B) + 1/8 * (C + D)
·对于原来的老顶点
老顶点肯定被多个面共用,这里定义几个量:
n : 老顶点的度,就是与老顶点相邻的边数
u : 常量,影响最终结果与老顶点本身位置的相关程度。
调整后的顶点位置由老顶点本身位置、共用面上的其他顶点位置共同加权决定:
n越大,老顶点相邻的边越多,老顶点自己的权重就越低;n越小,老顶点相邻的边越少,它自己的权重就越高,越能保持在之前的位置。
(1 - n*u) * original_position + u * neighbor_position_sum
(3)Loop细分的结果展示
1.1.2 Catmull-Clark细分(Catmull-Clark Subdivision (General Mesh))
对于更一般的情况,比如四边形网格,或者三角形和四边形网格同时存在的情况,Loop细分就无法解决了。此时Catmull-Clark这两个人提出了他们的细分算法。
(1)概念
四边形面(quad face)
非四边形面(Non-quad face) :三角形、五边形等等
奇异点(Extraordinary vertex):度(与该点相邻的边数)不为4的点。
(2)基本步骤
Step 1: 每条边取其中点
step 2: 每个面取其重心