CCG 05-07:LSCM 的组装、约束与翻转

本页只解决一个问题

最小二乘共形映射怎样形成矩阵,为什么低能量仍可能翻转?

本页是原长篇讲义的单概念版本。第一次阅读只追踪本页定义的对象;看见未掌握的前置符号时,先沿链接退回,不要跳过定义硬背结论。

开始前

14. LSCM 的单三角形组装

在局部复坐标zi=xi+iyiz_i=x_i+iy_i 中,线性 UV 函数w=u+ivw=u+iv 的反全纯导数在三角形内为常数。可将每个三角形贡献写成

Et=14At∣(wj−wi)(zk−zi)−(wk−wi)(zj−zi)∣anti2,E_t=\frac1{4A_t} \left| (w_j-w_i)(z_k-z_i) -(w_k-w_i)(z_j-z_i) \right|_{\text{anti}}^2,

更方便的实现形式是直接离散 Cauchy–Riemann 残差。设

∇u=∑a∈{i,j,k}ua∇ϕa,∇v=∑ava∇ϕa.\nabla u=\sum_{a\in\{i,j,k\}}u_a\nabla\phi_a, \qquad \nabla v=\sum_av_a\nabla\phi_a.

三角形残差:

rt=[ux−vyuy+vx]=Ctxt,r_t= \begin{bmatrix} u_x-v_y\\u_y+v_x \end{bmatrix} =C_tx_t,

xt=(ui,uj,uk,vi,vj,vk)T.x_t=(u_i,u_j,u_k,v_i,v_j,v_k)^T.

局部能量

Et=At∥Ctxt∥2,E_t=A_t\|C_tx_t\|^2,

局部 Hessian

Ht=2AtCtTCt.H_t=2A_tC_t^TC_t.

把HtH_t scatter-add 到全局矩阵HH。因为平移、旋转和缩放不改变共形性,系统有相似变换自由度;通常固定两个不同顶点的 UV 坐标,或添加规范化约束。

15. LSCM 约束系统

将所有未知量排列为

x=(u1,…,un,v1,…,vn)T.x=(u_1,\ldots,u_n,v_1,\ldots,v_n)^T.

问题:

min⁡x12xTHxs.t.Cx=d.\min_x\frac12x^THx \quad\text{s.t.}\quad Cx=d.

KKT 系统:

[HCTC0][xλ]=[0d].\boxed{ \begin{bmatrix} H&C^T\\C&0 \end{bmatrix} \begin{bmatrix}x\\\lambda\end{bmatrix} = \begin{bmatrix}0\\d\end{bmatrix}. }

或者消去固定变量,只解自由变量:

HFFxF=−HFCxC.H_{FF}x_F=-H_{FC}x_C.

锚点应尽量相隔较远,否则尺度规范化病态。

16. LSCM 不保证无翻转

LSCM 最小化二次能量,但可行域没有包含det⁡Jt>0\det J_t>0 约束。特别是:

  • 网格不是圆盘;
  • 锚点选择差;
  • 三角形退化;
  • 边界高度非凸;
  • 能量极小值经过退化状态;

都可能出现翻转。需要显式 barrier,例如对det⁡Jt\det J_t 加

−μlog⁡det⁡Jt-\mu\log\det J_t

或使用本身在det⁡J→0+\det J\to0^+ 时发散的 symmetric Dirichlet 能量并配合 line search。

读完必须能回答

  1. 不看公式,用自己的话回答开头的核心问题。
  2. 指出本页最重要公式中每个符号的类型:标量、向量、矩阵、映射还是集合。
  3. 找出定理成立所需的假设,并举一个删除某条假设后可能失败的例子。
  4. 对最小例子手算一遍;若本页含代码,再比较手算与程序输出。

前后课程

上一课:三角形 Jacobian 与共形能量 | 下一课:顶点缩放与曲率 Jacobian