Practical 3D Frame Field Generation(2D形式)

1. 2D

  该文先说明了采用基函数表述标架的可行性----通过2d来验证,再由此拓展到3d形式,以下是2d形式的过程

1.1 定义

  该文采用基函数来表示标架:
l e t F ~ ( α ) = c o s ( 4 α ) α ∈ [ 0 , 2 π ] ∴ F ( α ) = F ~ ( α − θ ) = c o s ( 4 α − 4 θ ) = c o s ( 4 θ ) c o s ( 4 α ) + s i n ( 4 θ ) s i n ( 4 α ) l e t B = ( c o s ( 4 α ) , s i n ( 4 α ) ) , a = ( c o s ( 4 θ ) , s i n ( 4 θ ) ) ∴ F = B a \begin{gathered} let \quad \tilde{F}(\alpha)=cos(4\alpha)\quad \alpha \in[0,2\pi]\\ \therefore F(\alpha)=\tilde{F}(\alpha-\theta)=cos(4\alpha-4\theta)=cos(4\theta)cos(4\alpha)+sin(4\theta)sin(4\alpha) \\ let\quad B=(cos(4\alpha),sin(4\alpha)),a=(cos(4\theta),sin(4\theta))\\ \therefore F=Ba \end{gathered} letF~(α)=cos(4α)α[0,2π]F(α)=F~(αθ)=cos(4α4θ)=cos(4θ)cos(4α)+sin(4θ)sin(4α)letB=(cos(4α),sin(4α)),a=(cos(4θ),sin(4θ))F=Ba
即用 F ~ \tilde F F~表示参考标架, F F F表示旋转 θ \theta θ后的标架,下图是说明。
Practical 3D Frame Field Generation(2D形式)

1.2 能量函数

  定义能量函数如下:
E = ∑ i j ∫ 0 2 π ( F j ( α ) − F i ( α ) ) 2 d α = ∑ i j ∫ 0 2 π ( B a j − B a i ) 2 d α = ∑ i j ( a j − a i ) ⊤ ( ∫ 0 2 π B ⊤ B d α ) ( a j − a i ) = π ∑ i j ∥ a j − a i ∥ 2 \begin{aligned} E &=\sum_{i j} \int_{0}^{2 \pi}\left(F^{j}(\alpha)-F^{i}(\alpha)\right)^{2} d \alpha \\ &=\sum_{i j} \int_{0}^{2 \pi}\left(B a^{j}-B a^{i}\right)^{2} d \alpha \\ &=\sum_{i j}\left(a^{j}-a^{i}\right)^{\top}\left(\int_{0}^{2 \pi} B^{\top} B d \alpha\right)\left(a^{j}-a^{i}\right) \\ &=\pi \sum_{i j}\left\|a^{j}-a^{i}\right\|^{2} \end{aligned} E=ij02π(Fj(α)Fi(α))2dα=ij02π(BajBai)2dα=ij(ajai)(02πBBdα)(ajai)=πijajai2
ps:最后一步可以化简是因为 B B B是正交的,且模长为 π \sqrt{\pi} π

1.3 矩阵化

  定义边界或限制条件如下,
a 0 i = cos ⁡ ( 4 θ i ) ; a 1 i = sin ⁡ ( 4 θ i ) a_{0}^{i}=\cos \left(4 \theta^{i}\right) ; \quad a_{1}^{i}=\sin \left(4 \theta^{i}\right) a0i=cos(4θi);a1i=sin(4θi)
θ i \theta^i θi是指定标架的方向,如为边界,即为法向方向。

  将 E E E转换成 ∣ ∣ A X − b ∣ ∣ 2 ||AX-b||^2 AXb2形式,其中 X 2 i = a 0 i , X 2 i + 1 = a 1 i X_{2i}=a_{0}^{i},X_{2i+1}=a_{1}^{i} X2i=a0iX2i+1=a1i,所以 X X X 2 n 2n 2n维向量, n n n为顶点数,定义初始条件如下,
π ( X 2 i − X 2 j ) = 0 π ( X 2 i + 1 − X 2 j + 1 ) = 0 \begin{aligned} \sqrt{\pi}\left(X_{2 i}-X_{2 j}\right) &=0 \\ \sqrt{\pi}\left(X_{2 i+1}-X_{2 j+1}\right) &=0 \end{aligned} π (X2iX2j)π (X2i+1X2j+1)=0=0
即相邻点相等。

  边界条件设置如下,
C X 2 i = C cos ⁡ 4 θ i C X 2 i + 1 = C sin ⁡ 4 θ i \begin{aligned} C X_{2 i} &=C \cos 4 \theta^{i} \\ C X_{2 i+1} &=C \sin 4 \theta^{i} \end{aligned} CX2iCX2i+1=Ccos4θi=Csin4θi
其中 C = 100 C=100 C=100,为常数(经验得来)。

  其中 b = 0 b=0 b=0,对称 2 n × 2 n 2n\times2n 2n×2n矩阵 A A A如下,
A = { a 2 i 2 i = a 2 i + 1 2 i + 1 = 1 , a 2 i 2 j = a 2 i + 1 2 j + 1 = − 1     e d g e ( v i , v j ) 0 i = j A=\left\{\begin{aligned}&a_{2i}^{2i}=a_{2i+1}^{2i+1}=1,a_{2i}^{2j}=a_{2i+1}^{2j+1}=-1\ \ \ &&edge(v_i,v_j)\\&0 &&i=j\end{aligned}\right. A={a2i2i=a2i+12i+1=1,a2i2j=a2i+12j+1=1   0edge(vi,vj)i=j

最小二乘方程的解等价于 A ⊤ A X = A ⊤ b A^{\top} AX=A^{\top}b AAX=Ab

  解出该最小二乘方程后,可得到解并标准化:
a i ← ( X 2 i , X 2 i + 1 ) ⊤ / ∥ ( X 2 i , X 2 i + 1 ) ∥ a^{i} \leftarrow\left(X_{2 i}, X_{2 i+1}\right)^{\top} /\left\|\left(X_{2 i}, X_{2 i+1}\right)\right\| ai(X2i,X2i+1)/(X2i,X2i+1)