12 Geometry
关键点
- Mesh Subdivision(Loop Subdivision,Catmull-Clark Subdivision)
- Mesh Simplification(Edge Collapsing)
- Mesh Regularization
1. Mesh Operarions
1.1 Mesh Subdivision --Upsampling 细分
- 细分:把三角形数量增多
- 调整:改变三角形的位置
1.1.1 Loop Subdivision
- 每个三角形分成四个
- 对于新旧两种不同的顶点(各三个)分别改变其位置
对于新顶点,除了边界情况之外,在两个三角形的共享边中点,则得到这两个三角形的原有点共享点(2)和不共享点(2),对四个点加权平均更新位置。
对于旧顶点,由自身位置与周围相邻的旧顶点加权平均得到。加权需要用到度数n(顶点相连边数)与相邻边权重u(其值取决于n)两个参数影响。
1.1.2 Catmull-Clark Subdivision
Loop细分只用于三角形,而这个方法可以用于一般网格。
概念定义
- Non-quad face 非四边形面 and quad face 四边形面
- Extraordinary vertex 奇异点 (度不是4)
步骤
- 在边上取中点,并在面内部取中点(重心或者其他),将他们通过面中点连起来。
除了原本的奇异点之外,在非四边形内部加入的点是奇异点,并且其度数等于该面的边数。每一个非四边形面在引入奇异点之后都变成了四边形面,即所有非四边形面等量的变成了奇异点。所以,继续细分不会增加奇异点。
- 调整
处于面中心的新点:用其面的顶点取均值;
处于边上的新点:用其边的两个顶点和与之相连的两个面内新点求取均值;
旧点:使用周围的面内新点、边上新点以及自己更新位置。
1.2 Mesh Simplification -- Downsampling 简化
在不同的情况下(比如距离),可以选择不同复杂程度的模型,不一定得用精致模型。类比于mipmap这类纹理的层次结构,这个是几何的层次结构。
1.2.1 Edge Collapsing 边坍缩
原理
将边坍缩成点。
Quadric Error Metrics 二次误差度量
- 直接使用点取均值成点会使得形变变化过于明显,因此找一个最优位置,使得其与相关面距离的平方和最小。
- 同理,每一条边都会有一个坍缩的二次度量误差,那么从小到大坍缩边。
- 但是坍缩边之后会影响其他边的二次度量误差,因此希望一个数据结构,可以直接取出最小值,并且动态更新任何一点的二次度量误差,所以使用堆。
- 可知这种方法是贪心算法,不能保证全局最优,但是实际情况下默认可行。
1.3 Mesh Regularization 正则化
来源
[1]Games101. 闫令琪
本文来自博客园,作者:ETHERovo,转载请注明原文链接:https://www.cnblogs.com/etherovo/p/17321617.html