作者在前文的2d形式下引入的基函数其实是傅里叶基底,而在3d下,根据《Boundary aligned smooth 3D cross-frame field》的启发,使用了球谐函数作为基函数。不同的是该文使用了不同的多项式来在球上展开。(而前文是,其实优化后式子是一样的)

二、3D

1. 标架表示

  如果为参考标架函数,那么它为:

其中是实球谐基函数,其中称为degree/band,称为order,

(球谐函数在图形学中先是被用于光照渲染《Spherical harmonic lighting: The gritty details》,一个通俗的介绍球谐函数的系列文章

ps:为什么选择球谐函数?因为它具有以下性质:

  • 标准正交性,它是一组正交基

  • 旋转不变性,比如用矩阵旋转后变为,即,根据旋转不变性有

  • 函数乘积的积分等于其球谐系数向量的点积

由旋转不变性,任意标架可表示为,其中旋转矩阵,可由Wigner D-matrices 给出。

2. 能量函数

相比于2d,3d中的能量函数其实是类似的,不同的是,不再相同,因为引入了球谐函数作为基函数。可以注意到是一个九维向量,而我们要得到的是一个三维向量(即是一个嵌入到九维空间的三维流形),所以后面还需要用其他方法求解其投影在三维中对应的向量,文章中赋予了一个随机初值并使用梯度下降来求解(We do not have a formal proof, but we conjecture that there is a single minimum of the L2 norm )

3. 约束

  一些顶点上的标架需要满足约束条件,如下

3.1法向量对齐z轴

  根据可得到

其中是绕z轴的旋转矩阵。引入向量,可写成以下形式

其中

3.2法向量不与z轴对齐

  策略是先将z轴转到法向量方向,即乘一个旋转矩阵,则变成以下形式

3.3尖锐、角点

  该类顶点上的标架需要符合两个法向量,选择两个大致正交的法向量作为它的特征,然后通过旋转让它们正交,然后将z轴转到它们的叉积方向,方法同3.2

3.4 旋转矩阵

  旋转矩阵为9x9矩阵,为Wigner D-matrices

则最终旋转矩阵为

4.矩阵化

  求解采用最小二乘,其中标架和约束存储于向量(维,为不带约束的顶点,是带约束的顶点)

  系数矩阵为边数)下标是行,上标是列,设置如下:

注意到上面的还不完整,还需在下面加入一个描述约束的block()

  对于有约束点,计算得到其将z轴旋转到法向方向的9x9旋转矩阵,并定义如下值

其中是惩罚系数,则矩阵A剩余部分为

  维向量,其前维为,后由约束决定,如下

注意到中的非零项中的中的约束项一一对应的,即矩阵都是动态生成的,分成了两个block:表面约束点和自由点。另据作者的说法,在这两个block中做一个Hilbert sort会提升大约30%的效率。

  至此,可通过求解得到位于顶点的嵌入到九维空间的标架表示(不再像2D中那样只需标准化就行了)。