12 Geometry

发布时间 2023-04-15 19:39:36作者: ETHERovo

关键点

  • 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. 闫令琪