回顾
曲面参数化
映射( Mapping / Map )
平面几何映射
映射的表达
映射:基函数的线性组合
映射表达为基本映射(基函数)的线性组合
• 基函数(basis functions):
$$ f_1,f_2,f_3,\cdots ,f_n $$
• 基函数的线性组合:
$$ f(X)=\begin{pmatrix}u(X) \\v(X) \end{pmatrix}=\begin{pmatrix}\sum a_if_i(X) \\\sum b_if_i(X) \end{pmatrix} $$
映射:简单区域上映射的连续组合
映射表达为小区域(三角形区域)上映射的拼接
\(f\) is approximated by piecewise linear maps between pairs of triangles
几何映射的例子
例1:2D变形
[06:51] 2D变形问题:构造一个函数\(f\), 使得拖拽点\(f(P)\)满足到达目标点的约束。
[10:06] 或\(f(P)\)满足\(f'(P)\)为目标值的约束,就是法线插值。
[10:43] mesh 点是指定点(例如重心坐标)的组合。通过移动指定点控制mesh.
本质:插值问题
例2: Barycentric Coordinates
重心坐标:link
映射的性质
问:What are good maps?
答:(1)满足双射,即Source 与 target 一一 对应。local 双射(单射):一一对应,但有翻转发生
(2)扭曲尽量少,否则有鬼影现象 [21:28下图]
翻转 Flip (foldover) - 单射
现象
原理
\(f(x)\)是映射关系,求\(f\)的 Jacobian,
\(J\)是每个分量分别对\(x\)和构成偏导
\(\det|J| >0 \Rightarrow \)未翻转。
[图23:35]有两个区域 \(D_1, D_2\),
\(\Omega \) 为\(x_0\)的无穷小邻域
\(\Omega\)映射到\(D_2\)后成为\(f(\Omega)\)
A: signed area. $$ y=\underset{A(\Omega )} {lim}=\frac{A(f(\Omega ))}{A(\Omega )} =J(f)l_{x=x_0} $$ |y|>1:膨胀
|y|<1:收缩
y<0:翻转
[31:02] 3D空间则分解为\(\sigma _1,\sigma _2,\sigma _3\)
[32:02图] 有一个矩形,希望把它边界变成红线形,求变形后的形状:
期望:形变较小/夹角小\(\dots\) (看应用需求)
Globally Bijective - 双射
单射→双射:需要显式地判断是否发生碰撞
这里的形变,虽然每个面片都没有发生翻转,但整体上发生了碰撞,不满足双射
扭曲
Jacobian的几何意义
函数在某点的Jacobian度量了其局部的形变量
$$ L=U\begin{pmatrix} \sigma _1 & 0\\ 0 &\sigma _2 \end{pmatrix}V^* $$
$$ \sigma _2\ge \sigma _1 $$
• angle‐preserving (conformal) \(\sigma _1= \sigma _2\)
• area‐preserving (authalic) \(\sigma _1\sigma _2=1\)
• length‐preserving (isometric) \(\sigma _1=\sigma _2=1\)
其它Distortion Metric
映射的优化模型
Recap: Formulation of Parameterization
$$ \min_{V} E(V)=\sum _{t\in T}(\sigma _1^2+\frac{1}{\sigma _1^2} +\sigma _2^2+\frac{1}{\sigma _2^2}) $$
$$ s.t.\sigma _1\sigma _2>0,\forall t $$
• The cost function is highly nonlinear and nonconvex
• The constraints are nonlinear
• The Heissian matrix is highly non‐definite
Computationally expensive for large scale meshes!
要解决的问题
输入:
可能的输出:
希望找到形变较少的度量,不同的度量会得到不同的结果
优化的能量
基于不同的度量,生成对应能量函数,进行优化
能量由每个三角形的变形能量相加得到:
$$ E(\phi )=E(A_1,\cdots ,A_m) = \sum _jf(A_j) $$
Map optimization
同时要考虑三角形能够拼到一起。
Explicit continuity
优化参数: \(A_1,A_2,\cdots ,A_m\)
相邻三角形的\(A\)应满足约束:
$$ A_iv_1=A_jv_1 $$
$$ A_iv_2=A_jv_2 $$
Implicit continuity
$$ A_i\overline{\begin{bmatrix} \nu_1 & \nu_2 &\nu_3 \end{bmatrix}} =\overline{\begin{bmatrix} u_1 & u_2 &u_3 \end{bmatrix}} $$
$$ A_i=\overline{\begin{bmatrix} u_1 & u_2 &u_3 \end{bmatrix}} \overline{\begin{bmatrix} \nu_1 & \nu_2 &\nu_3 \end{bmatrix}} $$
$$ A_i=A_i(U) $$
变量不是\(A\),而是\(u\),\(A\)是由\(u\)决定的
Optimization variables: \(u_1,u_2,\cdots ,u_n(U)\)
$$ E(\Phi )=\sum _jf(A_j(U)) $$
这种方法更常用
几何优化的求解
优化能量,关键是怎么定义能量
各种能量
Dirichlet能量
area / volume \(\Rightarrow E_D=\sum _jw_j||A_j||_F^2\)
公式没有几何意义,纯粹是一种度量。
会造成比较大的扭曲,现在很少用了
Orthogonal and Similarity
• R is orthogonal if \(R^T=R^{-1}\)
(rotation if det 𝑅 > 0)
• S is a similarity if \(S =\alpha R\)
• \(\Re(A)=\) closest orthogonal/rotation matrix to \(A\)
• \(\varsigma (A)\)= closest similarity matrix to \(A\)
对A做SVD/SSVD分解:
\(A=U\sum V^T\);\(\sum\) =diag\((\sigma _1,\cdots ,\sigma _n)\)
As‐Similar‐As‐Possible (ASAP)
$$ E_L=\sum _jw_j||A_j-\varsigma (A_j)||_F^2 $$
Solving sparse linear system!
As‐Rigid‐As‐Possible (ARAP)
$$ E_R=\sum _jw_j||A_j-\Re (A_j)||_F^2 $$
Alternating Optimization
- Iteratively:
• Compute and fix \( R_j = \Re (A_j) \) Local step
• Minimize
\(\sum _jw_j||A_j-R_j||_F^2\) Global step
[Liu et al. A Local/Global Approach to Mesh Parameterization. SGP 2008]
[42:11] locd: 分裂 global:缝合
交替迭代优化方法
交替优先的方法非常常用
各种方法的比较
ARAP vs. ASAP
Singular values perspective
Summary
Geometric Mapping
• Discrete Mapping
• Discrete formulation
argmin \(E(\phi )\) Separable
s.t. \(\phi \in K\)
• Nonlinear and nonconvex
• Computationally expensive for large scale meshes!
Meshless mappings
$$ f(x)=\sum_{i=1}^{m} c_iB_i(x) $$
[46:28] \(f\)有些独特的性质。例如在边界上满足一定的性质,就能保证内部一定满足某些性质。
对整个对象做映射,因此是meshless.
• Low distortion
• Flip‐free
• Bijective
其他区域间的映射求解
• 离散形式
• 约束条件
本文出自CaterpillarStudyGroup,转载请注明出处。 https://caterpillarstudygroup.github.io/GAMES102_mdbook/