system: [SYSTEM]

user: 3. 细分曲面奇异点处的G 2 连续性 本节通过改进Charles Loop [ 4 ] 的理论给出了含有奇异点的 G 2 重建方法。首先，对初始控制网格进行“混合细分”，即先采用形状可调的C-C细分方法进行细分然后再用经典的C-C细分，目的是为了保证曲面片具有B样条边界；其次，在“混合细分”的基础上，以奇异点处的2-环作为控制网格，采用循环映射的方法得到了二阶连续的约束方程组；最后，利用循环矩阵和能量函数优化方法给出了 G 2 填充 n 边洞时，Bézier控制点的显式解，不仅使奇异点周围曲面片之间满足 G 2 ，并且和Catmull-Clark细分曲面实现 G 2 拼接，得到整体 G 2 连续的曲面。 3.1. 二阶几何连续条件 定义1：两曲面 P ( u ， v ) 和 Q ( s ， r ) 沿公共连接线 P ( t ) = Q ( t ) 具有 G 2 连续的充要条件 [ 6 ] 是两曲面之一可以重新参数化，以至于它们沿公共连接线为 C k 连续的。如 Q ( s ， r ) 重新参数化为 Q ¯ ( s ¯ ， r ¯ ) ，使得 ∂ i + j ∂ u i ∂ v j P ( t ) = ∂ i + j ∂ s i ∂ r j Q ¯ ( t ) ，     i + j = 0 ， 1 ， ⋯ ， k . 根据上述定义可知，给定两个曲面片 P i ( u ， v ) 和 P i + 1 ( u ， v ) ： [ 0 ， 1 ] × [ 0 ， 1 ] → R m ，沿公共边界 C : C ( v ) = P i ( 0 ， v ) = P i + 1 ( 0 ， v ) 二阶几何连续的充要条件是存在函数 { ( p i ( v ) ， q i ( v ) ) ， i = 1 ， 2 } 使得下列表达式沿 C 成立： ∂ 2 ∂ u 2 P i = p 2 ( v ) ∂ ∂ u P i + 1 + q 2 ( v ) ∂ ∂ v P i + 1 + p 1 2 ( v ) ∂ 2 ∂ u 2 P i + 1 + 2 p 1 ( v ) q 1 ( v ) ∂ 2 ∂ u ∂ v P i + 1 + q 1 2 ( v ) ∂ 2 ∂ v 2 P i + 1 . 3.2. 初始控制网格的“混合细分” 对于任意拓扑形状的散乱点集得到的控制网格，采用本文第1节给出的形状可调的C-C细分算法，对网格进行细分，得到的网格曲面可以表示为 P ( u ， v ) = U C H C T V T 令 A = C H C T ， H 为双三次系数矩阵，则第 k 个曲面片对应的系数矩阵为 A k = C k H k C k T ，相应的参数调节矩阵为 C k = [ c k 2 ( 1 + c k ) 1 1 + c k c k 2 ( 1 + c k ) 0 − c k ( 2 − c k ) 1 + c k 0 c k ( 2 − c k ) 1 + c k 0 c k ( 5 − 4 c k ) 2 ( 1 + c k ) ( − 2 c k + 3 ) ( c k − 2 ) 2 ( 1 + c k ) 4 c k 2 − 11 c k + 6 2 ( 1 + c k ) c k ( 2 c k − 1 ) 2 ( 1 + c k ) c k ( c k − 1 ) 1 + c k ( c k − 1 ) ( c k − 2 ) 1 + c k − ( c k − 1 ) ( c k − 2 ) 1 + c k c k ( 1 − c k ) 1 + c k ] 为了保持双三次样条边界，必要时可以在此基础上重新进行Catmull-Clark细分，该过程称为“混合细分”。通过“混合细分”将奇异点从正则网格中隔离出来，构造出奇异点的 n 边洞，对于正则处已经满足二阶连续，下面要做的就是如何在保证二阶几何连续的情况下填充 n 边洞并且与周围的曲面片拼接后曲面整体达到二阶连续。如图1所示。 在图1中，与奇异点直接相邻的边，称为内部边界；与奇异点间接相邻的边称为外部边界。要使最后整张曲面为 G 2 连续，要求曲面片内部边界之间的拼接是 G 2 且外部边界与Catmull-Clark曲面片之间的拼接也满足 G 2 。经过“混合细分”后，构造出奇异点的二环，如下图2所示。 对于 n 边洞的填充，本文构造了双七次B-样条曲面片进行填充，令 T i = [ ∂ P i ∂ u ∂ P i ∂ v ∂ 2 P i ∂ u 2 ∂ 2 P i ∂ u ∂ v ∂ 2 P i ∂ v 2 ∂ 3 P i ∂ u 2 ∂ v ∂ 3 P i ∂ u ∂ v 2 ∂ 4 P i ∂ u 2 ∂ v 2 ] 则 T i + 1 = [ ∂ P i + 1 ∂ u ∂ P i + 1 ∂ v ∂ 2 P i + 1 ∂ u 2 ∂ 2 P i + 1 ∂ u ∂ v ∂ 2 P i + 1 ∂ v 2 ∂ 3 P i + 1 ∂ u 2 ∂ v ∂ 3 P i + 1 ∂ u ∂ v 2 ∂ 4 P i + 1 ∂ u 2 ∂ v 2 ] 若 Θ i 为曲面片 P i 和 P i + 1 之间的参数化矩阵，则由二阶几何连续性定义可以得到 图1. 混合细分产生的n边洞 图2. 混合细分后奇异点的二环 T i = T i + 1 ⋅ Θ i 那么，具有公共顶点的 n 个曲面片 P i ( i = 0 ， ⋯ ， n − 1 )，相邻的曲面片之间满足几何连续和循环条件，则 n 个具有公共顶点的曲面片之间满足如下关系 T 0 = T 0 ⋅ Θ n − 1 ⋅ Θ n − 2 ⋯ Θ 1 ⋅ Θ 0 从上式推得 I = Θ n − 1 ⋅ Θ n − 2 ⋯ Θ 1 ⋅ Θ 0 要使最后整张曲面为 G 2 连续，要求曲面片内部边界之间的拼接是 G 2 且外部边界与Catmull-Clark曲面片之间的拼接也满足 G 2 。 3.2.1.内部边界的连续性 首先，定义内部边界的相关映射为 φ n : ( u ， v ) → ( x ， y ) ，令 { x = ( cos 2π n ) [ ( 1 − u ) v + sec 2π n ] y = ( sin 2π n ) [ ( 1 − u ) v + ( sec 2π n ) u v ] r n 是以原点为中心 2π n 为单位的一个逆时针旋转变换 r n ( u ， v ) = [ cos 2π n − sin 2π n sin 2π n cos 2π n ] [ u v ] 则可以得到 P i + 1 = φ n − 1 ∘ ( r n − 1 ∘ φ n ) P i 。于是，对于 n 价奇异点周围的曲面片 P 0 ， P 1 ， ⋯ ， P n − 2 ， P n − 1 有 I = ( Φ n − 1 ⋅ R n − 1 ⋅ Φ n ) n = Φ n − 1 ⋅ ( R n − 1 ) n ⋅ Φ n (1) 成立， Φ n ， R n 为对应变换 ϕ n ， r n 的矩阵，并且 ( R n − 1 ) n = I 。 对于带有内部边界的曲面片 P i ( 0 ， t ) 和 P i + 1 ( t ， 0 ) 达到二阶几何连续，则需要满足下面三个条件 P i ( 0 ， t ) − P i + 1 ( t ， 0 ) = 0 (2) c n ( 1 − t ) P i + 1 u ( t ， 0 ) − P i + 1 v ( t ， 0 ) − c n ( t − 1 ) P i v ( 0 ， t ) − P i u ( 0 ， t ) = 0 (3) 2 c n 2 ( 1 − t ) ( P i + 1 v ( t ， 0 ) − P i u ( 0 ， t ) ) + 2 c n ( 1 − t ) ( 1 + c n ( 1 − t ) ) ( P i + 1 u v ( t ， 0 ) − P i u v ( 0 ， t ) ) − ( 1 + c n ( 1 − t ) ) ( P i + 1 v v ( t ， 0 ) − P i u u ( 0 ， t ) ) = 0 (4) 令双七次张量积曲面片 P s ( u ， v ) = ∑ i = 0 7 ∑ j = 0 7 p i j s B i 7 ( u ) B j 7 ( v )   ( 0 ≤ u ， v ≤ 1 ) ，则对于 n 边洞的第 i 和 i + 1 个曲面片 P i ( u ， v ) 和 P i + 1 ( u ， v ) 可以得到 P i ( 0 ， t ) 、 P i + 1 ( t ， 0 ) 、 P i u ( 0 ， t ) 、 P i v ( 0 ， t ) 、 P i u v ( 0 ， t ) 、 P i u u ( 0 ， t ) 、 P i + 1 u ( t ， 0 ) 、 P i + 1 v ( t ， 0 ) 、 P i+1 u v ( t ， 0 ) 、 P i + 1 v v ( t ， 0 ) ，将上述结果代入(2)可以得到 p 00 i = p 07 i + 1 ， p 01 i = p 17 i + 1 ， p 02 i = p 27 i + 1 ， p 03 i = p 37 i + 1 ， p 04 i = p 47 i + 1 ， p 05 i = p 57 i + 1 ， p 06 i = p 77 i + 1 ， p 07 i = p 77 i + 1 . 代入(3)可得 c n ( − α 1 − 2 α 2 + 3 α 3 − 7 α 4 + 5 α 5 − 21 α 6 + 7 α 7 − α 8 ) + ( β 1 − β 2 + β 3 − β 4 + β 5 − β 6 + β 7 − β 8 ) = 0 . c n ( 7 α 1 + 13 α 2 − 17 α 3 + 31 α 4 − 19 α 5 + 57 α 6 − 13 α 7 + α 8 ) + ( − 7 β 1 + 6 β 2 − 5 β 3 + 4 β 4 − 3 β 5 + 2 β 6 − β 7 ) = 0. c n ( − 21 α 1 − 36 α 2 + 40 α 3 − 54 α 4 + 27 α 5 − 51 α 6 + 6 α 7 ) + ( 21 β 1 − 15 β 2 + 10 β 3 − 6 β 4 + 3 β 5 − β 6 ) = 0. c n ( 35 α 1 + 55 α 2 − 50 α 3 + 46 α 4 − 17 α 5 + 15 α 6 + 6 α 7 ) + ( − 35 β 1 + 20 β 2 − 10 β 3 + 4 β 4 − β 5 ) = 0. c n ( − 35 α 1 − 50 α 2 + 35 α 3 − 19 α 4 + 4 α 5 ) + ( 35 β 1 − 15 β 2 + 5 β 3 − β 4 ) = 0. c n ( 21 α 1 + 27 α 2 − 13 α 3 + 3 α 4 ) + ( − 21 β 1 + 6 β 2 − β 3 ) = 0. c n ( − 7 α 1 − 8 α 2 + 2 α 3 ) + ( 7 β 1 − β 2 ) = 0. c n ( α 1 + α 2 ) − β 1 = 0. 为表示简便，在这里系数 α i ( i = 1 ， 2 ， ⋯ ， 8 ) 表示 α 1 = − 7 p 00 i + 1 − 7 p 00 i ，     α 2 = 7 p 10 i + 1 + 7 p 01 i ，     α 3 = 21 p 20 i + 1 + 21 p 02 i ，     α 4 = 35 p 30 i + 1 + 35 p 03 i ， α 5 = 35 p 40 i + 1 + 35 p 04 i ，     α 6 = 7 p 50 i + 1 + 7 p 05 i ，     α 7 = 7 p 60 i + 1 + 7 p 06 i ，     α 8 = 7 p 70 i + 1 + 7 p 07 i . 对于系数 β i ( i = 1 ， 2 ， ⋯ ， 8 ) 表示 β 1 = 7 ( p 00 i + 1 − p 01 i + 1 ) + 7 ( p 10 i − p 00 i ) ，     β 2 = 49 ( p 10 i + 1 − p 11 i + 1 ) + 49 ( p 11 i − p 01 i ) ， β 3 = 147 ( p 20 i + 1 − p 21 i + 1 ) + 147 ( p 12 i − p 02 i ) ，     β 4 = 245 ( p 30 i + 1 − p 31 i + 1 ) + 245 ( p 13 i − p 03 i ) ， β 5 = 245 ( p 40 i + 1 − p 41 i + 1 ) + 245 ( p 14 i − p 04 i ) ，     β 6 = 147 ( p 50 i + 1 − p 51 i + 1 ) + 147 ( p 15 i − p 05 i ) ， β 7 = 7 ( p 60 i + 1 − p 61 i + 1 ) + 7 ( p 16 i − p 06 i ) ，     β 8 = 7 ( p 70 i + 1 − p 71 i + 1 ) + 7 ( p 17 i − p 07 i ) . 以此类推，代入(4)也可以得到8个方程。因此，可以得到24个约束方程，其中含有8个独立方程自动满足循环条件，因此，实际上得到16个约束方程。 3.2.2. 外部边界的连续性 外部边界指的是在奇异点周围，不以奇异点为顶点，并且在拼接过程中与周围曲面片共有的边。在这里可以将外部边界的两个端点分为两类：第一类是与奇异点相邻的点；第二类是与奇异点相对的点。定义映射 ψ n : ( u ， v ) → ( x ， y ) ，其中 n 为对应奇异点的价。对于第一类点，令 q ( u ， v ) = [ 1 0 0 − 1 ] [ u v ] ， s ( u ， v ) = [ 0 1 1 0 ] [ u v ] 对应的链式规则矩阵分别为 Q ， S 为 n × n 的块对角矩阵，其中， Q = [ 1 0 0 − 1 ⋱ 1 0 0 − 1 ] n × n ， S = [ 0 1 1 0 ⋱ 0 1 1 0 ] n × n 对于第一类点有 I = ( Q ⋅ ψ n ⋅ S ⋅ ( R n − 1 ⋅ φ n ) − 1 ⋅ φ n ⋅ ψ n − 1 ) ⋅ ( Q ⋅ ψ m ⋅ S ⋅ ( R m − 1 ⋅ φ m ) − 1 ⋅ φ m ⋅ ψ m − 1 ) 令 ψ n ( u ， v ) = ψ n ( v ， u ) ，则 S ⋅ ψ n ⋅ S = ψ n ，对于第二类点有 I = ψ k ⋅ ( S ⋅ ψ k ⋅ S ) − 1 ⋅ ψ l ⋅ ( S ⋅ ψ l ⋅ S ) − 1 ⋅ ψ m ⋅ ( S ⋅ ψ k ⋅ S ) − 1 ⋅ ψ n ⋅ ( S ⋅ ψ n ⋅ S ) − 1 由上述两个式子可以推得 y ( u ， v ) = b 4 ( v ) T [ 0 0 0 0 1 4 5 c n 3 − 3 c n 2 − 15 c n + 18 12 ( c n − 2 ) ( 2 c n − 3 ) c n 2 + 2 c n − 6 12 ( c n − 2 ) 1 4 1 2 c n + 3 6 c n 2 + 3 c n − 9 9 ( c n − 2 ) 1 2 3 4 c n + 9 12 c n + 9 12 3 4 1 1 1 1 ] b 3 (u) 其中， c n = cos ( 2π n ) ，又由对称性可得 x ( u ， v ) = y ( v ， u ) 。 在奇异点周围可以得到 n 个“混合细分”的双三次B-样条曲面片，对于外部边界，通过运用双三次节点插入算子，将B样条转化为 n 个Bernstein形式的双三次Bézier曲面片的控制点 b k = 1 36 Q T A Q ， 其中 Q = [ 1 0 0 0 4 4 2 1 1 2 4 4 0 0 0 1 ] ， A 为“混合细分”矩阵。 对于奇异点处的第 k 个曲面片，有 A k = [ 1 a 10 k + 2 a 11 k + 1 a 12 k + 1 a 10 k − 1 a 00 k a 10 k + 1 a 20 k + 1 a 11 k − 1 a 10 k a 11 k a 12 k a 12 k − 1 a 20 k a 20 k a 22 k ] 则Bézier曲面片的表达式 B i ( u ， v ) = 1 36 b 3 ( u ) Q T [ 1 a 10 k + 2 a 11 k + 1 a 12 k + 1 a 10 k − 1 a 00 k a 10 k + 1 a 20 k + 1 a 11 k − 1 a 10 k a 11 k a 12 k a 12 k − 1 a 20 k a 21 k a 22 k ] Q ( b 3 ( v ) ) T 要使外部边界 P i ( 1 ， t ) 满足二阶几何连续只需要满足下面条件即可 ∂ j ∂ u j P i ( 1 ， t ) = ∂ j ∂ u j ( B i ∘ ψ n ) ( 1 ， t ) ，   j = 0 ， 1 ， 2. 类似于内部边界，可以推得 P i ( 1 ， t ) 、 B i ( 1 ， t ) 、 ∂ ∂ u P i ( 1 ， t ) 、 ∂ ∂ x B i ( 1 ， t ) 、 ∂ ∂ y B i ( 1 ， t ) 、 ∂ 2 ∂ x 2 B i ( 1 ， t ) 、 ∂ 2 ∂ x y B i ( 1 ， t ) 和 ∂ 2 ∂ y 2 B i ( 1 ， t ) 。同时，由已知条件可以得到 ∂ ∂ u ψ n ， x ( 1 ， t ) = − 1 2 ( 1 − t ) 3 − 3 ( c n + 1 ) 2 t ( 1 − t ) 2 − 3 ( c n + 1 ) 2 t 2 ( 1 − t ) − 1 2 t 3 ∂ ∂ u ψ n ， y = − c n 2 + c n c n − 2 t ( 1 − t ) 3 + − 2 c n 2 + 33 2 c n − 27 c n − 2 t 2 ( 1 − t ) 2 − 3 ( c n + 9 ) 2 t 3 ( 1 − t ) ∂ 2 ∂ u 2 ψ n ， x ( 1 ， t ) = − 9 ( 1 − t ) 3 − 3 ( c n + 9 ) t ( 1 − t ) 2 + 3 ( c n 2 + 3 c n − 6 ) c n − 2 t 2 ( 1 − t ) − 9 t 3 ∂ 2 ∂ u 2 ψ n ， y ( 1 ， t ) = 2 c n 3 + 2 c n 2 ( c n − 2 ) ( 2 c n − 3 ) t ( 1 − t ) 3 − 2 c n 2 c n − 2 t 2 ( 1 − t ) 2 − 3 c n t 3 ( 1 − t ) 对于外部边界 ( t ， 1 ) 连续性条件，每个方程的化简计算后次数不超过7次，含有8个系数，由对应系数相等，可以得到24个方程，同理，对于外部边界 ( 1 ， t ) 也可以得到24个方程。对于n价的奇异点则产生48n个约束方程。对于曲面片 P i ( 0 ， t ) 和 P i + 1 ( t ， 0 ) 的内部边界，由连续性条件可以得到24个约束方程，但是当 t = 1 时， P i ( 0 ， 1 ) 和 P i + 1 ( 1 ， 0 ) 所确定的9个二阶混合偏导自动满足约束条件，与外部边界的二阶连续性条件重复，因此，对于 n 价的奇异点则产生16n个约束方程。这样，一共得到了64n个方程，对于价为 n 的奇异点，双七次曲面环恰好有64n个未知数，因此可以求得该方程解即所求的控制顶点。 3.3. Bézier控制点的求解 对于简单的公式，可以直接以文本方式输入；对于复杂的公式，可以考虑使用公式编辑器，或者将公式制作成图片后插入文中。编辑公式的过程中要特别注意减号与连字符的区别，前者较长，后者较短。令双七次曲面片控制顶点的系数矩阵为 C ，则对应的第 i 个曲面片的系数矩阵为 p i ，为了保证曲面片整体的二阶连续性，则需要满足如下条件 C P = W A 其中， C 为循环矩阵， P 为双七次曲面片控制顶点，矩阵 A 对应图2二环中第 i 个曲面片的样条顶点。对于循环矩阵 [ 7 ] C = b c i r c ( c 0 ， c 1 ， ⋯ ， c n − 1 ) ，它的全部特征根为 λ i = ∑ j = 0 n c j ω i j ，其中 ω j = e i 2 π n + 1 j ，并且 C 相似于对角阵 d i a g ( λ 0 ， ⋯ ， λ n − 1 ) 。 为了使二次能量函数 [ 8 ] 最小，接下来采用Lagrange乘子法 [ 9 ] ，可将约束条件转化为下列形式 对于第 i 个块方程，有 { ∑ i = 0 n − 1 c i T λ i + ∑ i = 0 n − 1 E p i = 0 ∑ i = 0 n − 1 c i p i = ∑ i = 0 n − 1 ω i a i 其中，对于第 i 个方程，只有 p i 的系数为 E ，其余的均为0。 然后采用傅里叶变换 [ 10 ] (DFT)，令 d ^ l = 1 n ∑ k = 0 n − 1 E ¯ k l d k ，其中， k ， l = 0 ， 1 ， ⋯ ， n − 1 ， E ¯ n k l = C n k l − − 1 S n k l ， Euler系数 C n k l = cos 2 π k l n ， S n k l = sin 2 π k l n 则有 ρ ^ j = 1 n ∑ k = 0 n − 1 τ k ρ k (5) 其中， τ k = c o s 2 π k n − − 1 s i n 2 π k n 。 将 p i ， c i ， λ i ， ω i ， a i 代入(5)式即可得到 p ^ j ， c ^ j ， λ ^ j ， ω ^ j ， a ^ j 。 于是上式可转化为 { E p ^ j + c ^ j H λ ^ j = 0 c ^ j p ^ j = w ^ j a ^ j 解得 p ^ j = w ^ j a ^ j c ^ j (其中 j = 0 ， 1 ， ⋯ ， n − 1 )，求得 p ^ j 后再利用傅里叶逆变换(IDFT)，将 p ^ j ， c ^ j ， λ ^ j ， ω ^ j ， a ^ j 代入(5)式即可反求出相应的双七次控制顶点 p i 。