重读经典论文: Mean Value Coordinates for Closed Triangular Meshes
创始人
2024-02-23 22:57:05
0

Mean Value Coordinates for Closed Triangular Meshes 发表于ACM SIGGRAPH 2003, 是图形学领域的经典论文,作者是之前组里毕业的居涛,论文只有6页,这在SIGGRAPH会议中并不多见,目前引用超过700次,在插值,参数化,变形等领域被广泛应用。

先看一下论文给的Teaser,这里主要是变形的一个应用。输入包括:待变形网格模型 + 控制网格(跟模型形状相似的稀疏网格),通过移动控制网格的顶点驱动模型形状发生改变,其实主要就是插值问题,将模型顶点表示为控制网格点的线性组合。
在这里插入图片描述

一、插值问题描述

本文所涉及的插值要做的事就是将2D多边形(3D多面体) PPP 内部的任意点 vvv 表示为PPP 的线性组合:
v=∑i=1nwipi(1)v = \sum^n_{i=1}w_ip_i \tag1v=i=1∑n​wi​pi​(1)
这里的 wiw_iwi​ 称为插值权重,满足 ∑i=1nwi=1\sum^n_{i=1}w_i = 1∑i=1n​wi​=1,插值问题的重点就是求解该权重。对于上图所示的变形问题,其实就是求出该权重并保持不变,然后修改控制网格: P→P′P \to P'P→P′, 最后,变形后的模型表示为:v′=∑i=1nwipi′v' = \sum^n_{i=1}w_ip'_iv′=∑i=1n​wi​pi′​ 。

二、2D多边形插值

这一部分主要探讨2D多边形内部插值,输入多边形 PPP, 内部一点 vvv, 输出对应的插值权重W={wi}W=\{w_i\}W={wi​}。
在这里插入图片描述

如上图左所示,我们首先画一个以 vvv为圆心的单位圆,将 vvv 与各个多边形顶点连接的话,多边形每条边会对应到一段圆弧。

不失一般性,以 第一条边 p1p2p_1p_2p1​p2​ 对应的圆弧为例,我们将vvv 指向这段圆弧上所有点的单位向量求和(积分)得到的向量 m1m_1m1​ 称为均值向量(mean vector)。 m1m_1m1​ 可以通过一组基 vp1=p1−v,vp2=p2−vvp_1=p_1-v,\ vp_2=p_2-vvp1​=p1​−v, vp2​=p2​−v 进一步表示为:

λ11(p1−v)+λ12(p2−v)=m1(2)\lambda^1_1(p_1-v) + \lambda^2_1(p_2-v) =m_1\tag2λ11​(p1​−v)+λ12​(p2​−v)=m1​(2)
其中,λ11\lambda^1_1λ11​ 和 λ12\lambda^2_1λ12​ 分别表示 m1m_1m1​ 在这组基上的坐标值。另外,Floater曾在他的论文中给出了均值向量的表示形式:
Floater M S. Mean value coordinates[J]. Computer aided geometric design, 2003, 20(1): 19-27.

m1=tan⁡[α/2]((p1−v)∣p1−v∣+(p2−v)∣p2−v∣)(3)m_1=\tan [\alpha / 2]\left(\frac{\left(p_{1}-v\right)}{\left|p_{1}-v\right|}+\frac{\left(p_{2}-v\right)}{\left|p_{2}-v\right|}\right)\tag3m1​=tan[α/2](∣p1​−v∣(p1​−v)​+∣p2​−v∣(p2​−v)​)(3)

其中,α\alphaα 是向量 vp1,vp2vp_1,vp_2vp1​,vp2​ 之间的夹角。根据(2)(3),我们就可以直接得出:
λ11=tan[α/2]∣p1−v∣,λ12=tan[α/2]∣p2−v∣(4)\lambda^1_1 = \frac{tan[\alpha/2]}{|p_1-v|}, \ \ \ \ \lambda^2_1= \frac{tan[\alpha/2]}{|p_2-v|}\tag4λ11​=∣p1​−v∣tan[α/2]​,    λ12​=∣p2​−v∣tan[α/2]​(4)

那么,我们怎么根据上式导出插值权重呢?继续往下看。

注意(2)式只是针对第一条线段 p1p2p_1p_2p1​p2​ 计算了均值向量 m1m_1m1​,如果计算所有线段对应的均值向量,并对其求和,那么这些均值像之和为0向量。 相当于,圆心指向圆弧所有点构成的单位向量之和,必然为0,因为任意一个单位向量都存在一个方向相反的向量。也就是说:
{λ11(p1−v)+λ12(p2−v)=m1λ21(p2−v)+λ22(p3−v)=m2...λn1(pn−v)+λn2(p1−v)=mn\left\{ \begin{aligned} \lambda^1_1(p_1-v) + \lambda^2_1(p_2-v) =m_1\\ \lambda^1_2(p_2-v) + \lambda^2_2(p_3-v) =m_2\\ ...\\ \lambda^1_n(p_n-v) + \lambda^2_n(p_1-v) =m_n\\ \end{aligned} \right. ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​λ11​(p1​−v)+λ12​(p2​−v)=m1​λ21​(p2​−v)+λ22​(p3​−v)=m2​...λn1​(pn​−v)+λn2​(p1​−v)=mn​​

m1+m2+...+mn=0m_1 + m_2 + ... + m_n = 0m1​+m2​+...+mn​=0

上述任意一组λi1\lambda^1_iλi1​,λi2\lambda^2_iλi2​均可通过(4)求解得到。因为任意 pi−vp_i - vpi​−v 均出现两次(一个端点被两条边共享),因此重新整理上式为:
(λ11+λn2)(p1−v)+(λ12+λ21)(p2−v)+...+(λn−12+λn1)(pn−v)=0(5)( \lambda^1_1 + \lambda^2_n)(p_1-v) + (\lambda^2_1+\lambda^1_2)(p_2-v)+...+(\lambda^2_{n-1}+\lambda^1_n)(p_n-v) = 0\tag5(λ11​+λn2​)(p1​−v)+(λ12​+λ21​)(p2​−v)+...+(λn−12​+λn1​)(pn​−v)=0(5)

我们令 k1=(λ11+λn2)k_1 =(\lambda^1_1 + \lambda^2_n)k1​=(λ11​+λn2​), k2=(λ12+λ21)k_2=(\lambda^2_1+\lambda^1_2)k2​=(λ12​+λ21​),…,kn=(λn−12+λn1)k_n = (\lambda^2_{n-1}+\lambda^1_n)kn​=(λn−12​+λn1​), 上次可以进一步写为:
k1(p1−v)+k2(p2−v)+...+kn(pn−v)=0(6)k_1(p_1-v) +k_2(p_2-v)+...+k_n(p_n-v) = 0\tag6k1​(p1​−v)+k2​(p2​−v)+...+kn​(pn​−v)=0(6)

接下来,令 K=k1+k2+...+knK = k_1+k_2+...+k_nK=k1​+k2​+...+kn​, w1=k1/K,w2=k2/K,...wn=kn/Kw_1=k_1/K, w_2=k_2/K, ... w_n=k_n/Kw1​=k1​/K,w2​=k2​/K,...wn​=kn​/K, 上式可以进一步改写为:
w1(p1−v)+w2(p2−v)+...+wn(pn−v)=∑i=1nwi(pi−v)=0(7)w_1(p_1-v) +w_2(p_2-v)+...+w_n(p_n-v) = \sum^n_{i=1}w_i(p_i-v)=0\tag7w1​(p1​−v)+w2​(p2​−v)+...+wn​(pn​−v)=i=1∑n​wi​(pi​−v)=0(7)

我们发现 (7)跟(1)完全等价,因为 ∑i=1nwi=1\sum^n_{i=1}w_i = 1∑i=1n​wi​=1, v=∑i=1nwivv = \sum^n_{i=1}w_i vv=∑i=1n​wi​v。到此为止,我们得到了满足(1)式的插值权重也就是均值坐标。

三、3D多面体插值

在2D多边形中,我们通过将多边形投影到单位圆上求解均值坐标。容易想到,在3D多面体内部,我们可以将多面体投影到单位球来计算给定点的均值坐标。
在这里插入图片描述
如上图所示,我们将多面体投影到单位球面。如上图(3)所示,多面体上的任意三角面片对应单位球上的一个球面三角形,那么从vvv 指向该球面三角形上所有点的单位向量的积分称为该球面三角形的均值向量 mmm。文中给出了这一向量的计算方式(证明明详见论文):
m=∑i=1312θini(8)m = \sum^3_{i=1}\frac{1}{2}\theta_in_i\tag8m=i=1∑3​21​θi​ni​(8)
接下来,通过上图(5)所示的示例进行讲解,其均值向量可以表示为:
m=12(θ1n1+θ2n2+θ3n3)(9)m=\frac{1}{2}(\theta_1n_1 + \theta_2n_2 + \theta_3n_3)\tag9m=21​(θ1​n1​+θ2​n2​+θ3​n3​)(9)
其中,θ1,θ2,θ3\theta_1,\theta_2,\theta_3θ1​,θ2​,θ3​ 分别是 (vp2,vp3),(vp1,vp3),(vp1,vp2)(vp_2,vp_3), (vp_1,vp_3),(vp_1,vp_2)(vp2​,vp3​),(vp1​,vp3​),(vp1​,vp2​) 的夹角,n1,n2,n3n_1,n_2,n_3n1​,n2​,n3​ 分别是 (vp2p3),(vp1p3),(vp1p2)(vp_2p_3), (vp_1p_3),(vp_1p_2)(vp2​p3​),(vp1​p3​),(vp1​p2​) 平面的法向。另一方面,球面三角形上的均值向量 mmm, 仍然可以通过一组基 (vp1,vp2,vp3)(vp_1,vp_2,vp_3)(vp1​,vp2​,vp3​) 表示出来:
m=λ1(p1−v)+λ2(p2−v)+λ3(p3−v)(10)m =\lambda_1(p_1-v) + \lambda_2(p_2-v) + \lambda_3(p_3-v)\tag{10}m=λ1​(p1​−v)+λ2​(p2​−v)+λ3​(p3​−v)(10)

如何求解上述 λ\lambdaλ呢?因为n1n_1n1​是平面 (vp2p3)(vp_2p_3)(vp2​p3​) 的法向量,所以 n1⋅(p2−v)=0n_1 \cdot (p_2-v) =0n1​⋅(p2​−v)=0, n1⋅(p3−v)=0n_1 \cdot (p_3-v) =0n1​⋅(p3​−v)=0,其它类似,那么有:
{n1m=n1λ1(p1−v)+0+0n2m=0+n2λ2(p2−v)+0n3m=0+0+n3λ3(p3−v)\left\{ \begin{aligned} n_1m =n_1\lambda_1(p_1-v) + 0+0\\ n_2m =0+n_2\lambda_2(p_2-v)+0 \\ n_3m =0+0+n_3\lambda_3(p_3-v)\\ \end{aligned} \right. ⎩⎪⎨⎪⎧​n1​m=n1​λ1​(p1​−v)+0+0n2​m=0+n2​λ2​(p2​−v)+0n3​m=0+0+n3​λ3​(p3​−v)​
所以:
{λ1=n1mn1(p1−v)λ2=n2mn2(p2−v)λ3=n3mn3(p3−v)(11)\left\{ \begin{aligned} \lambda_1 =\frac{n_1m}{n_1(p_1-v)} \\ \\ \lambda_2 =\frac{n_2m}{n_2(p_2-v)} \\ \\ \lambda_3 =\frac{n_3m}{n_3(p_3-v)} \\ \end{aligned} \right.\tag{11} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​λ1​=n1​(p1​−v)n1​m​λ2​=n2​(p2​−v)n2​m​λ3​=n3​(p3​−v)n3​m​​(11)

类似的,上式只是计算了多面体上一个三角面片对应的球面三角形的均值向量,以及对应的三个点的贡献。如果将所有三角面片投影到球面上,那么所有球面三角形的均值向量之和为0. 也就是:
∑T=1nλT1(pT1−v)+λT2(pT2−v)+λT3(pT3−v)=0(12)\sum^n_{T=1}\lambda^1_T(p^1_T-v) + \lambda^2_T(p^2_T-v) + \lambda^3_T(p^3_T-v) = 0\tag{12}T=1∑n​λT1​(pT1​−v)+λT2​(pT2​−v)+λT3​(pT3​−v)=0(12)
其中,TTT表示遍历多面体 PPP 的所有三角形,pT1,pT2,pT3p^1_T,p^2_T,p^3_TpT1​,pT2​,pT3​ 表示某个三角形 TTT 的3个顶点。上式 λT1,λT2,λT3\lambda^1_T,\lambda^2_T,\lambda^3_TλT1​,λT2​,λT3​ 通过(11)式子计算。最后的最后,上式等价于:
∑i=1nwi(pi−v)=0\sum^n_{i=1}w_i(p_i-v)=0i=1∑n​wi​(pi​−v)=0
这个过程跟2D的推导类似,最终归一化的权重 wiw_iwi​ 可以表示为:
wi=∑T∈N(i)∑j=13λTj⋅(pTi==pi)∑T=1n(λT1+λT2+λT3)(13)w_i =\frac{\sum_{T \in N(i)}\sum^3_{j=1}\lambda^j_T \cdot(p^i_T==p_i)}{\sum^n_{T=1}(\lambda^1_T+\lambda^2_T+\lambda^3_T)}\tag{13}wi​=∑T=1n​(λT1​+λT2​+λT3​)∑T∈N(i)​∑j=13​λTj​⋅(pTi​==pi​)​(13)

也就是说,每个点的权重,跟所关联的所有三角形相关。 文中还有一些数值稳定性的优化方案,就不再描述。可以参看原文伪代码。

参考资料

[1] Floater M S. Mean value coordinates[J]. Computer aided geometric design, 2003, 20(1): 19-27.
[2] Tao Ju et al. Mean Value Coordinates for Closed Triangular Meshes
[3] 以及对应的slides: https://people.engr.tamu.edu/schaefer/teaching/689_Fall2006/talks/meanvalue.pdf

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...