目录 • • • • • • • 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分Demo 曲线细分的收敛性和光滑性分析 目录 • • • • • • • 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分Demo 曲线细分的收敛性和光滑性分析 问题背景 动画,电影等对复杂,任意拓 扑结构网格的需求 NURBS等传统造型技术在复杂, 任意拓扑结构网格上的不足 目录 • • • • • • • 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分Demo 曲线细分的收敛性和光滑性分析 细分曲线的基本思想 从初始的控制点开始,按照一定 的细分规则插入新点,经过反复 迭代细化,生成极限的光滑曲线。 简单的例子 细分过程 1 2 1 2 细分过程 1 8 3 4 1 8 细分过程 1 2 1 2 细分过程 1 8 1 8 3 4 细分过程 1 2 1 2 细分过程 1 2 1 2 细分过程 3 4 1 8 1 8 细分过程 细分过程 …… 控制点:迭代过程中的点 细化规则:如何插入新点? 反复迭代:停止条件?极限存在? 目录 • • • • • • • 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分Demo 曲线细分的收敛性和光滑性分析 细分规则 拓扑分裂 • 如何增加新的点,产生新的拓扑结构 几何平均 • 计算新添的点和原始点的几何位置 拓扑分裂 • 曲线细分都是将一条折线变成两条折线 几何平均 • Mask: • 𝑃0 = 𝑖 𝜔𝑖 𝑃𝑖 𝜔1 𝜔2 𝜔3 𝜔4 收敛和平滑 • 收敛性(convergence) • 光滑性(smoothness) 目录 • • • • • • • 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分Demo 曲线细分的收敛性和光滑性分析 分类 • 线性 均匀B样条细分算法 四点插值细分算法 • 非线性 基于非线性平均的细分算法 基于法向的非线性细分算法 基于曲率的非线性细分算法 目录 • • • • • • • 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分Demo 曲线细分的收敛性和光滑性分析 均匀B样条曲线细分算法 由初始多边形经过细分规则得到细 化多边形,细化多边形的极限为均 匀的B样条曲线。 算法的过程可以形容为一个割角过 程。 B-spline Basis Function • Definition: Repeated integration 1, if 0 ≤ 𝑥 < 1 • Order one:𝑛 𝑥 = 0,otherwise 1 • Order m: 𝑛 𝑚 𝑥 = 1 𝑚−1 𝑛 0 𝑥− B-spline Basis Function • m=1 • m=2 B-spline Basis Function • Knots of the B-spline basis function: Z, all integers. • Knot span: [i,i+1), uniform. • Any function: P 𝑥 = ∞ 𝑚 𝑝 𝑛 𝑖=−∞ 𝑖 𝑥− Properties 𝑛𝑚 𝑥) is a 𝐶 𝑚−2 piecewise polynomial of degree m-1. 𝑛𝑚 𝑥) is non-negative and its interval is [0,m]. 𝑛𝑚 𝑥) has unit integral. Refinement Relation • Dilate(expand) the coordinate: x -> 2x. • Any function: P 𝑥 = ∞ ′ 𝑚 𝑝 𝑖=−∞ 𝑖 𝑛 2𝑥 − Refinement Relation • Using 𝑛𝑚 2𝑥 basis functions to form the 𝑛𝑚 𝑥 : 𝑆𝑖𝑚 𝑛𝑚 2𝑥 − 𝑖 𝑛𝑚 𝑥 = 𝑖∈𝑧 If 𝑆𝑖𝑚 exits, then 𝑁 𝑥 = 𝑁 2𝑥 𝑆. 𝑁 2𝑥 𝑝′ = 𝑁 𝑥 𝑝 = 𝑁 2𝑥 𝑆𝑝 ⇒ 𝑝′ = 𝑆𝑝 Generating function • Subdivision mask: coefficient sequence: 𝑚 𝑆 𝑚 = … , 𝑆−𝑛 , … , 𝑆0𝑚 , … , 𝑆𝑛𝑚 , … ) • Generating Function: 𝑆 not a polynomial. 𝑚 𝑥 = 𝑚 𝑖 𝑖∈𝑧 𝑆𝑖 𝑥 , An example * 𝑆1 𝑥 = 1 + 𝑥, 𝑛1 𝑥 = 𝑛1 2𝑥 + 𝑛1 2𝑥 − 1) Theorem For all m > 1, the generating function of the subdivision mask 𝑆 𝑚 𝑥) for the B-spline basis function 𝑛𝑚 𝑥 of order m satisfies the recurrence: 1 𝑚 𝑆 𝑥 = 1 + 𝑥)𝑆 𝑚−1 𝑥). 2 Subdivision mask Starting from 𝑆1 𝑥 = 1 + 𝑥, the subdivision mask for B-spline of order m has the form: 1 𝑚 𝑆 𝑥 = 𝑚−1 1 + 𝑥)𝑚 2 Mask . . . • 𝑆= . . . . 1 2 1 8 . 1 2 3 4 . 0 1 8 1 2 3 4 1 2 1 8 . . 0 0 0 0 . . . 0 0 . 0 12 1 1 . , 𝑤ℎ𝑒𝑛 𝑚 = 4 0 0 8 8 . 1 0 0 0 2 3 1 . . 0 0 4 8 . 0 0 0 1 1 . 2 2 . . . . . . . Subdivision Scheme • Basic refinement relation: 𝑝𝑘 = 𝑆𝑝𝑘−1 . • The ith coefficient of 𝑝𝑘 : 𝑝𝑘,𝑖 = 𝑚 𝑆 𝑗∈𝑍 𝑖−2𝑗 𝑝𝑘−1,𝑗 • Upsample 𝑝𝑘−1,𝑗 , insert a zero coefficient between each coefficient of 𝑝𝑘−1,𝑗 . 𝑚 𝑆𝑖−2𝑗 𝑝𝑘−1,𝑗 ⇒ 𝑝𝑘,𝑖 = 𝑝𝑘,𝑖 = 𝑗∈𝑍 𝑚 𝑆𝑖−2𝑗 𝑝𝑘−1,2𝑗 𝑗∈𝑍 • Subdivision relation of 𝑝𝑘 : 𝑝𝑘 𝑥 = 𝑆 𝑚 𝑥 𝑝𝑘−1 𝑥 2 . From program view • Order 3: 𝑆3 𝑥 = 1 4 1+ 1 3 3 1 3 𝑥) , , , , ) 4 4 4 4 3 1 𝑝𝑘,2𝑖−1 = 𝑝𝑘−1,𝑖 + 𝑝𝑘−1,𝑖−1 4 4 3 1 𝑝𝑘,2𝑖 = 𝑝𝑘−1,𝑖 + 𝑝𝑘−1,𝑖+1 4 4 • Order 4: 𝑝𝑘,2𝑖 𝑆4 𝑥 = 1 8 1+ 1 1 3 1 1 4 𝑥) , , , , , ) 8 2 4 2 8 1 3 1 = 𝑝𝑘−1,𝑖−1 + 𝑝𝑘−1,𝑖 + 𝑝𝑘−1,𝑖+1 8 4 8 1 1 𝑝𝑘,2𝑖+1 = 𝑝𝑘−1,𝑖 + 𝑝𝑘−1,𝑖+1 2 2 Chaikin • Mask: 𝑃𝑖−1 3 4 1 4 𝑃𝑖 𝑃𝑖+1 Mask 实现 • 算法是在每个顶点的两边插入两个 点,于是对每个顶点,分别计算它 两边的点,保存。数据结构可以直 接选择标准库的vector。 四点插值细分算法 • 插值算法:保留原控制序列中的点到新的 控制序列中,并在原控制序列的两点之间 插入一个新点。 • Mask的特点: 𝑆 0 = 1, 𝑆 2𝑖 = 0, 𝑓𝑜𝑟 𝑎𝑙𝑙 𝑖 ≠ 0 四点插值细分算法 把最初的顶点按顺序用直线 段连成一条折线段。 进行一步细分,即将上一步 的相邻顶点插入一个新的点。 去掉上一步的折线段,将生 成后的所有顶点按顺序重新 连成折线段。 四点插值细分算法 𝑝𝑘,2𝑖 = 𝑝𝑘−1,𝑖 𝑝𝑘,2𝑖+1 = 1 + 2 𝜔 𝑝𝑘−1,𝑖 + 𝑝𝑘−1,𝑖+1 − 𝜔 𝑝𝑘−1,𝑖−1 + 𝑝𝑘−1,𝑖+2 ) 其中有一个参数需要选择:𝜔。 1 4 1 8 1 1 极限曲线为𝐶 连续曲线,一般情况下,𝜔选择为 。 16 当 𝜔 < 时,产生连续的极限曲线;当0 < ω < 时, Paper: A 4-point interpolatory subdivision scheme for curve design Mask 1 𝑃𝑖−1 𝑃𝑖 𝑃𝑖+1 1 − 16 9 16 9 16 1 − 16 𝑃𝑖 𝑃𝑖+1 𝑃𝑖+2 𝑃𝑖−1 𝑃𝑖+2 Mask 四点插值细分算法 p0 p2 p1 0 1 p3 2 3 p4 4 t 四点插值细分算法 p0 p2 p1 0 1 p4 p3 2 3 4 t 55/96 实现 • 将原来的每个点插入到新的序列中, 对每个顶点计算他附近插入的那个 新点的位置,并且插入到新的序列 中。同样可以使用标准库的vector。 目录 • • • • • • • 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分Demo 曲线细分的收敛性和光滑性分析 目录 • • • • • • • 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分Demo 曲线细分的收敛性和光滑性分析 Convergence If the maximal difference between consecutive coefficients of 𝑃𝑘 goes to zero as 𝑘 → ∞,the function 𝑃 𝑥) converge to a continuous function. Difference Mask • 𝑑 𝑥 =1−𝑥 • The difference between consecutive coefficients is :𝑑 𝑥 𝑝𝑘 𝑥) • Difference at consecutive levels: 𝑑 𝑥 𝑝𝑘−1 𝑥 , 𝑑 𝑥)𝑝𝑘 𝑥) Mask of 𝑑 𝑥) Subdivision mask for difference • Definition: Subdivision mask 𝑡 𝑥 : 𝑑 𝑥 𝑝𝑘 𝑥 = 𝑡 𝑥 [𝑑 𝑥 2 𝑝𝑘−1 𝑥 2 )] 𝑝𝑘−1 𝑥 2 ): upsample the coefficients 𝑝𝑘−1 . 𝑑 𝑥 2 𝑝𝑘−1 𝑥 2 ): the difference between the upsampled coefficients. Theorem • Given a subdivision mask 𝑆 𝑥) satisfying 𝑆 −1 = 0, there exists a subdivision mask 𝑡 𝑥 relating the difference 𝑑 𝑥)𝑝𝑘−1 𝑥) and 𝑑 𝑥)𝑝𝑘 𝑥) of the form: 𝑆 𝑥) 𝑡 𝑥 = 1+𝑥 𝑆 −1 = 0 • If 𝑆 𝑥 is invariant under affine transformations, the rows of the associated subdivision matrix S must sum to one. • Two types of row: odd and even. • For the generating function: 𝑆 1 =2 . 𝑆 −1 = 0 Theorem Given an affinely invariant subdivision scheme with associated subdivision matrix S, let matrix T be the subdivision matrix for the differences. If 𝑇 < 1, the associated function 𝑝𝑘 𝑥 converge uniformly as 𝑘 → ∞ for all initial vectors 𝑝0 with bounded norm. Necessary and sufficient condition • Uniform convergence: the existence of 𝑛 > 0 such that 𝑇 𝑛 < 1. • If such an n fails to exist, the difference do not converge. Properties of 𝑇 𝑛 • Subdivision n times: 𝑡 ′ 𝑥 = 𝑛−1 2𝑖 𝑛 𝑛 𝑖=0 𝑡 𝑥 ), the matrix 𝑇 has 2 shifts. • Partition 𝑡 ′ into 2𝑛 subsequences corresponding to distinct rows of 𝑇 𝑛 and compute 𝑚𝑎𝑥𝑖 𝑗 𝑡 ′ 2𝑛 𝑗 + 𝑖) for 𝑖 = 1 … 2𝑛 − 1. Divided Differences First derivative 𝑝′ 𝑥 : 𝑝 𝑥 − 𝑝 𝑥 − 𝑡) ′ 𝑝 𝑥 = lim 𝑡→0 𝑡 Substituting 𝑡 = 1 2𝑘 𝑝′ 𝑥 = lim 2𝑘 𝑝 𝑥 − 𝑝 𝑥 − 2𝑘 )) 𝑘→∞ First divided differences: 𝑑𝑘 𝑥 = 2𝑘 𝑑 𝑥 = 2𝑘 1 − 𝑥) 𝑡 𝑥) Subdivision mask for divided difference: 𝑑 𝑥)𝑑𝑘 𝑥 𝑆 𝑥 = 𝑡 𝑥 𝑑 𝑥 2 )𝑑𝑘−1 𝑥 2 2𝑆 𝑥 ⇒𝑡 𝑥 = 一阶导数的差分) 2 1+𝑥 Using this scheme , we can test the smoothness of the limit function 𝑝∞ 𝑥). The method is based on previous section on convergence. 𝑚 𝑝∞ 𝑥 ϵ𝐶 ? 𝑑𝑘𝑚 𝑚 𝑥 = [𝑑𝑘 𝑥 ] = 2𝑘𝑚 1 − 𝑥)𝑚 (计算m阶导数) 𝑚 d 𝑥)𝑑𝑘𝑚 𝑥 𝑆 𝑥 = 𝑡 𝑥 𝑑 𝑥)𝑑𝑘−1 𝑥2 2𝑚 𝑆 𝑥) ⇒𝑡 𝑥 = 1 + 𝑥)𝑚+1 If and only if there exists 𝑛 > 0 such that 𝑇 𝑛 < 1 𝑆 𝑥 ? 1 + 𝑥 𝑚+1 Theorem: if S(x) defines a subdivision scheme for which the integer translates of its scaling function are linearly independent and capable of reproducing all polynomials up to degree m, the mask s(x) satisfies 𝑠 𝑖 −1 = 0 𝑓𝑜𝑟 𝑖 = 0 … 𝑚. Example: smoothness The four-point scheme: 1 −3 9 −1 19 1 3 𝑆 𝑥 =− 𝑥 + 𝑥 +1+ 𝑥− 𝑥 16 16 16 16 convergence • • 𝑆 𝑥) 1 −3 𝑡 𝑥 = =− 𝑥 1+𝑥 16 1 1 1 2 + 𝑥− 𝑥 2 16 16 0 5 8 𝑇0 = < 1 + 1 −2 𝑥 16 1 −1 + 𝑥 2 + 𝐶 • 1 0 𝑥) 2𝑆 𝑥) 2𝑡 1 −3 1 𝑡 𝑥 = = =− 𝑥 2 1+𝑥) 1+𝑥 8 3 −1 1 1 𝑥 + − 𝑥 4 4 8 在此处键入公式。 𝑇1 = 1, 𝑇1 𝐶 1 𝑖𝑠 OK. 2 3 = <1 4 + 1 −2 𝑥 4 + Matlab • • • • • • • • • • • • • function max = smooth(n,t) v = t; zeronum = 1; for i=1:n u = []; for j=1:length(t)-1 u = [u,t(j)]; u = [u,zeros(1,zeronum)]; end u = [u,t(end)]; v = conv(v,u); zeronum = zeronum+2^i; end • • • • • • • • • • • • step=2^(n+1); max= 0; for i=1:2^(n+1) j=0;val=0; while(j*step+i<=length(v)) val = val + abs(v(j*step+i)); j = j+1; end if(max<val) max = val; end end 𝐶 2 • 𝑡 𝑥 = 3 −1 𝑥 4 • − 1 4 4𝑆 𝑥) 1+𝑥)3 = 2 2𝑡 1 𝑥) 1+𝑥 𝑇2𝑛 = 1 𝑓𝑜𝑟 𝑎𝑙𝑙 𝑛. • Can’t converge to 𝐶 2 . = 1 −3 − 𝑥 4 3 −2 + 𝑥 4 +