首页> 中国专利> 使用体积图形拉普拉斯算子的大型网格变形

使用体积图形拉普拉斯算子的大型网格变形

摘要

描述了使用体积图形拉普拉斯算子的大型网格变形。一方面,从用户处接收信息,其中该信息指示要如何变形原始网格。接着基于该信息和体积微分算子对从该原始网格生成的体积图形的应用而对该原始网格进行变形。

著录项

  • 公开/公告号CN101203861A

    专利类型发明专利

  • 公开/公告日2008-06-18

    原文格式PDF

  • 申请/专利权人 微软公司;

    申请/专利号CN200680022187.9

  • 申请日2006-06-22

  • 分类号G06G5/00(20060101);G06T17/00(20060101);

  • 代理机构31100 上海专利商标事务所有限公司;

  • 代理人陈斌

  • 地址 美国华盛顿州

  • 入库时间 2023-12-17 20:23:48

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-06-23

    未缴年费专利权终止 IPC(主分类):G06G5/00 授权公告日:20101027 终止日期:20190622 申请日:20060622

    专利权的终止

  • 2015-05-27

    专利权的转移 IPC(主分类):G06G5/00 变更前: 变更后: 登记生效日:20150508 申请日:20060622

    专利申请权、专利权的转移

  • 2010-10-27

    授权

    授权

  • 2008-08-13

    实质审查的生效

    实质审查的生效

  • 2008-06-18

    公开

    公开

说明书

发明背景

网格变形可以用在计算机建模和动画制作中的许多应用中。例如,网格变形可以用于协助艺术家雕刻风格化的体形和三维(3-D)人物的变形。然而,诸如对进行非刚性的和非常夸张的运动的人物等发现的那些大型变形今天仍然是有挑战性的。现有的网格变形技术通常会产生具有不自然的体积变化的不真实的结果。

发明概述

提供本概述以便用简化的形式介绍一些概念,这些概念会在以下详细描述中进一步描述。本概述并非旨在标识所要求保护的主题的关键特征或必要特征,它也并非旨在用于协助确定所要求保护的主题的范围。

如上所述,描述了使用体积图形拉普拉斯算子的大型网格变形。一方面,从用户处接收信息,其中信息指示要如何变形原始网格。接着基于该信息和体积微分算子对从原始网格生成的体积图形的应用来对原始网格进行变形。

附图简述

在附图中,组件参考标号的最左位标识了该组件首先在其中出现的特定附图。

图1示出了用于使用体积图形拉普拉斯算子的大型网格变形的示例性系统。

图2示出了常规的大型网格变形和使用体积图形拉普拉斯算子的大型网格变形的示例性比较。

图3示出了示例性大型扭曲变形结果。

图4示出了示例性大型弯曲变形结果。

图5示出了示例性体积图形。

图6示出了构造体积图形的示例性操作。

图7示出了体积图形中的示例性边连接类型。

图8示出了示例性的基于曲线的变形。

图9示出了包含均匀、边长的倒数和热核(平方距离的指数衰减函数)加权方案的各种加权方案的示例性比较。

图10示出了常规大型网格变形技术相比使用体积图形拉普拉斯算子的大型网格变形的示例性比较。

图11示出了使用体积图形拉普拉斯算子的大型网格变形的示例性过程。

图12说明了其中可完全或部分实现使用体积图形拉普拉斯算子的大型网格变形的合适的计算环境的示例。

较佳实施例的详细描述

概述

使用体积图形拉普拉斯算子的大型网格变形提供了用于使用体积图形拉普拉斯算子来对3-D网格进行大型变形的新颖技术。首先构造表示输入网格内的体积的图形。该图形无需形成对输入网格的内部的立体网格划分(可以在无需对表面内部进行网格划分的情况下将体积拉普拉斯算子应用到体积图形)。图形边只需将体积中邻近的点连接起来。图形的拉普拉斯算子将体积细节编码为图形中每个点与其近邻的平均值之差。在变形期间保留这些体积细节施加了防止体积的非自然改变的体积约束。在网格外较短距离处的点也包括在图形中。这有助于避免局部自相交。体积细节保留由二次能量函数来表示。最小化二次能量函数以最小平方的方式保留了细节,从而将误差均匀地分布到整个变形的网格上。该二次能量函数也能与涉及表面位置、细节或平滑度的常规约束结合,并且通过对稀疏线性系统求解而被有效地最小化。

如以下参考图1到11详细描述的,使用体积图形拉普拉斯算子的大型网格变形在2-D基于曲线的变形系统中实现,这使得新手和经验丰富的用户以同样的方式用较少的努力就能创建基本令人满意的变形。这种新颖的大型网格变形技术无需3-D模型的骨架和关键姿势作为输入,并且可以处理各种各样的非刚性变形。在一个实现中,用于使用体积图形拉普拉斯算子的大型网格变形的这一系统被用于将2-D卡通人物的非刚性且夸张的变形应用于3-D网格。

示例性系统

虽然不是必需的,但使用体积图形拉普拉斯算子的大型网格变形在由诸如个人计算机等计算设备执行计算机程序指令的一般上下文中描述。程序模块一般包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、数据结构等。虽然在前述上下文中描述了各系统和方法,但是此后所描述的动作和操作也可以用硬件实现。

图1示出了使用体积图形拉普拉斯算子的大型网格变形的示例性系统100。在该实现中,系统100包括通用计算设备102。计算设备102表示诸如个人计算机、膝上型计算机、服务器、手持式或移动计算设备(例如蜂窝电话、个人数字助理)等任何类型的计算设备。

计算设备102包括程序模块104和程序数据106。程序模块104包括例如大型网格变形(使用体积图形拉普拉斯算子)模块108(下文通常称为“变形模块108”)以及诸如操作系统等其它程序模块110。变形模块108实现在由3-D网格116(原始网格)生成的体积图形拉普拉斯算子(VGL)114上生成大型网格变形112的新颖技术。变形模块108使用VGL将体积细节表示为3-D体积中每个点与图形中其相邻点的平均值之差。VGL允许变形模块108使用微分域技术来保留表面细节,并且由此通过最小平方最小化将误差全局地分布来产生视觉上令人愉悦的变形结果112。通过使用体积域而非网格116的表面来工作,变形模块108使用VGL有效地施加体积约束,并由此避免非自然的体积变化和局部自相交。

图2示出了常规的大型网格变形和使用体积图形拉普拉斯算子114的大型网格变形的示例性比较。更具体地,图像202示出了示例性原始网格116。图像204示出了使用常规的泊松(Poisson)编辑网格变形技术来变形原始网格116的示例性结果。图像206示出了使用体积图形拉普拉斯算子114对原始网格116进行大型网格变形的示例性结果。如图像204的示例所示,使用泊松网格编辑对原始网格116的变形造成了非自然的收缩,尤其是在模型的右腿处。

使用体积图形拉普拉斯算子114,变形模块108通过二次能量函数来表示体积约束。变形模块108正式地通过稀疏线性系统来最小化该函数,并且将该更函数与其他表面约束制(例如表面位置、表面细节、表面平滑度等)结合。为了将体积图形拉普拉斯算子114应用于三角形网格,变形模块108首先构造体积图像118,它包括原始网格116的点以及如下所述从位于网格116内部的简单点阵(图形内部)导出的点。图形的边将这些点连接起来。这些图形边是原始网格116的边的超集。图形无需形成对网格116内部的网格划分(体积小方格划分成四面体或其他有限元)。

用户通过标识原始网格116上的一组有限的点120(一个或多个控制曲线)来指定变形。指定的点120定义了一曲线并指示这些点120在所得变形中移至何处。为了示例性说明起见,本示例中的指定点120标识了一曲线。变形模块108生成带有最小值的二次能量函数,用于将指定的点120映射到它们指定的目的地,而同时维持表面细节和并大致上保留了体积。

这样,变形模块108通过将体积微分算子应用于体积图形118而无需对表面内部进行网格划分,解决了大型网格变形的问题。相反,常规的微分方法仅考虑表面算子。将这些算子从表面扩展到立体的原来的方法是在对象内部的四面体网格上定义它们。然而,对复杂的对象进行立体网格划分是公知地困难的。现有的网格变形技术一般对几何结构重新划分网格并打乱其连通性,由此违反了网格变形中的普遍要求。立体网格划分也意味着许多约束(例如不能翻转四面体,以及每个内部顶点留在其近邻的视觉外壳中)。这种约束使得传统的网格变形技术经济地分布内部点并且增加“外壳”(如系统100所执行的)来防止局部自相交在计算上是不切实际的。

现在描述变形体积图像118和执行从2-D曲线的变形(指定点120的相应部分)的变形模块108的示例性操作。

体积图形的示例性变形

设M=(V,K)是用于变形的三角形网格116,其中V是一组n个点位置(即原始网格116的点集),V={pi∈R3|1≤i≤n},K是包含所有顶点连接信息的抽象单纯复形。为了示例性说明起见,这种顶点连接信息被示为“其他数据”122的相应部分。K中有三种类型的元素,即顶点{i},边{i,j}和面{i,j,k}。

                   对抽象图形的拉普拉斯算子变形

假设G=(P,E)是图形,其中P是一组N个点位置,其中P={pi∈R3|1≤i≤n},且E={(i,j)|pi连接至pj}是一组边。图形的拉普拉斯算子在多方面类似于拉普拉斯算子。拉普拉斯算子计算图像G中每个点与其相邻点的线性组合之差:

>δi=LG(pi)=pi-ΣjN(i)wijpi,---(1)>

其中N(i)={j|{i,j}∈E}是边近邻,Wij是点Pj的权重,并且δi是图形G中点Pi的拉普拉斯坐标。LG被称为图形G的拉普拉斯算子。权重Wij是正的,且满足∑j∈N(i)wij=1。最简单的加权是均匀加权Wij=1/|N(i)|。(变形模块108实现更为复杂的加权方案,如下在题为“体积图形的示例性变形”一节中所述。

为了控制变形,这些是对于N个网格顶点的一个子集,作为控制曲线(即,指定点120)qi的输入变形位置,i∈{1,...,m}。变形模块108使用这些指定的控制曲线来为图形中每个点i计算新的(变形的)拉普拉斯坐标δ’i。接着通过解出以下二次最小值问题来得出网格顶点p’i的变形位置(例如,见“其他数据”122):

>minpi(Σi=1N||LG(pi)-δi||2+aΣi=1m||pi-qi||2).---(2)|>

方程式(2)的第一项表示局部细节的保留,而第二项约束了由用户直接指定的那些顶点120的位置。参数α平衡这两个目标。

变形的拉普拉斯坐标计算如下:

δ′i=Tiδi

其中δi是静止姿势中的拉普拉斯坐标,在方程式(1)中定义,Ti将拉普拉斯坐标转换到变形姿势中。在该实现中,包括各向异性缩放的一般转换Ti过于强大,并且会“磨合掉”局部细节。为了解决这个问题,变形模块108将Ti限制为旋转和各向同性缩放。

给定顶点qi的一个子集的变形位置,可以使用公知的方法来得出Ti。在该实现中,变形模块108使用以下在题为“体积图形的示例性变形”一节中描述的方法。该方法将局部变换从指定的变形区域传播到整个网格(导致大型网格变形112),将变形向离变形处单位距离处混合。

如果图形是三角形网格,那么图形拉普拉斯算子等同于网格拉普拉斯算子(在该示例中,网格或表面拉普拉斯算子是原始网格的拉普拉斯算子)。使用网格拉普拉斯算子来编码表面细节,对于各种各样的编辑运算保留了详细的几何结构。然而,对于大型变形,这种方法展示出了非自然的体积改变(例如,见图3的图像(a))和/或局部自相交(例如,见图4的图像(a))。

图3示出了示例性大型扭曲变形结果。具体地,图3的图像(a)示出了基于拉普拉斯表面的示例性大型扭曲变形。图3的图像(b)示出了基于泊松网格的示例性大型扭曲变形。图像(c)示出了基于变形模型108的VGL运算的示例性大型扭曲变形。

图4示出了示例性大型弯曲变形结果。具体地,图4的图像(a)示出了基于拉普拉斯表面的示例性大型弯曲变形。图4的图像(b)示出了基于泊松网格的示例性大型弯曲变形。图像(c)示出了基于变形模块108的VGL运算的示例性大型弯曲变形。

现在描述变形模块108如何通过为原始网格116构造体积图形118来施加体积约束,以减少非自然体积变化和/或局部自相交。

                       体积图形的示例性构造

变形模块108避免了较大的体积改变和局部自相交,但是没有确保全局自相交的消除。在该实现中,全局自相交由用户管理。变形模块198使用两种类型的中间图形来构建体积图形118:内部和外部图形。内部图形Gin填充网格116的内部体积,并防止较大的体积改变,而外部图形Gout防止局部自相交。

图5示出了示例性体积图形118。具体地,体积图形502示出了示例性Gin,而体积图形504示出了示例性Gout

获得Gin的一种方法是将表面网格116的内部体积四面体化。然而,四面体网格生成一般是相当困难的,并且在计算上实现起来很昂贵,更不用说一般很难用健壮的方式来实现这种网格生成(例如一般对复杂的模型会产生造型较差的四面体)。变形模块108实现实际上较为简单的操作来产生限制性较小的体积图形,而非生成表面网格116的内部体积。

图6示出了构造体积图形118的示例性步骤。具体地,在如图6所示的该实现中,变形模块108如下生成体积图形118:

●通过将每个顶点在与其法向相反的方向上偏移一距离来为网格M构造内壳Min。这在例如图6的图像(a)中示出。

●将Min和M嵌入在体心立方(BCC)点阵中。移除外部的点阵节点。这些示例性操作的结果在例如图6的图像(b)中示出。

●在M,Min和点阵节点之间构建边连接。该操作的结果在例如图6的图像(c)中示出。

●使用边坍缩(collapse)来简化图像,并使图像变得平滑。该操作的结果在例如图6的图像(d)中示出。

在该实现中,内壳Min的目的是确保即使在点阵采样操作可能遗漏的细小特征(例如猫的尾巴)中也能插入内部点。为了计算内壳,变形模块108使用基于简化包络的操作。在每次迭代中,变形模块108试图将每个顶点在与其法向矢量相反的方向上移动平均边长度的一小部分。在移动顶点之后,变形模块108测试其相邻的三角形以确定是否彼此相交和与模型其余部分相交。如果没有发现相交,就接受这些操作的结果。否则,就拒绝操作的结果并将顶点移回。当所有顶点都被移动了所期望的距离或者再也不能移动时就终止迭代。

图7示出了体积图形中的示例性边连接的类型。更具体地,图7的图像(a)示出了示例性边界边。图7的图像(b)示出了示例性内部边。考虑到这些示例,可以看出BCC点阵包括位于笛卡尔栅格的每个点和单元中心处的节点(例如图像(b))。节点位置可以被视作属于两个交错的栅格。该点阵作为本质上带有所需刚性特性的晶体结构出现。在该实现中,主要的间隔被设置成等于平均边长度。

三种类型的边连接形成了初始体积图形118。首先,变形模块108将M中的每个顶点连接到Min中其相应的顶点(例如图7的图像(a))。也包括每个柱面的较短的对角线。第二,变形模块108将BCC点阵的每个内部节点与其他交错的栅格中其八个最邻的近邻连接(例如图7的图像(b))。第三,变形模块108将Min和BCC点阵的节点连接。对于BCC点阵中与Min交叉并在Min中具有至少一个节点的每条边,变形模块108将Min内部的BCC点阵节点连接到Min中最接近该交点的节点。

变形模块108对初始图形实现简化和平滑操作,使得图形更加均匀。为此,变形模块108按照长度递增的顺序来评估图形118的边。如果边长小于一阀值(M的平均边长的一半),就将其坍缩到该边的中点处。简化之后,执行几次平滑迭代(在此实现中为三次),其中每个点被移动到其近邻的平均值处。在该实现中,不对M的顶点应用简化和平滑。

为了构造外部图形Gout(体积图形118生成操作的一部分),变形模块108利用上述的迭代法向偏移方法来构造该体积图形,但是朝向表面的外部而非内部来形成Mout。变形模块108以与在M和Min之间相同的方式来构建M和Mout之间的连接。

注意,在该实现中,Gin和Gout都是用户不能直接查看且在用户交互后丢弃的中间数据结构(相应地以“其他数据”122表示)。这些数据结构仅用于约束网格表面的变形。虽然可能发生Min和Mout互相之间以及与M之间的交叉,尤其是对于包含高曲率的区域的网格,但这种交叉对交互式系统100中不会造成麻烦。

体积图形的示例性变形

为了在保留原始表面细节和约束体积之间保持平衡,变形模块108使用对方程式(2)中的能量函数的修改得出以下一般形式:

其中图像G中的前n个点属于网格M。LM是离散的网格拉普拉斯算子。G’是通过移除那些属于M的边后形成的G的子图形。对于原始网格M上的点,ε’i(1≤i≤n)是变形的坐标框架中的网格拉普拉斯坐标。对于体积图形G′的中的点,δ’i(1≤i≤N)是变形的框架中的图形拉普拉斯坐标。由此,能量被分解成对应于表面细节的保留、用户选定变形位置(指定点120)的实施和体积细节/硬度的保留的三个项。

β在表面和体积细节之间平衡。变形模块108指定其中β=n因数n/N将权重归一化,使得它对体积图形的点阵密度不敏感。使用该归一化,>β=1>保留了体积并防止自交叉。在该实现中,0.1≤α≤1,且α未归一化。这是由于约束长度依赖于受约束点的数目与网格点总数之比是合乎需要的。在该实现中,α的默认值为0.2。

在另一实施例中,公式(3)的体积约束与二次平滑度能量相结合(如果重点是要变形带有大量几何细节的模型就不这么做)。

                          局部变换的示例性传播

为了取得将静止框架中的拉普拉斯坐标δi和εi变换到变形的框架中的新拉普拉斯坐标δ’i和ε’i的局部变换Ti,变形模块108实现WIRE变形操作。在这些操作中,变形模块108选择一系列网格顶点来形成曲线120。这些选定的网格顶点接着被变形成新的状态。该曲线控制变形并定义Qi(见图8的图像(a))。

图8示出了示例性的基于曲线的变形。更具体地,图8的图像(a)示出了示例性原始网格116和示例性控制曲线802。图8的图像(b)示出了示例性浓度域0(例如域804-较暗的阴影)和1(例如域806-较亮的阴影)。图8的图像(c)示出了从图l的变形模块108的基于曲线的变形操作生成的示例性变形网格。

控制曲线(例如控制曲线802)仅指定曲线上要变形的顶点的范围。变形模块108使用传播算法,首先确认相邻的图形点(控制点的1环网格近邻)要变形至何处,接着在曲线点处推断局部变换,最后将该变换传播到整个网格上(例如导致变形的网格112)。这些操作通过定位qi的网格近邻并使用WIRE获取它们的变形位置开始。更具体地,设C(u)和C′(u)分别为原始的和变形的控制曲线,使用参数弧长u∈[0,1]来表示。给定相邻点p∈R3,设up∈[0,1]是最小化p和曲线C(u)之间的距离的参数值。变形将p映射到p’,使得C映射到C’,并且附近的点相似地移动:

p′=C′(up)+R(up)(s(up)(p-C(up)))。

在该方程式中,R(u)是3×3旋转矩阵,它取C的切向矢量t(u)并通过旋转t(u)×t′(u)将其映射到C′上相应的切向矢量t′(u)。s(u)是比例因子。它在每个曲线顶点处被计算为C’中其相邻边的长度之和与C中该长度之和的比,接着通过线性内插在u上连续地定义。

现在已确定了控制曲线上每个点和网格上其1环近邻的变形坐标。此时,变形模块108的操作开始计算在控制曲线上每个点处的Ti。变形模块108通过将法向和切向矢量计算为一个边矢量对于该法线的垂直投影来定义旋转。法线被计算为由网格点i周围的表面法线的表面区域加权的线性组合。旋转被表示为四元组,这意味着旋转角度应小于180度。Ti的缩放因子由s(up)给出。

接着经由变形浓度域f(p)将变换从控制曲线传播所有的图形点p,所述变形浓度域f(p)从变形点开始逐渐衰减(例如见图8的图像(b))。常数、线性和高斯浓度域可以被选择,并且是基于从p到曲线的最短边路径(离散测地距离)。

在一个实现中,变形模块108通过将从控制曲线上最接近p的点qp的旋转和缩放分配给p来实现简单的扩展传播。较为平滑的结果可以通过计算控制曲线上所有顶点而非最近的顶点的加权平均值来获得。用距离的倒数1/‖p-qi‖或通过高斯函数来加权,诸如:

>exp((||p-qi||g-||p-qp||s)22σ2)>

这样的高斯函数适用于系统100。‖p-q‖g表示从p到q的离散测地距离。项σ控制高斯的宽度。多个曲线之间的加权是类似的,除了四元组和缩放是在多个曲线上累积的。

在点p处最终的变换矩阵是:

其中是p的加权平均变化。这个公式只是将该变换与使用浓度域的单位矩阵混合。拉普拉斯坐标由此逼近变形影响区域外其原始(静止)状态。

与常规的传播方案形成对比,由变形模块108实现的传播方案为每个图形顶点计算变换并将变换应用于其拉普拉斯坐标。此外,某些传统技术通常为每个三角形计算变换,并将其应用于三角形的顶点。然而,独立地变换每个三角形将它从网格中其近邻断开。泊松方程式将三角形缝合回一起,以保留每个三角形的定向并用最小平方的方式来缩放。将此扩展到体积域需要四面体网格。

传统的网格变形技术通过定义未知的最小平方最优变换来引入额外的自由度,使得点的局部近邻从静止状态变成了变形状态,而非在变形处计算变换并从变形处开始传播该变换。所定义的变形一般被限制在旋转和缩放,以防止丢失局部细节。对于保持二次性并由此容易解出的系统,使用小角度逼近来定义旋转。这种传统技术对于大型变形提供了较差的逼近,这于是需要更为复杂的迭代细化。

                        示例性加权方案

对于网格拉普拉斯算子LM,变形模块108使用带有余切权重的加权方案:

wij∝(cotαij+cotβij),

其中αij=∠(pi,pj-1,pj)|且βij=∠(pi,pj+1,pj)。

对于图像拉普拉斯算子LG,变形模块108通过解出二次编程问题来计算权重。独立于每个图形顶点i,变形模块108解出以下问题以得出权重wij(为了清楚起见,省略下标i):

>minwj(||pi-ΣjN(i)wjpj||2+λ(ΣjN(i)wj(pi-pj])2)>

服从>ΣjN(i)wi=1|>且wj>ξ|。

参考上述方程式,第一能量项针对生成最小绝对值的拉普拉斯坐标的权重。第二项基于缩放相关的伞形算子(umbrella operator),它优选与边长成反比的权重。参数λ平衡这两个目标,而参数ξ防止小的权重。在该实现中,λ和ξ都被设置为等于0.01。

图9示出了包含均匀(a)、边长的倒数(b)和热核(平方距离的指数衰减函数)的各种加权方案的示例性比较。如这些示例性比较所示,图(d)中所示由系统100的变形模块实现的加权方案比从其他加权方案所得的结果更加平滑和均匀。

                     示例性二次能量最小化

给定新的拉普拉斯坐标,变形模块108通过解出以下方程使得方程式(3)中的二次能量最小化:

LM(p′i)+βLG′(p′i)=ε′i+βδ′i,i∈1,...,n,

βLG′(p′i)=βδ′i,i∈n+1,...,N,

αp′i=αq′i,i∈1,...,m

这是稀疏线性系统Ax=b。矩阵A仅取决于变形前的图形,而b也取决于当前拉普拉斯坐标和位置约束。因此,只要变形模块108不转变网格或图形和控制点,A就是固定的,而b在交互变形期间不断改变。因此,变形模块108使用LU分解来预先计算A-1,并动态地执行倒代步骤以得到A-1b。

                          示例性多分辨率操作

多分辨率编辑可用于加速微分方法,尤其对于很大的模型。例如,图2的Standford犰狳模型(armadillo model)包含170K个顶点。当为该模型创建体积图形时,变形模块108生成几乎是线性系统中的顶点的六倍的变量要解出。求解这种大型系统对于交互系统而言在计算上是昂贵的。在降低计算费用的一个实现中,变形模块108生成带有较少顶点的简化网格(例如对于犰狳为15K)。接着从简化的网格生成体积图形118。在对网格的简化表示进行变形之后,变形模块108将细节加回,以得出经变形的高分辨率网格。

                         从2-D曲线的示例性变形

系统100的交互的基本模式如下。用户首先通过选择由最短边(Dijkstra)路径连接的一系列网格顶点来指定网格表面116上的控制曲线120。该3-D曲线被投影到一个或多个平面上(投影平面)以得到可被编辑的2-D曲线。在编辑后,经修改的2-D曲线被投影回3-D以得到经变形的控制曲线,它形成了前一节的变形的基础。

                             示例性曲线投影

给定原始控制曲线,变形模块108基于原始控制曲线的平均法向和主向量来自动地选择投影平面。变形模块108将主要向量计算为对应于来自对曲线的顶点的主分量分析(PCA)的最大特征值的两个特征向量。在多数情况下,平均法向和第一主向量的叉积提供了满意的平面。当平均法向矢量的长度较小时,如对于闭合的平坦曲线,改为利用两个主向量。在该实现中,用户也可直接选择投影或修改系统100选择的投影。

                           示例性曲线编辑

投影的2-D曲线继承了原始网格116的几何细节,这使得编辑复杂化。多分辨率曲线编辑提供了对B-样条曲线的一种解。变形模块108基于拉普拉斯坐标对离散曲线实现编辑操作。曲线顶点的拉普拉斯坐标是其位置和其两个相邻近邻、或者对终端顶点的单个近邻的平均位置之差。

要编辑的离散2-D曲线被表示为C。立方B样条曲线Cb首先被计算为适合C的最小平方,表示C的低频率。接着通过使用比例弧长映射将C的每个顶点映射到Cb上来计算Cb的离散形式,示为Cd。现在可以方便地编辑简单的B-样条曲线Cb。编辑之后,变形模块108得到经修改的B-样条曲线C’b和新的离散形式C’d。这些曲线指出用户期望的变形,但缺少原始曲线的细节。为了恢复原始曲线细节,变形模块108在C的每个顶点处标识将其位置从Cd映射到C’d的唯一旋转和缩放。将该变换应用于C上的拉普拉斯坐标,并在简单曲线图形上对等式(2)(没有第二点约束项)求解,导致新的曲线C’的生成。该新的曲线保留了C的细节,但是采用了用户的粗略比例修改。本质上,这是用于对网格进行变形的局部变换“传播”的普通形式,但是对于曲线的情况,它可以对每个点独立地定义,并且无需被传播。

这种算法被称为曲线模拟:给定一对源曲线Cs和C’s和目标曲线C,生成新的曲线C’,使得C和C’之间的关系类似于Cs和C’s之间的关系。虽然传统的网格变形操作可以直接变换顶点,但是变形模块108将顶点的相应微分坐标变换成在整个曲线上更为均匀分布的误差。

一开始,Cb在曲线端点处具有两个结点。用户可以添加结点以在更详细的级别上执行编辑。系统100支持两个编辑模式:一个操纵适用于原始曲线Cb的粗略缩放,而另一个勾画整个新的曲线。在后一情况下,勾画的曲线和控制曲线之间的对应关系通过默认的弧长来得到。在该实现中,用户也可以指定两个曲线之间一系列相应的点。

             从2-D卡通进行的示例性变形目标调整

在一个实现中,系统100对2-D卡通到3-D网格112的变形进行目标调整,这是系统100的2-D基于勾画的变形的直接示例性应用。为此,用户指定网格116上一个或多个3-D控制曲线120以及它们的投影平面,且对于每条曲线,卡通图像序列中有一系列2-D曲线120将被用于驱动网格116的变形。

图9示出了用于从2-D图像进行的变形目标调整的示例性3-D和2-D控制曲线规范。更具体地,控制曲线集902(即902-1a到902-3b)在3-D网格上指定,而控制曲线集904(即904-1a到904-3b)在2-D图像上指定。(为了示例性说明起见,2-D和3-D控制曲线被示为图1的指定点120)。

假设Ci是3-D控制曲线902的投影,且卡通序列中其相应的曲线904是Ci,j,j∈{1,...,k}。索引i用于不同的控制曲线,驱动诸如手臂和腿等模型的不同部分。索引j是框架索引一相同的控制曲线对于每个框架具有相应的卡通曲线。变形模块108自动地得出将Ci映射到连续的Ci,j的变形序列。对于这些变形操作,无需在每个框架处都从头开始生成变形。在一个实现中,用户可以仅选择一些关键的框架,并仅为选定的关键框架指定卡通控制曲线,而非指定整个框架序列的控制曲线。变形模块108基于微分坐标来实现自动内插操作,以便在各框架之间进行内插。例如,假设有带有相同连接性的两个网格M和M’。这两个网格表示两个关键框架处的经变形的网格112。

变形模块108从为两个网格上的每个顶点计算拉普拉斯坐标开始。变形模块108计算每个顶点p的局部邻域中的旋转和缩放,从M到M’中其位置取拉普拉斯坐标(例如,见上述题为“体积图形的示例性变形”一节)。用Tp表示变换。通过随着时间将每个变换从单位矩阵内插到Tp,得到从M到M’的平滑变动的拉普拉斯坐标。此时,变形模块108对方程(2)求解以提供从M到M’的网格序列。

2-D卡通曲线仅指定了经变形的曲线如何在单个平面中投影,而未指定其垂直于平面的形状。鉴于此,如有需要,系统100允许用户选择其它投影平面以指定这些额外的自由度。

图10示出了常规大型网格变形技术相比使用系统100的体积图形拉普拉斯算子的大型网格变形的示例性比较。更具体地,从左到右,顶行分别示出了原始网格的图像、以及示出对该变形进行泊松网格编辑的结果的示例性图像、以及使用体积图形拉普拉斯算子的大型网格变形的示例性结果的图像。第二行即底行分别示出了与顶行中直接上方的图像相关联的经变形的区域的放大部分。即,列(a)中的图像与原始网格116相关联,列(b)中的图像与已使用泊松网格编辑对原始网格进行变形的结果相对应,而列(c)中的图像与已使用用系统100的体积图形拉普拉斯算子的大型网格变形对原始网格进行变形的结果相对应。

示例性过程

图11示出了使用积图形拉普拉斯算子的大型网格变形的示例性过程1100。为了讨论和示例说明起见,相对于图1的组件描述了该过程的操作。组件参考标号的最左位表示了该组件首先出现在其中的特定附图。此外,虽然图11以特定的顺序呈现出过程1100的操作,但是与该过程的任何特定框相关联的操作可以用不同的顺序来实现。例如,框1104的操作可以在框1102的操作之前实现等。

在框1102处,变形模块108从原始网格116构造体积图形118。在一个实现中,变形模块108使用中间的内部和外部图形数据结构来构造体积图形。内部图形包括原始网格点以及所得的点,并且由变形模块108用于在大型网格变形操作期间防止较大的体积改变。在一个实现中,变形模块108使用简化包络来构造内部图形,用于在与其法向相反的方向上偏移原始网格的每个顶点。在一个实现中,变形模块108通过迭代地向原始网格表面的外部偏移原始网格的每个顶点来构造外部图形,用于防止局部自交叉。变形模块108构建内部和外部图形与以变形为目标的原始网格116之间的连接来生成体积图形。

在框1104处,变形模块108允许用户指定一组3-D控制曲线120。每个3-D控制曲线标识原始网格上的一组点。在一个实现中,变形模块108在显示设备上呈现用户界面(UI)。原始网格的3-D视图通过UI呈现给用户。使用鼠标或某些其他类型的指点/选择设备,用户选择原始网格116上定义3-D控制曲线120的一组点。

在框1106处,变形模块108允许用户将3-D控制曲线120编辑为相应的2-D控制曲线120,用于生成经变形的控制曲线124。经变形的控制曲线124指示要如何变形原始网格116。在该实现中,用户指定原始网格116是如何被如下变形的。变形模块108将指定的3-D控制曲线120投影到UI内的投影平面上,作为2-D控制曲线120。用户通过使用所提供的UI操纵经投影的2-D控制曲线120来变形原始网格116。这指示了作为经定义的变形的结果,3-D控制曲线120中指定的点要被移至何处。例如,在一个实现中,用户使用诸如鼠标、图形笔等指点设备和/或其他设备来选择2-D控制曲线,由此操纵经投影的2-D控制曲线,并修改2-D控制曲线120。例如,用户可以绘制表示目标曲线的新曲线(即变形),使用通过UI在2-D曲线上呈现的B-样条控制点直接编辑2-D曲线,等等。

在框1108处,变形模块108创建体积图形118的拉普拉斯算子(即体积图形拉普拉斯算子114)以将体积细节编码成图形中每个点和其近邻的平均值之差。这些体积细节在变形操作期间使用,以施加防止体积的非自然改变的体积约束。这些体积细节也包括离开原始网格116外部较短距离的点,它们在变形操作期间使用以充分地防止体积的局部自交叉。

在框1110处,变形模块108基于经变形的控制曲线124对原始网格116进行变形。这样,系统100提供了允许用户创建大型网格变形的基于曲线的变形系统。

示例性操作环境

图12说明了其中可完全或部分实现使用体积图形拉普拉斯算子的大型网格变形的合适的计算环境的示例。示例性计算环境1200仅是用于图1的示例性系统100和图11的示例性操作的合适的计算环境的一个示例,并非旨在对此处所描述的系统和方法的使用范围或功能提出任何限制。计算环境1200也不应被解释为对操作环境1200中所示的任一组件或其组合有任何依赖性或任何需求。

此处所描述的方法和系统可以用许多其他通用和专用计算系统、环境或配置来运作。可能适于使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机、服务器计算机、多处理器系统、基于多处理器的系统、网络PC、微型计算机、大型计算机、包括上述任何上述系统或设备的分布式计算环境等。也可以在具有有限资源的客户机,诸如手持式计算机或其他计算设备上实现该框架的压缩或子集版本。虽然不是必须的,但本发明可以在分布式计算环境中实现,其中由通过通信网络链接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以同时位于本地和远程存储器存储设备中。

参照图12,提供使用体积图形拉普拉斯算子的大型网格变形的示例性系统包括计算机1210形式的通用计算装置,其用于实现例如图1的系统100。计算机1210的组件可包括,但不限于,处理单元1220、系统存储器1230以及将包括系统存储器在内的各种系统组件耦合到处理单元1220的系统总线1221。系统总线1221可能是若干总线结构类型中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用多种总线体系结构的任一种的局部总线。作为示例,而非限制,这些体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和也称为Mezzanine总线的外围部件互连(PCI)总线。

计算机1210通常包括各种计算机可读介质。计算机可读介质可以是能被计算机1210访问的任何可用介质,并包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的、用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性介质、可移动和不可移动介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储器、磁盒、磁带、磁盘存储器或其它磁性存储设备、或任何其它可用于存储所需信息并可由计算机1210访问的介质。

通信介质通常在诸如载波或其它传输机制的已调制数据信号中体现为计算机可读指令、数据结构、程序模块、或其它数据,且包括任何信息输送介质。术语“已调制数据信号”意指以在信号中编码信息的方式设置或改变其一个或多个特征的信号。作为示例,而非限制,通信介质包括诸如有线网络或直线连接等有线介质,和诸如声学、射频(RF)、红外线和其它无线介质等无线介质。以上任何介质的组合也应包括在计算机可读介质的范围中。

系统存储器1230包括诸如只读存储器(ROM)1231和随机存取存储器(RAM)1232等易失性和/或非易失性存储器形式的计算机存储介质。包含有助于如起动时在计算机1210内元件间传送信息的基本例程的基本输入/输出系统(BIOS)1233通常存储在ROM 1231中。RAM 1232通常包含可被处理单元1220立即访问和/或当时正被操作的数据和/或程序模块。作为示例,而非限制,图1示出了操作系统1234、应用程序1235、其它程序模块1236、和程序数据1237。

计算机1210还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图12示出了读取和写入不可移动、非易失性磁性介质的硬盘驱动器1241,读取和写入可移动、非易失性磁盘1252的磁盘驱动器1251,读取和写入可移动、非易失性光盘1256,诸如CD-ROM或其它光学介质的光盘驱动器1255。可在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,如磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器1241通常通过诸如接口1240等不可移动存储器接口与系统总线1221连接,而磁盘驱动器1251和光盘驱动器1255通常通过诸如接口1250等可移动存储器接口与系统总线1221连接。

如上所述并如图12所示的驱动器及其相关联的计算机存储介质为计算机1210提供计算机可读指令、数据结构、程序模块、和其它数据的存储。在图12中,例如,硬盘驱动器1241被示为存储操作系统1244、应用程序1245、其它程序模块1246、和程序数据1247。注意这些组件可以与操作系统1234、应用程序1235、其它程序模块1236、和程序数据1237相同或不同。在此给予操作系统1244、应用程序1245、其它程序模块1246、和程序数据1247的不同标号至少说明它们是不同的副本。

用户可通过诸如键盘1262、以及通常称为鼠标、跟踪球或触摸板等的指点设备1261的输入装置向计算机110输入命令和信息。其它输入装置(未示出)可包括话筒、游戏杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备常常通过与系统总线1221耦合的用户输入接口1260与处理单元1220相连,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)等其它接口和总线结构连接。

监视器1291或其它类型的显示设备也可通过诸如视频接口1290等接口与系统总线1221相连。除监视器1291以外,计算机还可包括诸如扬声器1297和打印机1296等其它外围输出设备,它们通过输出外围接口1295相连。

计算机1210可以使用与一台或多台远程计算机,诸如远程计算机1280的逻辑连接在网络化环境中运行。远程计算机1280可以是个人计算机、服务器、路由器、网络PC、对等装置或其它常见的网络节点,而且通常包括上述与个人计算机1210相关的许多或全部组件,尽管在图12中仅图示了存储器存储设备1281。图12中所描绘的逻辑连接包括局域网(LAN)1271和广域网(WAN)1273,但也可包括其它网络。这样的网络化环境在办公室、企业范围计算机网络、内联网和因特网上是常见的。

当用于LAN网络化环境中时,计算机1210通过网络接口或适配器1270与LAN 1271连接。当用于WAN网络化环境中时,计算机1210通常包括调制解调器1272或其它用于在诸如因特网等广域网1273上建立通信的装置。可以是内置式或外置式的调制解调器1272与系统总线1221通过用户输入接口1260或其它适当机制连接。在网络化环境中,与计算机1210相关的程序模块或其一部分可存储在远程存储器存储装置中。作为示例,而非限制,图12示出了驻留于存储器装置1281中的远程应用程序1285。应当理解,所示网络连接是示例性的,且也可以使用其它用于在计算机间建立通信链路的手段。

结论

虽然常规的微分域网格变形技在变形网格时保留了表面细节,但是当变形是大型的时,这种现有技术一般会产生不满意的收缩和交叉失真。图1的系统100通过保留由体积图形拉普拉斯算子表示的体积细节解决了这些问题。该解决方案避免了对复杂对象进行立体网格变形的复杂性。虽然使用特定于结构特征和/或方法操作或动作的语言描述了使用体积图形拉普拉斯算子进行大型网格变形的系统和方法,但是应该理解在所附权利要求书中所定义的实现不必受限于所述的特定特征和动作。相反,系统100的特定特征和操作是作为实现所作权利要求的主题的示例性形式来公开的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号