关键词 空间变形;自由变形;嵌入;控制顶点;权因子
1 自由变形方法FFD
自由变形FFD(Free-Form Deformation)方法是常用的一种与物体表示无关的变形方法。FFD算法的实施可以比喻为雕塑家的手,每实施一次,就相当于用手把整个物体雕塑一遍,随着FFD算法的逐次实施,最终把物体雕塑成所希望的形状。FFD算法的前提是:假定物体有很好的弹性,容易在外力的作用下发生变形。应用该法进行造型时,须先设计一个长方体框架,将物体嵌入框架中。当框架受外力变形时,物体的形状也发生改变。框架的形变是由其上的控制顶点的变化而产生的,因此可通过框架上的控制顶点来改变可控制物体的形状,一般称该框架为控制框架。
1.1 FFD数学原理
在数学中变形可以看作一个由R3到R3的映射X=F(x),其定义域是待变形的物体表面所包围的实体,其值域是变形后的物体。所以关键问题是如何构造此映射,使模型的构造具有较好的直观性、交互性和透明性。
Sederberg和Parry使用了三变量张量积Bernstein多项式和一个控制框架来构造映射F(x),其算法如下:
(1)首先,在一个包围待变形物体的长方体中构造局部坐标系O‘- STU,如图1所示。

图 1 构造局部坐标系和控制框架
其中X0(O′) 是局部坐标系的原点,S,T,U是轴矢量。笛卡尔坐标系O-XYZ中任意一点X在局部坐标系中具有坐标(s,t,u)X=X0+sS+tT+uU
式中X0为局部坐标系的原点:

(1.1) 显然,对控制框架内的任意点,其局部坐标满足:0≦s, t,u≦1。
(2)在长方体上构造控制顶点网格Pi,j,k,分别沿S,T和U三个方向用平行于O′TU , O′SU,O′ST坐标面的等距截面将O′S,O′T和O′U等分为l,m和n个区间,则Pi,j,k可表示为
(1.2) 其中i=0,1,…,l; j=0,1,…,m; k=0,1,…,n
框架内任意一点的笛卡尔坐标X可表示为
(1.3) 式中Bil(s),Bjm(t)和Bnk(u)分别为l,m,n次Bernstein多项式基函数。
(3)建立了物体与框架的相互关系之后,用户可通过改变Pi,j,k的位置得到新的控制顶点P′i,j,k和变形后的控制框架。若原控制框架内任一点X所对应的局部坐标为(s,t,u),则该点在框架变形后所对应的笛卡儿坐标Xffd可由变形规则(1.4)确定:
(1.4) 式(1.4)表明:由新的控制顶点计算变形后的物体时,应首先确定原控制框架内任一点X所对应的局部坐标(s,t,u)。一般的说,此过程应根据原控制顶点和式(1.3)求解非线性方程组。在用Bernstein多项式来表示变形映射时,若原控制顶点满足式(1.2),则其局部坐标可用式(1.1)确定。
控制顶点Pi,j,k实际上就是Bernstein多项式的系数,与Bezier曲线、曲面一样,变形与控制顶点存在非常密切的关系。由于Bernstein多项式的性质,移动一个控制顶点将影响框架内的整个空间。因此,变形区域为框架内所有的点。实际上,变形只施加于框架内待变形物体上的点,即需要计算的仅是框架内变形物体上的点。
当整个物体都位于框架内时,因为移动一个控制顶点将影响整个物体的形状,为使变形局部化,所以可采用较小的框架。当物体的一部分位于框架内时,将获得局部变形。此时框架与物体相交,为保持切矢或曲率连续,需对框架控制顶点的位置提出更严格的要求。
物体的变形是由框架控制顶点的移动产生的,要求精确移动物体上一个给定的点将非常困难,故必须经过反复实验才能获得所期望的效果。
应用传统FFD方法对物体进行自由变形时,控制变形的工具是一个参数三变元张量积的Bezier体、B-样条体或NURBS体。被变形物体首先以某种方式嵌入这个体的参数空间,常用的嵌入方式有两种:
(1)待变形物体上任意一点的坐标(x,y,z)和它所对应的局部(参数)坐标(u,v,w)之间建立线性对应关系,一般情况下,该问题需要解非线性方程组;
(2)对于被变形物体,生成其3D包围盒,然后以这个包围盒的一种平行于三坐标平面的分割所生成的空间网格作为变形控制网格;对于位于网格中的物体的每一个采样点或控制顶点,反求出其相对于控制网格的参数坐标(u,v,w)作为其局部坐标。
这两种嵌入方法各有优缺点:前者计算量小,但可控性较差;后者计算量大,但可控性较好。
1.2 FFD特点分析
由上述内容可知,FFD方法其实施与几何形体的表达方式无关,而且参数曲线和参数曲面经过FFD变换后仍是参数曲线和参数曲面。
FFD算法对于构造曲面实体具有较大潜在应用价值,其优点可归纳如下:
(1)可与任何实体造型系统一起使用。
(2)对任何形式、任意幂次的曲面进行变形。
(3)可整体也可局部使用,局部使用时可保持两物体间跨界导矢以及更高阶导矢的连续性。
(4)可应用于曲面或多边形模型。