摘 要 ffd(free-form deformation)自由变形方法是空间变形最有效的方法之一,ffd方法不对物体直接进行变形,而是对物体所嵌入的空间进行变形。本文讨论分析了基于ffd自由变形方法。
关键词 空间变形;自由变形;嵌入;控制顶点;权因子
1 自由变形方法ffd
自由变形ffd(free-form deformation)方法是常用的一种与物体表示无关的变形方法。ffd算法的实施可以比喻为雕塑家的手,每实施一次,就相当于用手把整个物体雕塑一遍,随着ffd算法的逐次实施,最终把物体雕塑成所希望的形状。ffd算法的前提是:假定物体有很好的弹性,容易在外力的作用下发生变形。应用该法进行造型时,须先设计一个长方体框架,将物体嵌入框架中。当框架受外力变形时,物体的形状也发生改变。框架的形变是由其上的控制顶点的变化而产生的,因此可通过框架上的控制顶点来改变可控制物体的形状,一般称该框架为控制框架。
1.1 ffd数学原理
在数学中变形可以看作一个由r
3到r
3的映射x=f(x),其定义域是待变形的物体表面所包围的实体,其值域是变形后的物体。wwW.133229.Com所以关键问题是如何构造此映射,使模型的构造具有较好的直观性、交互性和透明性。
sederberg和parry使用了三变量张量积bernstein多项式和一个控制框架来构造映射f(x),其算法如下:
(1)首先,在一个包围待变形物体的长方体中构造局部坐标系o
‘- stu,如图1所示。
图 1 构造局部坐标系和控制框架
其中x
0(o′) 是局部坐标系的原点,s,t,u是轴矢量。笛卡尔坐标系o-xyz中任意一点x在局部坐标系中具有坐标(
s,t,u)x=x
0+
ss+
tt+
uu
式中x
0为局部坐标系的原点:
(1.1)
显然,对控制框架内的任意点,其局部坐标满足:0≦
s, t,u≦1。
(2)在长方体上构造控制顶点网格p
i,j,k,分别沿s,t和u三个方向用平行于
o′tu ,
o′su,o′st坐标面的等距截面将o′s,o′t和o′u等分为
l,
m和
n个区间,则p
i,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)建立了物体与框架的相互关系之后,用户可通过改变p
i,j,k的位置得到新的控制顶点
p′i,j,k和变形后的控制框架。若原控制框架内任一点x所对应的局部坐标为(
s,
t,
u),则该点在框架变形后所对应的笛卡儿坐标x
ffd可由变形规则(1.4)确定:
(1.4)
式(1.4)表明:由新的控制顶点计算变形后的物体时,应首先确定原控制框架内任一点x所对应的局部坐标(
s,
t,
u)。一般的说,此过程应根据原控制顶点和式(1.3)求解非线性方程组。在用bernstein多项式来表示变形映射时,若原控制顶点满足式(1.2),则其局部坐标可用式(1.1)确定。
控制顶点p
i,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)可应用于曲面或多边形模型。
(5)可估计体积变化的程度,并存在一类保持体积不变的变换。
(6)参数曲线、曲面经ffd变换后仍是参数曲线、曲面。
(7)可应用于美学曲线和光顺曲面,也可应用于大多数功能曲面。
ffd算法也存在一些局限性,其中包括:
(1)不能用于圆角和过渡面的构造。
(2)在进行局部ffd变换时,物体的变形区与非变形区的交是平面边界曲线,欲用ffd构造任意边界曲线的变形将非常困难。
(3)计算量大,对于三维ffd,变形算法总共有三层嵌套循环,其时间复杂性为
o(
n3),如何提高算法效率是实现ffd算法的关键之一。
(4)jacobian矩阵的计算较为繁琐,因而变形后物体表面的导矢,法矢和物体体积的计算也较为复杂。
(5)网格调整比较麻烦,为获得合适的物体形状,需仔细地选择、移动很多控制顶点。
2 基于ffd的其他自由变形方法
2.1 dffd
ffd算法是一种非常有效的几何造型工具,但用其实现复杂的变形则非常困难。难以准确控制物体的形状,难以准确控制物体上点的位移,不熟悉曲面造型的用户不易理解控制顶点的作用及移动控制顶点可能产生的结果。
为了克服ffd方法的缺点,需要采用新的方法,dffd(direct manipulation of free-form deformation)便是其中的一种。
dffd方法仍采用控制框架作为变形工具,它继承性地发展了ffd方法,吸取了ffd方法的优点,克服了ffd方法的不足。应用dffd方法时,用户操作的是物体上的点而不是控制顶点。其核心思想是:选择物体上的一点,将该点移至所要求的位置,反求出控制顶点的位置变化,并计算物体上其它的点。dffd方法易于实现变形物体上点的精确移动,但也没有提供控制变形区域的工具。
2.2 effd
扩展自由变形(effd)方法同样拓广了ffd技术,可使用非长方体,消除了对非平行六面体网格的限制,允许使用非平行六面体的网格形状,使初始的网格允许棱柱和圆柱这种形状,因而增加了ffd的适用范围,能够实现更随意的变形,它允许ffd型网格作为其结构的一部分,多个ffd网格可合并构成effd的网格。
effd技术是ffd的一个拓广。应用与ffd相同的数学公式,但变形工具是由几个任意形状的框架组成的复杂框架。每一框架本身由一组基本块组成。用户可选择预先定义的棱柱形框架(圆柱体、球等)或者通过合并几个框架而构造一个组合框架。其余过程与ffd类似,但局部坐标的计算比较烦杂,而且构造一个合适的框架非常困难。
2.3 rffd
有理自由变形(rffd)方法是ffd方法的另一拓广。应用该法时,每个控制顶点均附加权因子,其初始控制顶点仍位于长方体框架上。当每个控制顶点的权因子都等于1时,与ffd方法等价。权因子提供了另一个控制变形的自由度,然而,用户难以预测改变权因子可能产生的变形结果。
2.4 nffd
基于非均匀有理b样条(nurbs)的自由变形(nurbs-based free-form deformation,简称nffd)应用了非均匀b样条基函数。其优点为:
(1)进行局部变形时无需考虑连续性条件。
(2)控制顶点是非均匀分布的,以便在物体表面变化比较复杂的区域应用较多的控制顶点。
3 结语
基于nurbs的自由变形的提出,为控制修形提供了新的思路,即可通过对简单物体(如长方体、圆柱体和球体等)进行全局或局部变形来获得用户所需的复杂物体。这种通过对其参数域施加形状约束的方法虽然具有直观、简捷、方便的优点,但它仍属于间接修形的范畴,仍需要人为调节控制顶点和权因子;如果能结合某些力学特性自动地控制自由变形过程中的控制晶格顶点和权因子,自由变形的结果则会更接近于现实,这是一个值得研究的问题。
参考文献
[1] 王小平,叶正麟,孟雅琴,李红达.参数曲面自由变形新方法.工程图学学报,2002年第1期
[2] 冯结青,彭群生,马利庄.沿参数曲面的均匀变形方法.软件学报,第9卷,第4期,1998年4月
[3] 冯结青,马利庄,彭群生.嵌入参数空间的曲面控制自由变形方法.计算机辅助设计与图形学学报,第10卷,第3期,1998年5月
[4] 冯结青,郭建民,金小刚,彭群生.改进的多边形物体精确自由变形.计算机学报,第26卷,第9期,2003年,9月