重心映射:坐标系统与边界处理策略

重心映射

在许多应用中,特别是在计算机图形学中,现在通常使用三角形网格形式的分段线性曲面工作,在本课程笔记的剩余部分,我们将主要坚持使用这种类型的曲面。

3.1 三角形网格

如前一章所述,让我们用 $ p = (x,y,z) $ 表示 $ \mathbb{R}^3 $ 中的点,用 $ u = (u,v) $ 表示 $ \mathbb{R}^2 $ 中的点。边则定义为两个不同点的凸包(或等价地,两点之间的线段),三角形定义为三个非共线点的凸包。我们将用大写字母表示 $ \mathbb{R}^3 $ 中的边和三角形,用小写字母表示 $ \mathbb{R}^2 $ 中的边和三角形,例如,$ e = [u_1, u_2] $ 和 $ T = [p_1, p_2, p_3] $。

三角形网格 $ S_T $ 是一组表面三角形 $ T = {T_1, …, T_m} $ 的并集,这些三角形仅在公共边 $ E = {E_1,…,E_l} $ 和顶点 $ V = {p_1,…,p_{n+b}} $ 处相交。具体来说,顶点集由 $ n $ 个内部顶点 $ V_I = {p_1, …, p_n} $ 和 $ b $ 个边界顶点 $ V_B = {p_{n+1}, …, p_{n+b}} $ 组成。如果两个不同的顶点 $ p_i, p_j \in V $ 是某条边 $ E = [p_i,p_j] \in E $ 的端点,则称它们为邻居,对于任何 $ p_i \in V $,我们用 $ N_i = {j : [p_i,p_j] \in E} $ 表示 $ p_i $ 所有邻居的索引集。

$ S_T $ 的参数化 $ f $ 通常以相反的方式指定,即通过定义逆参数化 $ g = f^{-1} $。这个映射 $ g $ 通过为每个顶点 $ p_i \in V $ 指定参数点 $ u_i = g(p_i) $ 来唯一确定,并要求 $ g $ 对每个三角形连续且线性。在这种设置下,$ g|_T $ 是从表面三角形 $ T = [p_i,p_j,p_k] $ 到相应参数三角形 $ t = [u_i,u_j,u_k] $ 的线性映射,$ f|_t = (g|_T)^{-1} $ 是从 $ t $ 到 $ T $ 的逆线性映射。参数域 $ \Omega $ 最终是所有参数三角形的并集(见图3.1)。

3.2 仿射组合参数化

构建三角形网格参数化的一个相当简单的想法基于以下物理模型。想象三角形网格的边是弹簧,它们在顶点处连接。如果我们现在将这个弹簧网络的边界固定在某个平面上,那么这个网络的内部将会在能量上松弛。

图 3.1:三角形网格的参数化

在能量最高效的配置中,我们可以简单地将网络关节所达到的静止位置指定为参数点。

如果我们假设每个弹簧都是理想的,即静止长度为零,势能仅为 $ \frac{1}{2}Ds^2 $,其中 $ D $ 是弹簧常数,$ s $ 是弹簧长度,那么我们可以将这种方法形式化如下。我们首先以某种方式(参见3.4节)为网格的边界顶点 $ p_i \in V_B $ 指定参数点 $ u_i = (u_i,v_i) , , i = n + 1,…,n + b $。然后我们最小化总弹簧能量

$ E = \frac{1}{2} \sum_{i=1}^n \sum_{j\in N_i} \frac{1}{2}D_{ij}|u_i - u_j|^2 $

其中 $ D_{ij} = D_{ji} $ 是 $ p_i $ 和 $ p_j $ 之间弹簧的弹簧常数,关于未知的内部点参数位置 $ u_i = (u_i, v_i) $。由于 $ E $ 关于 $ u_i $ 的偏导数是

$ \frac{\partial E}{\partial u_i} = \sum_{j\in N_i} D_{ij}(u_i-u_j) $

$ E $ 的最小值在

$ \sum_{j \in N_i} D_{ij}u_i = \sum_{j \in N_i} D_{ij}u_j $

对所有 $ i = 1, \ldots, n $ 成立时获得。这等价于说每个内部参数点 $ u_i $ 是其邻居的仿射组合,

$ u_i = \sum_{j \in N_i} \lambda_{ij}u_j $

其中归一化系数

$ \lambda_{ij} = \frac{D_{ij}}{\sum_{k \in N_i} D_{ik}} $

显然和为1。

注释1:额外的因子 $ \frac{1}{2} $ 出现是因为以这种方式对边求和会导致每条边被计算两次。

通过在(3.1)式右侧的求和中分别分离出内部与边界顶点的参数点,我们可以得到:

$ u_i - \sum_{j\in N_i, j \leq n} \lambda_{ij}u_j = \sum_{j\in N_i, j > n} \lambda_{ij}u_j $

因此,要计算内部参数点 $ u_i $ 的坐标 $ u_i $ 和 $ v_i $,我们需要求解线性系统:

$ AU = \bar{U} \quad \text{和} \quad AV = \bar{V} \quad (3.2) $

其中:

  • $ U = (u_1, …, u_n) $ 和 $ V = (v_1, …, v_n) $ 是未知坐标的列向量
  • $ \bar{U} = (\bar{u}_1, …, \bar{u}_n) $ 和 $ \bar{V} = (\bar{v}_1, …, \bar{v}_n) $ 是列向量,系数为:

$ \bar{u}i = \sum{j\in N_i, j > n} \lambda_{ij}u_j \quad \text{以及} \quad \bar{v}i = \sum{j\in N_i, j > n} \lambda_{ij}v_j $

  • $ A = (a_{ij})_{i,j=1,…,n} $ 是一个 $ n \times n $ 的矩阵,其元素为:

$ a_{ij} = \begin{cases}
1 & \text{如果 } i = j \
-\lambda_{ij} & \text{如果 } j \in N_i \
0 & \text{否则}
\end{cases} $

解决这些系统的有效方法在本课程笔记的第10章中有描述。

3.3 重心坐标

问题在于如何选择弹簧模型中的弹簧常数 $ D_{ij} $,或更一般地,如何选择(3.1)式中的归一化系数 $ \lambda_{ij} $。最简单的选择是使用常数弹簧常数 $ D_{ij} = 1 $,这可以追溯到 Tutte [1960, 1963] 的工作。他在更抽象的图论设置中使用这种方法来计算平面图的直线嵌入。而 Greiner 和 Hormann [1997] 则提出了使用与三角网格中相应边长成比例的弹簧常数的想法。这两种方法的主要缺点是它们不满足我们对任何参数化方法应该期望的最低要求。

线性再现性:假设 $ S_T $ 包含在一个平面内,使得其顶点相对于某个适当选择的正交坐标系具有坐标 $ p_i = (x_i, y_i, 0) $。那么,一个全局等距(因此是最优的)参数化可以通过直接使用局部坐标 $ x_i = (x_i, y_i) $ 作为参数点来定义,即对于 $ i = 1,…,n + b $,设置 $ u_i = x_i $。由于整体参数化此时是一个线性函数,我们说一个参数化方法具有线性再现性,如果它在这种设置下产生这样的等距映射。

图3.2:构造重心坐标的符号说明

在前一节的设置中,如果正确设置边界顶点的参数点,并且选择 $ \lambda_{ij} $ 值使得对所有内部顶点满足:

$ x_i = \sum_{j \in N_i} \lambda_{ij}x_j \quad \text{和} \quad \sum_{j \in N_i} \lambda_{ij} = 1 $

那么就可以实现线性再现。具有这两个性质的 $ \lambda_{ij} $ 值也被称为 $ x_i $ 相对于其邻居 $ x_j $, $ j \in N_i $ 的重心坐标。

如果某个 $ x_i $ 恰好有三个邻居,那么 $ \lambda_{ij} $ 是唯一确定的,这些三角形内的重心坐标在计算机图形学(例如,Gouraud和Phong着色,射线-三角形相交),几何建模(例如,三角形Bézier片,三角剖分上的样条),以及许多其他领域(例如,有限元方法,地形建模)中都有许多有用的应用。

然而,对于有超过三个顶点的多边形,内部点的重心坐标不再是唯一的,有几种定义它们的方法。最流行的方法都可以在一个共同的框架中描述[Floater et al., 2006],我们将简要回顾。

对于任何内部点 $ x_i $ 和它的一个邻居 $ x_j $,令 $ r_{ij} = |x_i - x_j| $ 为两点之间边 $ e_{ij} = [x_i,x_j] $ 的长度,并让与 $ e_{ij} $ 相邻的三角形角点的角度如图3.2所示。然后,$ x_i $ 相对于其邻居 $ x_j $, $ j \in N_i $ 的重心坐标 $ \lambda_{ij} $ 可以通过以下任何一种齐次坐标 $ w_{ij} $ 的归一化 $ \lambda_{ij} = \frac{w_{ij}}{\sum_{k\in N_i} w_{ik}} $ 来计算。

重心坐标的最早推广可以追溯到Wachspress [1975],他建议设置

$ w_{ij} = \frac{\cot \alpha_{ji} + \cot \beta_{ij}}{r_{ij}^2} $

虽然他主要对在有限元方法中应用这些坐标感兴趣,但Desbrun等人[2002]将它们用于三角网格的参数化,Meyer等人[2002]将它们用于插值,例如凸多边形内的颜色值。此外,Ju等人[2005b]给出了这些坐标的简单几何构造。

图3.3:一个三角网格的例子,其中只有使用平均值坐标的重心映射是双射的

  • 离散谐波坐标:另一种来源于有限元方法的重心坐标,实际上源自对拉普拉斯方程的标准分片线性近似,其形式为:

$ w_{ij} = \cot \gamma_{ij} + \cot \gamma_{ji}. $

在网格参数化的背景下,这些坐标最早由 Eck 等人 [1995] 使用,但它们也被用于计算离散极小曲面 [Pinkall 和 Polthier, 1993]。

  • 平均值坐标:通过离散化平均值定理,Floater [2003a] 找到了另一组重心坐标,其形式为:

$ w_{ij} = \frac{\tan\frac{ \alpha_{ij} }{2}+ \tan \frac{\beta_{ji}}{2}}{r_{ij}}. $

虽然他的主要应用是网格参数化,但 Hormann 和 Tarini [2004] 以及 Hormann 和 Floater [2006] 后来展示了它们在计算机图形学中还有许多其他有用的应用。

上述三种选项的美妙之处在于权重 $ w_{ij} $ 仅依赖于角度和距离,因此不仅在 $ x_i $ 和其邻居共面时可以计算,当这些角度和距离从围绕 $ p_i $ 的三角形中取得时,一般情况下也可以为三角网格的任何内部顶点 $ p_i \in V_I $ 进行计算。Floater [1997] 提出的另一种替代方法是将围绕 $ p_i $ 的一环三角形局部展平到平面中,例如使用指数映射,然后从这一平面配置中计算权重 $ w_{ij} $。

通过求解带有任何重心坐标集 $ \lambda_{ij} $ 的线性系统(3.2)计算的三角网格参数化称为重心映射,并且显然具有线性再现性,前提是使用了适当的方法来计算边界顶点的参数点,例如将它们映射到最小二乘平面(见第3.4节)。

尽管具有这种性质,但当为非平面网格构建时,重心映射可能会产生意想不到的结果,正如图3.3中的简单示例所示。

图3.4:一个三角网格的例子,其中使用 Wachspress 坐标的线性系统是奇异的

如图所示,如果我们使用参数点 $ u_2 = (-1, -1), u_3 = (1, -1), u_4 = (1, 1), u_5 = (-1, 1) $ 来表示四个边界顶点,并用上述公式计算重心权重 $ \lambda_{12}, \lambda_{13}, \lambda_{14}, \lambda_{15} $,那么我们会得到以下 $ u_1 $ 的位置:

  • Wachspress 坐标:( u_1 = (-35.1369, 0) )
  • 离散调和坐标:( u_1 = (2.1138, 0) )
  • 平均值坐标:( u_1 = (0.4538, 0) )

也就是说,只有平均值坐标为 $ u_1 $ 提供了一个位置,该位置位于其他四个参数点的凸包内,使用其他坐标将导致参数三角形重叠,从而违反任何参数化都应具备的双射性特征。

这种行为的原因是 Wachspress 和离散调和坐标在某些配置(如图 3.3 所示)中可能取负值,而平均值坐标始终为正。当权重为负时可能会发生三角形重叠,但如果所有权重为正且边界顶点的参数点形成凸形,则不会发生这种情况。Tutte [1963] 首次证明了这一点,适用于特殊情况 $ \lambda_{ij} = 1/\eta_i $,其中 $ \eta_i = #N_i $ 是 $ p_i $ 的邻居数,虽然这不是真正的重心坐标,但 Floater [1997] 观察到这种证明可以推广到任意正权重 $ \lambda_{ij} $。最近,Gortler 等人 [2006] 甚至显示出对凸边界的限制可以大大放宽,但这需要解决一个非线性问题。

另一个重要方面涉及线性系统 (3.2) 的可解性,已证明对于离散调和 [Pinkall 和 Polthier, 1993] 和平均值坐标 [Floater, 1997],矩阵 $ A $ 总是非奇异的。然而,对于 Wachspress 坐标,可能发生齐次坐标之和 $ W_i = \sum_{k \in N_i} w_{ik} $ 为零,从而归一化坐标 $ \lambda_{ij} $ 和矩阵 $ A $ 都未定义。在图 3.4 所示的例子中,这种情况实际上出现在所有内部顶点 $ x_1, x_2, x_3 $ 上。但是,即便跳过归一化并尝试解决等价且定义明确的齐次系统 $ WAU = W\bar{U} $ 和 $ WAV = W\bar{V} $(其中 $ W = \text{diag}(W_1,…,W_n) $),我们发现矩阵 $ WA $ 在这个特例中是奇异的,即 $ W A = \begin{bmatrix} 0 & -50 & 0 \ 40 & 0 & -24 \ 0 & 18 & 0 \end{bmatrix} $。

3.4 边界映射

构造重心映射的第一步是为边界顶点选择参数点。最简单的方法是将边界顶点投影到最小二乘意义上最适合边界顶点的平面上。然而,对于具有复杂边界的网格,这种简单的程序可能会导致边界多边形中出现不希望的折叠,因此不能使用。一般来说,这里需要考虑两个问题:(1)选择参数域边界的形状,(2)选择参数点在边界周围的分布。

选择形状

在许多应用中,选择矩形或圆形作为参数域就足够了(甚至是理想的),这样的凸形状有一个优点,即如果使用像平均值坐标这样的正重心坐标来计算内部顶点的参数点,就能保证参数化的双射性。然而,当三角网格 ST 的边界不类似于凸形状时,凸性限制可能会在边界附近产生大的扭曲。避免这种扭曲的一个实用解决方案是构建一个"虚拟"边界,即在给定网格的边界周围增加额外的三角形,以构造一个具有"良好"边界的扩展网格。Lee等人[2002]和Kós和Várady[2003]成功地使用了这种方法。

选择分布

文献中通常提到的程序是使用简单的单变量参数化方法,如弦长[Ahlberg等人,1967]或向心参数化[Lee,1989],将参数点放置在整个边界周围,或者在使用矩形域时沿着边界的每一侧放置[Hormann,2001,第1.2.5节]。

尽管这些启发式方法在某些情况下效果很好,但在其他情况下,必须固定边界顶点可能是一个严重的限制。下一章将研究可以在优化过程中包含边界参数点位置的参数化方法,从而产生扭曲更小的参数化。

小结:

1. **内容概述**: - 介绍了三种不同的重心坐标系统:Wachspress坐标、离散调和坐标和平均值坐标。 - 讨论了这些坐标系统在网格参数化中的应用和特性。 - 分析了不同坐标系统的优缺点以及它们在特定应用场景中的适用性。 2. **作用**: - 提供了一种将3D网格映射到2D平面的技术方法,保持网格的拓扑结构。 - 在计算机图形学、几何建模、纹理映射等领域有广泛应用。 - 帮助减少变形和扭曲,保持网格的重要特征,提高渲染效果和纹理质量。

重心映射的目的:

+ **目的**: - 将复杂的3D形状转换为2D平面表示,以便于处理和分析。 - 保持网格的几何和拓扑特性,避免重叠和扭曲。 - 在纹理映射、形状变形等应用中提供高质量的参数化结果。

假设和方法:

1. **假设**: - 网格由三角形组成,包含内部顶点和边界顶点。 - 边界顶点的参数点需要预先确定,通常选择一个简单的形状(如矩形或圆形)作为参数域。 2. **方法**: - 使用选定的重心坐标系统(如Wachspress、离散调和或平均值坐标)来计算内部顶点的参数坐标。 - 构建并求解线性方程组,确定每个内部顶点相对于其邻居的权重。 - 通过优化过程,减少参数化过程中的扭曲和变形。

如何找到重心:

+ **步骤**: 1. **选择边界参数点**:为边界顶点选择参数点,通常通过投影到一个适合的平面上。 2. **计算重心坐标**:使用选定的重心坐标系统计算内部顶点的权重。 3. **求解线性系统**:通过求解线性方程组,确定内部顶点的参数坐标。 4. **优化和调整**:根据需要调整参数化结果,以减少扭曲和提高质量。

总的来说,这篇文章探讨了如何有效地将3D网格映射到2D平面,这是计算机图形学和几何处理中的一个基本问题。不同的重心坐标系统提供了不同的解决方案,每种方法都有其优缺点,适用于不同的场景。

附件:

Wachspress坐标、离散调和坐标和平均值坐标是三种不同的重心坐标系统,用于三角网格参数化。它们的主要区别如下:
  1. Wachspress坐标:
  • 定义:基于多边形的面积比
  • 特点:
    • 仅依赖于顶点的几何位置
    • 在凸多边形内部保持正值
    • 计算相对简单
  • 局限性:
    • 只适用于凸多边形
    • 在某些情况下可能导致奇异性(如文中图3.4所示)
  • 应用:主要用于几何建模和有限元分析
  1. 离散调和坐标:
  • 定义:源自拉普拉斯方程的离散化
  • 特点:
    • 基于余切公式:$ w_{ij} = \cot \gamma_{ij} + \cot \gamma_{ji} $
    • 在某些情况下可以产生负值
    • 保证非奇异性
  • 应用:
    • 网格参数化
    • 离散极小曲面计算
  • 优点:在某些情况下可以产生较低的角度变形
  1. 平均值坐标:
  • 定义:基于均值定理的离散化
  • 特点:
    • 公式:$ w_{ij} = \frac{\tan(\alpha_{ij}/2) + \tan(\beta_{ji}/2)}{r_{ij}} $
    • 始终保持正值
    • 适用于凸和非凸多边形
    • 保证非奇异性
  • 优点:
    • 在大多数情况下能产生合理的参数化结果
    • 不会出现重叠三角形的问题
  • 应用:广泛用于计算机图形学,特别是在纹理映射和形状变形中

主要区别总结:

  1. 适用范围:Wachspress坐标仅适用于凸多边形,而平均值坐标可用于任意多边形。离散调和坐标介于两者之间。
  2. 正值性:平均值坐标始终为正,Wachspress坐标在凸多边形内为正,而离散调和坐标可能出现负值。
  3. 奇异性:Wachspress坐标在某些情况下可能导致奇异性,而离散调和坐标和平均值坐标保证非奇异。
  4. 计算复杂度:Wachspress坐标计算相对简单,而离散调和坐标和平均值坐标计算稍复杂。
  5. 应用领域:虽然都可用于网格参数化,但各有特长。例如,平均值坐标在计算机图形学中应用更广泛。

选择哪种坐标系统通常取决于具体应用场景、网格特性以及对计算效率和结果质量的要求。

重心重映射的原因

重心重映射(或重心映射)在三角网格参数化中具有重要意义,主要原因包括以下几个方面:
  1. 保持拓扑结构
    • 重心映射能够将3D网格映射到2D平面,同时保持网格的拓扑结构。这对于确保网格在参数化过程中不发生拓扑改变(如翻转或交叉)至关重要。
  2. 减少变形和扭曲
    • 在将3D形状映射到2D平面时,重心映射方法可以帮助减少形状的变形和扭曲。这对于纹理映射、形状分析和几何处理等应用非常重要,因为它们要求尽可能保留原始形状的几何特征。
  3. 提高计算效率
    • 重心映射方法通常涉及求解线性方程组,这在计算上是高效的。相比于其他可能需要非线性优化的方法,重心映射提供了一种相对简单且快速的解决方案。
  4. 适应不同应用场景
    • 不同的重心坐标系统(如Wachspress、离散调和、平均值坐标)适用于不同的应用场景和网格特性。通过选择合适的重心映射方法,可以针对特定问题优化参数化结果。
  5. 支持复杂几何形状的处理
    • 在处理复杂几何形状时,重心映射提供了一种有效的工具来实现形状的平面化。这对于计算机图形学、动画制作、CAD设计等领域的复杂模型处理非常有用。
  6. 增强视觉效果
    • 在纹理映射中,重心映射可以帮助确保纹理在模型表面上的均匀分布,避免纹理拉伸或压缩,从而提高视觉效果。

总之,重心重映射在三角网格参数化中扮演着关键角色,帮助实现高效、准确和保形的3D到2D映射。这对于许多计算机图形学和几何处理应用来说都是不可或缺的技术。

  • 11
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值