专利名称:计算机图形动画制作方法和装置的制作方法
技术领域:
本发明涉及一种如权利要求1的前序所述的计算机动画制作方法。
这种方法可从在1997年2月在Eindhoven科技大学公开的D.Dekkers的硕士论文中得到。
隐含表面定义形成了以可变形状定义表面以便用在计算机图形中的有力工具。隐含表面通过一个函数进行定义,该函数的自变量是表面所在空间中的坐标。在隐含表面上的点是坐标满足一个涉及该函数的方程式的点。例如,球面可以由为坐标平方和的函数来定义,通过要求函数对于表面上的点应该具有预定正值来实现。另外,更复杂的表面可以由方程式中的组合(例如,相加)函数来定义。
虽然隐含表面定义是定义表面的有力工具,但这种定义对于在实际上绘制表面、即对于计算包含该表面的景物的图象是不够方便的。
Dekkers提出从隐含表面定义计算平面三角形的网格,并用平面三角形绘制该网格。
这是具有吸引力的,因为对于组成平面三角形的网格的表面来说绘制表面的可用硬件被最优化了。描述这种三角形的方程式的线性特性使得高速高效率地绘制这种三角形成为可能。
不使用平面三角形的硬件是一个无吸引力的选择需要非线性方程式的解来找到表面上的点的非线性表面定义不能以这样的高速进行绘制。此外,大多数图形任务主要或只需要平面三角形,所以除了被最优化为绘制平面三角形的可用硬件之外还必须提供绘制隐含表面的任何硬件。
隐含表面定义非常适合于以时变形状定义动画表面,例如通过采用一个作为两个子函数的和的函数并将其中一个子函数相对于另一个作为时间的函数进行变换或旋转来实现。
这种具有时变形状的动画表面的图象最好能够实时地计算,即,尽可能快地将这些图象一个一个地在显示设备上更换。这例如对于计算机游戏应用是非常便利的,在该应用中,形状由游戏者交互地进行控制。
然而,从隐含表面定义计算平面三角形网格是非常耗时的。一般需要迭代求解包含该函数的方程式,因为该函数是非线性的。另外,必须在表面上分布网格中的角点,以便限制由以平面三角形近似表面而引入的近似误差,并避免需要绘制太多的平面三角形。
Dekkers提出通过采用网格的角点来减少在动画制作期间计算平面三角形的网格所需的时间,其中网格的角点已经在时间上的第一点为图象计算出来,作为在与时间上的第一点相近的时间上的第二点为图象计算相应网格角点的开始点。因此,只需要很少的迭代来获得更新的提供对表面的足够近似的角点。还可以从时间上的第一点大量地接收角点的分布。Dekkers提出在迭代中包含角点平行于表面的移动,以达到最优分布。
然而,Dekkers的方法仍然是非常耗时的,使得采用隐含表面定义的动画制作成为计算机图形的一个昂贵的选择。
本发明的一个目的是使得采用隐含表面模型加速计算机动画制作变为可能。
依据本发明的方法的特征由权利要求1的特征部分记载。
依据本发明,将隐含表面定义用来计算近似隐含函数的非线性坐标赋值函数的控制点。坐标赋值函数是一个将表面上的坐标分配给将表面上的位置参数化的自变量的函数。坐标赋值函数的一个例子是例如用于定义一个Bezier形状的Bernstein多项式的加权求和。
因为非线性坐标赋值函数在描述曲线形状上比平面三角形更有力,所以对于以给定精度进行近似的计算所需的控制点要比在由平面三角形网格近似隐含定义表面的情况下要少得多。
随后,将坐标赋值函数用来计算平面三角形的网格中的角点。这个计算执行起来可以比当直接从隐含表面定义计算角点时要快得多。因为从坐标赋值函数计算角点也可以运用到其他绘制问题上,所以它在经济上对于提供用于这个计算的专用硬件更有吸引力,使得这个方法更快。
在动画制作期间,将坐标赋值函数的在时间上的第一点的控制点用作为计算坐标赋值函数在时间上的第二点的控制点的开始点。因此,只对控制点执行耗时的迭代,而不对平面三角形的网格的所有角点执行该迭代。其结果为,减少了迭代所需的计算时间。
在依据本发明的一个实施例中,非线性坐标函数对应于邻接二次三角形的网格。这是特别适合于平面三角形变换的表面表示。
下面将用附图以例示性的方式说明本发明的这些和其他有利方面。
图1显示了一个依赖于时间的表面的例子。
图2显示了用于绘制隐含定义的表面的装置。
图3显示了用于绘制隐含定义的表面的流程图。
图4显示了在时间上一点的表面的分裂。
隐含表面定义是定义在计算机图形中使用的形状表面的有力工具。一个表面的隐含定义一般可以写成一个方程式的形式F(x,y,z)=C这个方程式定义了具有满足这个方程式的坐标(x,y,z)的点的集合。这种定义的一个例子是对形成球形表面的一组点的定义。在这种情况下,可以采用函数F(x,y,z)=(x-x0)2+(y-y0)2+(z-z0)2当C>0时,具有满足方程式F(x,y,z)=C的坐标(x,y,z)的点的集合是一个球面。
隐含表面定义对于计算机图形中的应用是令人关注的,因为其形成了定义表面的有力方法。例如,可以从几个子函数组合成函数F(x,y,z),每个子函数本身隐含地定义了一个基本形状。这个组合描述了这些基本形状以在形状之间的光滑过渡形成的合并。例如,可以定义由采用下列函数的两个球面的合并组成的表面F(x,y,z)=F1(x,y,z)+F2(x,y,z)这个函数F(x,y,z)是由两个子函数组成的F1(x,y,z)=A1/{1+(x-x1)2+(y-y1)2+(z-z1)2}F2(x,y,z)=A2/{1+(x-x2)2+(y-y2)2+(z-z2)2}根据F1(x,y,z)=C和F2(x,y,z)=C,每个子函数本身可用于分别在具有坐标(x1,y1,z1)和(x2,y2,z2)的位置周围定义一个球面。合并的函数定义这些表面的光滑组合。
虽然这个例子采用的是球体,但隐含定义当然可以用于定义任何其他类型的表面。仅仅采用简单的二次函数就可以定义类似平面、圆柱、圆锥等形状及其组合。
在动画制作期间,具有时变形状的表面可以仅仅采用具有时变参数的函数来生成。例如,通过合并两个球面而生成的表面可以通过在时间上改变组成函数的参数A1,(x1,y1,z1)和A2,(x2,y2,z2)(参数(x1,y1,z1)和(x2,y2,z2)也被称为函数F的控制点)来变形。
图1显示了通过分别采用具有中点12、14(例如,分别具有坐标x1,y1,z1和x2,y2,z2)的两个组成函数定义的隐含定义表面的交叉部分10的一个例子。图1还显示了当由于其中一个中点14已经移到点16、该表面在时间上发展时通过表面的交叉部分18(虚线)。
虽然这种类型的隐含定义是模拟表面的有力工具,但它们不太适合于这些表面的高效直接绘制,即计算包含这样一个表面的图象的象素值。这是因为,隐含定义的直接绘制将要求求解方程式F(x,y,z)非常多次。
这可能会产生问题,特别是在必须在实时限制下操作的计算机图形设备、例如在计算机游戏中将表面形状改作对表面的用户响应的函数的交互设备中。为了克服这些问题,提出了一种间接绘制方法,其中,在进行绘制之前首先将表面的隐含定义变换成一个中间定义。
图2显示了一个用于绘制隐含定义表面的计算机图形设备。该设备包含用于产生隐含表面模型的第一模块20。第一模块20与第一变换单元21相连,第一变换单元21用于将隐含表面定义变换成以Bezier三角形表示的表面的定义。第一变换单元21的输出与第二变换单元22的输入相连,第二变换单元22用于将以Bezier三角形表示的定义变换成以平面三角形表示的定义。第二变换单元22的输出与平面三角形绘制单元24的输入相连,平面三角形绘制单元24将以平面三角形表示的定义变换成表面图象。平面三角形绘制单元24的输出与显示设备25相连。时间更新信号单元28与第一模块20和第一变换单元21相连。
图3显示了描述设备操作的流程图。流程图包含第一步骤30,其中,通过选择数个适当的函数和这些函数的参数(例如,A1,x1,y1,z1等),产生图1的类似表面10的表面隐含模型。在流程图的第二步骤32,采用这些函数的定义来计算数个控制点100a-h的坐标,这些坐标例如以二次Bezier三角形定义了表面的近似值。
在Bezier三角形中,表面补片(patch)由将三维坐标(X,Y,Z)分配给表面坐标对(u,v)的坐标赋值函数G(u,v)=(X(u,v),Y(u,v),Z(u,v))来定义对于函数G的域内的任何表面坐标对(u,v),G定义了X、Y、Z的计算。例如,如果G是Bezier函数,G(u,v)=SumklmRklmukvl(l-u-v)m其中,Rklm用于不同的指数,k,l,m是数个控制点的坐标向量。
采用坐标赋值函数比采用隐含定义计算表面上点的坐标要快得多。特别地,如果使用低次(例如二次)多项式坐标赋值函数,则计算会非常快,例如,采用前向差分方法计算分配给在uv空间平均间隔的点的XYZ坐标。
在采用Bezier函数的情况下,第二步骤32从隐含定义确定应该使用多少不同的表面补片来近似隐含定义表面,并且,第二步骤为这些补片中的每一个计算多个这种控制点R的坐标。
在流程图的第三步骤34,坐标赋值函数用于计算平面三角形的网格的角点(corner point)坐标,该坐标随后近似由坐标赋值函数定义的表面补片。
图4显示了这样一组二维角点。表面10包含控制点100a-h,在这个二维例子中,控制点100a-h定义了代表曲面补片的曲线补片。从控制点100a-h已经计算出角点102a-r,角点102a-r定义了连接连续的成对角点102a-r的直线段;直线段在图示上代表平面三角形。
在流程图的第四步骤35,平面三角形的网格的角点坐标被用来计算表面图象中的象素内容。在流程图的第五步骤36显示该图象。
出于第四步骤35的目的,可能需要将取景变换运用到表面上。取景变换包括相对于视点表示坐标系中的表面的变换。这样的取景变换可以包括将一个转换向量增加到表面的点的坐标上(以说明所选定视点的位置),并将这些坐标乘以一个旋转矩阵(以说明摄取视图的想象照相机的取向)。
取景变换最好运用到控制点100a-h的坐标上,角点的坐标从变换出的控制点100a-h计算。因此,在角点坐标上不需要运用取景变换,这就减少了执行图3的流程图所需的计算量。
在流程图的第六步骤38中,更新隐含表面模型,从而使其对应于在在前面的步骤中绘制图象的第一时间点之后的第二时间点。
返回图1,图1显示了在属于第二时间点时模型的交叉部分。例如,可以看到,一个球面的中心12已经移动到新位置16,从而改变了函数F(x,y,z),使其对于时间上的第二点隐含定义了一个新表面18。
在第六步骤之后执行流程图的第七步骤39。在第七步骤39,控制点100a-h的坐标R(曾由坐标赋值函数用来近似表面)现在被用作用于在时间上的第二点近似表面的新控制点160a-h的坐标R’的初始值。从这些初始值R例如通过递归关系来计算出新值R’R(n+1)=R(n)-SnSn=a*grad F(R(n))其中,对于某些n(例如,n=1),R(0)=R,R’=R(n)。因此,点R在例如具有正比于(F(R(n))-C)/(grad(F((R(n)))2的“a”的梯度方向上移动到台阶Sn。
另外,可以将多项增加到Sn上,从而使得点100a-h以保持适合于表面的控制点160a-h的分布的方式移动(在相对平坦的区域的点较少,在强弯曲区域的点较多)。Dekkers的硕士论文描述了对于平面三角形的角点如何完成这一点,例如,通过将一个与表面相切的向量(垂直于grad(F(R)))增加到Sn来实现,从而使得控制点相互排斥,并/或通过将在隐含函数F的控制点12、14的改变方向上的一个向量增加到Sn以便使坐标赋值函数的控制点100a-h跟随着隐含函数F的一个或更多控制点12、14的移动来实现。类似的方法也可以运用到本发明的坐标赋值函数的控制点160a-h。
图1用箭头表明了初始控制点100a-h到新控制点160a-h的移动。
在第七步骤39之后,可以得到控制点160a-h的新(近似)坐标集,采用该新的坐标集从第三步骤34开始对第二时间点重复该流程。也就是说,对于第二时间点不对控制点160a-h重复初始计算控制点100a-h的坐标的第二步骤32,而对于第二时间点重复计算平面三角形网格的角点102a-r的坐标的步骤,对于第二时间点重新计算平面三角形网格的角点102a-r的坐标,而不是通过采用前面为第一时间点计算出的角点作为初始近似值来获得。
虽然图3的流程图的大多数步骤可以由单个通用计算机连续地执行,但最好至少有一些步骤是由不同的设备以流水线方式执行的,例如,每次当绘制单元24仍然处理为前面的控制点100a-h计算出的平面三角形时,新控制点160a-h的计算在第一变换单元21开始。
在第七步骤39中计算控制点的新坐标所需的计算量会根据隐含定义表面的变化量而变化。在特定环境下,这会导致平面三角形的网格的角点坐标不能足够快地计算出来以便满足实时限制的可能性。在这种情况下,采用在第三步骤34中为角点的一部分先前计算出的坐标来代替重新计算所有角点将非常方便。从而获得了时间,满足了实时限制。在角点每次被重新计算时,如果被计算的话,这不会引入任何累积差错。被重新计算的角点数目可以修改为使得在第七步骤39加上第三步骤34中所需的计算量不超过实时计算所允许的最大值。
权利要求
1.一种计算机图形动画制作方法,包括下列步骤-提供时间相关的隐含表面模型;-计算表示隐含表面在时间上的第一点的近似值的点的第一网格;采用第一网格的点作为开始点来计算表示隐含表面在时间上的第二点的近似值的点的第二网格;其特征在于,所述方法包括下列步骤-采用第一和第二网格的点作为第一和第二非线性坐标赋值函数的控制点;-绘制分别由第一和第二非线性坐标赋值函数定义的表面。
2.如权利要求1所述的计算机图形动画制作方法,其中,绘制步骤包括分别从控制点的第一和第二网格计算平面三角形的第一和第二网格的角点,平面三角形的第一和第二网格近似分别由第一和第二坐标赋值函数定义的表面,表面由被绘制的平面三角形的所述网格定义。
3.如权利要求2所述的计算机图形动画制作方法,其中,将取景变换运用到控制点的第一和第二网格,其中角点是从变换出的控制点计算出的。
4.如权利要求1所述的计算机图形动画制作方法,其中,坐标赋值函数是在Bezier三角形上定义的二次Bezier函数。
5.如权利要求1所述的计算机图形动画制作方法,隐含表面模型通过一个坐标值的函数来定义,在所述表面上的所有点的坐标都产生相同的函数值,其中,第二网格的点通过在所述函数到第一网格的点的局部梯度的方向上增加一项来计算。
6.如权利要求2所述的计算机图形动画制作方法,其中,从控制点的第二网格计算平面三角形的第二网格的角点的一部分,从平面三角形的第一网格的角点复制平面三角形的第二网格的角点的剩余部分,调节所述部分的大小,以便将所述方法所需的计算量保持为低于在实时限制下允许的最大值。
7.一种计算机图形设备,包括-用于接收一个时间相关的隐含表面模型的参数的输入端;-计算单元,被安排为计算表示隐含表面在时间上的第一点的近似值的点的第一网格,计算单元被安排为采用第一网格的点作为开始点,来计算表示隐含表面在时间上的第二点的近似值的点的第二网格;其特征在于,所述设备包括一个变换单元,被安排为采用第一和第二网格点作为第一和第二非线性坐标赋值函数的控制点,其中,所述设备包括一个绘制单元,用于绘制分别由第一和第二非线性坐标赋值函数定义的表面。
8.如权利要求7所述的计算机图形设备,其中,绘制单元包括-又一个变换单元,被安排为分别从控制点的第一和第二网格计算平面三角形的第一和第二网格的角点,平面三角形的第一和第二网格近似分别由第一和第二坐标赋值函数定义的表面,-平面三角形绘制单元,用于绘制由平面三角形的所述网格定义的表面。
9.如权利要求8所述的计算机图形设备,所述设备被安排为将取景变换运用到控制点的第一和第二网格,角点从变换出的控制点计算出来。
10.如权利要求7所述的计算机图形设备,其中,坐标赋值函数是在Bezier三角形上定义的二次Bezier函数。
11.如权利要求7所述的计算机图形设备,隐含表面模型通过一个坐标值的函数来定义,在所述表面上的所有点的坐标都产生相同的函数值,其中,计算单元通过在所述函数到第一网格的点的局部梯度的方向上增加一项来计算第二网格的点。
12.如权利要求8所述的计算机图形设备,其中,计算单元从控制点的第二网格计算平面三角形的第二网格的角点的一部分,从平面三角形的第一网格的角点复制平面三角形的第二网格的角点的剩余部分,所述设备调节所述部分的大小,以便将所述方法所需的计算量保持为低于在实时限制下允许的最大值。
全文摘要
隐含表面由一个时间相关隐含表面模型定义。从隐含表面模型分别计算出第一和第二非线性坐标赋值函数的控制点的第一和第二网格。第一和第二非线性坐标赋值函数分别表示在时间上的第一点和第二点的隐含表面的近似值。第一网格的点用作为计算第二网格的点的近似值的开始值。例如,通过由平面三角形的相应网格进行近似来绘制分别由第一和第二非线性坐标赋值函数定义的表面。
文档编号G06T13/20GK1277699SQ99801456
公开日2000年12月20日 申请日期1999年6月17日 优先权日1998年7月1日
发明者J·布瑞恩斯, C·W·A·M·范奥弗维尔德 申请人:皇家菲利浦电子有限公司