ARAP变形分析


ARAP变形分析_第1张图片

网格变形要求产生视觉合理并且大致满足物理规律的变形效果,而模型细节的保持很大程度地满足了这种需求。刚性作为一个重要的属性在保细节方面具有明显的优势,从某种意义上讲,保持模型的刚性很大程度地促进了模型表面细节的保持。

一、算法简介

ARAP网格变形原文出自:Sorkine O, Alexa M. As-rigid-as-possible surface modeling,是04年一篇经典的网格变形的论文。如下图所示,ARAP变形算法首先定义网格顶点与1-邻域的边构成刚性变形单元,所有点的变形单元重叠地覆盖网格表面。变形过程中假设变形单元仅仅发生旋转变换,形式化的表示如公式(1)所示,变形单元的刚性变换使得网格顶点相对于1-邻域顶点的位置保持不变,从而有效地保持了模型局部的细节。
ARAP变形分析_第2张图片

pipj=Ri(pipj),jN(i)(1)

ARAP变形算法的核心能量函数如下所示,通过最小化该能量函数实现模型的尽可能刚性变形。

E(Ci,Ci)=jN(i)wij(pipj)Ri(pipj)2(2)

其中, Ci Ci 分别表示变形前后模型顶点 pi pi 对应的变形单元, N(i) 表示 pi 的1-邻域点的索引,而pj和 pj 分别表示 pi pi 的1-邻域顶点, Ri 表示 Ci Ci 的最优旋转矩阵, wij 是边 eij=(pi,pj) 的权重。“““`
对于公式(2)所示的二次能量函数最小化,首先,根据中间变形结果 P 和初始模型坐标 P 使用奇异值分解估算出变形单元的最优旋转矩阵Ri。接下来,在旋转矩阵已知的情况下,令能量函数的导数等于0即可得到函数取得最小值时的 P ,即等价于求解公式(3)所示的线性方程组,从而更新了中间变形结果 P 。下一次迭代中,再将 P 作为已知量, Ri 作为未知量进行类似的求解,如此反复,直到能量误差小于用户指定的阈值为止。

jN(i)wij(pipj)=jN(i)wij2(Ri+Rj)(pipj)(3)


二、相关原理
参考文献:
[1] : http://blog.csdn.net/seamanj/article/details/50597420 (Tr(M) >= Tr(RM))
[2] : http://blog.csdn.net/chan15/article/details/49948849 (Tr(AB) >= Tr(BA))
[3] : https://zhuanlan.zhihu.com/p/25846219 (知乎专栏)

你可能感兴趣的:(Computer,Graphics,尽可能刚性变形)