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
θ后的标架,下图是说明。
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=ij∑∫02π(Fj(α)−Fi(α))2dα=ij∑∫02π(Baj−Bai)2dα=ij∑(aj−ai)⊤(∫02πB⊤Bdα)(aj−ai)=πij∑∥∥aj−ai∥∥2
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
∣∣AX−b∣∣2形式,其中
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=a0i,X2i+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}
π
(X2i−X2j)π
(X2i+1−X2j+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 A⊤AX=A⊤b
解出该最小二乘方程后,可得到解并标准化:
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)∥