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

文档序号:6567865阅读:395来源:国知局
专利名称:使用体积图形拉普拉斯算子的大型网格变形的制作方法
使用体积图形拉普拉斯算子的大型网格变形
背景技术
网格变形可以用在计算机建模和动画制作中的许多应用中。例如,网格变形可以用于协助艺术家雕刻风格化的体形和三维(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而无需对表面 内部进行网格划分,解决了大型网格变形的问题。相反,常规的微分方法仅考虑表 面算子。将这些算子从表面扩展到立体的原来的方法是在对象内部的四面体网格上 定义它们。然而,对复杂的对象进行立体网格划分是公知地困难的。现有的网格变 形技术一般对几何结构重新划分网格并打乱其连通性,由此违反了网格变形中的普 遍要求。立体网格划分也意味着许多约束(例如不能翻转四面体,以及每个内部顶 点留在其近邻的视觉外壳中)。这种约束使得传统的网格变形技术经济地分布内部 点并且增加"外壳"(如系统IOO所执行的)来防止局部自相交在计算上是不切实 际的。
现在描述变形体积图像118和执行从2-D曲线的变形(指定点120的相应部 分)的变形模块108的示例性操作。
体积图形的示例性变形
设M=(V,K)是用于变形的三角形网格116,其中V是一组n个点位置(即原 始网格116的点集),V:feeR3113^1), K是包含所有顶点连接信息的抽象单纯 复形。为了示例性说明起见,这种顶点连接信息被示为"其他数据"122的相应部 分。K中有三种类型的元素,即顶点{1},边(ij)和面(i,j,k)。
对抽象图形的拉普拉斯算子变形
假设G=(P,E)是图形,其中P是一组N个点位置,其中P二(p,ER3113^1), 且E二( (i,j) I pi连接至pj }是一组边。图形的拉普拉斯算子在多方面类似于拉普 拉斯算子。拉普拉斯算子计算图像G中每个点与其相邻点的线性组合之差
<formula>complex formula see original document page 8</formula>(1)
其中N(ih(Jiaj)EE)是边近邻,Wij是点Pj的权重,并且Sj是图形G中点Pi
的拉普拉斯坐标。Lc被称为图形G的拉普拉斯算子。权重Wu是正的,且满足<formula>complex formula see original document page 8</formula>。最简单的加权是均匀加权Wij=1/|N(i)|。(变形模块108实现更为
复杂的加权方案,如下在题为"体积图形的示例性变形" 一节中所述。
为了控制变形,这些是对于N个网格顶点的一个子集,作为控制曲线(即,指定点120) qi的输入变形位置,ie{l,...,m}。变形模块108使用这些指定的控制 曲线来为图形中每个点i计算新的(变形的)拉普拉斯坐标S、。接着通过解出以下 二次最小值问题来得出网格顶点p'i的变形位置(例如,见"其他数据"122):
<formula>complex formula see original document page 9</formula>(2)
方程式(2)的第一项表示局部细节的保留,而第二项约束了由用户直接指定的那些顶点120的位置。参数a平衡这两个目标。
变形的拉普拉斯坐标计算如下
δ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:内部和外部图形。内部图形Gm填充网格116的内部 体积,并防止较大的体积改变,而外部图形G。ut防止局部自相交。
图5示出了示例性体积图形118。具体地,体积图形502示出了示例性Gin, 而体积图形504示出了示例性G。utD
获得Gi。的一种方法是将表面网格116的内部体积四面体化。然而,四面体网 格生成一般是相当困难的,并且在计算上实现起来很昂贵,更不用说一般很难用健 壮的方式来实现这种网格生成(例如一般对复杂的模型会产生造型较差的四面体)。 变形模块108实现实际上较为简单的操作来产生限制性较小的体积图形,而非生成 表面网格116的内部体积。
图6示出了构造体积图形118的示例性步骤。具体地,在如图6所示的该实 现中,变形模块108如下生成体积图形118:
*通过将每个顶点在与其法向相反的方向上偏移一距离来为网格M构造内 壳Min。这在例如图6的图像(a)中示出。
*将Mm和M嵌入在体心立方(BCC)点阵中。移除外部的点阵节点。这些 示例性操作的结果在例如图6的图像(b)中示出。
*在M, Mm和点阵节点之间构建边连接。该操作的结果在例如图6的图像 (c)中示出。
*使用边坍縮(collapse)来简化图像,并使图像变得平滑。该操作的结果
在例如图6的图像(d)中示出。
在该实现中,内壳Min的目的是确保即使在点阵采样操作可能遗漏的细小特征 (例如猫的尾巴)中也能插入内部点。为了计算内壳,变形模块108使用基于简化 包络的操作。在每次迭代中,变形模块108试图将每个顶点在与其法向矢量相反的 方向上移动平均边长度的一小部分。在移动顶点之后,变形模块108测试其相邻的 三角形以确定是否彼此相交和与模型其余部分相交。如果没有发现相交,就接受这 些操作的结果。否则,就拒绝操作的结果并将顶点移回。当所有顶点都被移动了所期望的距离或者再也不能移动时就终止迭代。
图7示出了体积图形中的示例性边连接的类型。更具体地,图7的图像(a)示 出了示例性边界边。图7的图像(b)示出了示例性内部边。考虑到这些示例,可以 看出BCC点阵包括位于笛卡尔栅格的每个点和单元中心处的节点(例如图像(b))。 节点位置可以被视作属于两个交错的栅格。该点阵作为本质上带有所需刚性特性的 晶体结构出现。在该实现中,主要的间隔被设置成等于平均边长度。
三种类型的边连接形成了初始体积图形118。首先,变形模块108将M中的 每个顶点连接到Mm中其相应的顶点(例如图7的图像(a))。也包括每个柱面的较 短的对角线。第二,变形模块108将BCC点阵的每个内部节点与其他交错的栅格 中其八个最邻的近邻连接(例如图7的图像(b))。第三,变形模块108将Mh和 BCC点阵的节点连接。对于BCC点阵中与M,。交叉并在Mm中具有至少一个节点 的每条边,变形模块108将Min内部的BCC点阵节点连接到Min中最接近该交点 的节点。
变形模块108对初始图形实现简化和平滑操作,使得图形更加均匀。为此, 变形模块108按照长度递增的顺序来评估图形118的边。如果边长小于一阀值(M 的平均边长的一半),就将其坍縮到该边的中点处。简化之后,执行几次平滑迭代 (在此实现中为三次),其中每个点被移动到其近邻的平均值处。在该实现中,不 对M的顶点应用简化和平滑。
为了构造外部图形G。ut (体积图形118生成操作的一部分),变形模块108 利用上述的迭代法向偏移方法来构造该体积图形,但是朝向表面的外部而非内部来 形成M。ut。变形模块108以与在M和Min之间相同的方式来构建M和M。w之间的 连接。
注意,在该实现中,Gm和G。ut都是用户不能直接查看且在用户交互后丢弃的
中间数据结构(相应地以"其他数据"122表示)。这些数据结构仅用于约束网格 表面的变形。虽然可能发生Mm和M。ut互相之间以及与M之间的交叉,尤其是对 于包含高曲率的区域的网格,但这种交叉对交互式系统100中不会造成麻烦。
体积图形的示例性变形
为了在保留原始表面细节和约束体积之间保持平衡,变形模块108使用对方 程式(2)中的能量函数的修改得出以下一般形式<formula>complex formula see original document page 12</formula>
其中图像G中的前n个点属于网格M。 Lm是寓散的网格拉普拉斯算子。G' 是通过移除那些属于M的边后形成的G的子图形。对于原始网格M上的点,A (KSn)是变形的坐标框架中的网格拉普拉斯坐标。对于体积图形G'的中的点,5'i (ISSN)是变形的框架中的图形拉普拉斯坐标。由此,能量被分解成对应于表面 细节的保留、用户选定变形位置(指定点120)的实施和体积细节/硬度的保留的三 个项。
β在表面和体积细节之间平衡。变形模块108指定》,其中(3=11 g/N。因数 n/N将权重归一化,使得它对体积图形的点阵密度不敏感。使用该归一化,-=1 保留了体积并防止自交叉。在该实现中,0.1^x3,且a未归一化。这是由于约束长度依赖于受约束点的数目与网格点总数之比是合乎需要的。在该实现中,a的默 认值为0.2。
在另一实施例中,公式(3)的体积约束与二次平滑度能量相结合(如果重点是 要变形带有大量几何细节的模型就不这么做)。
局部变换的示例性传播
为了取得将静止框架中的拉普拉斯坐标&和s,变换到变形的框架中的新拉普 拉斯坐标δi和ε1,的局部变换T,,变形模块108实现WIRE变形操作。在这些操作 中,变形模块108选择一系列网格顶点来形成曲线120。这些选定的网格顶点接着 被变形成新的状态。该曲线控制变形并定义Qi (见图8的图像(a))。
图8示出了示例性的基于曲线的变形。更具体地,图8的图像(a)示出了示例 性原始网格116和示例性控制曲线802。图8的图像(b)示出了示例性浓度域0 (例 如域804 —较暗的阴影)和l (例如域806—较亮的阴影)。图8的图像(c)示出了 从图1的变形模块108的基于曲线的变形操作生成的示例性变形网格。
控制曲线(例如控制曲线802)仅指定曲线上要变形的顶点的范围。变形模块 108使用传播算法,首先确认相邻的图形点(控制点的l环网格近邻)要变形至何 处,接着在曲线点处推断局部变换,最后将该变换传播到整个网格上(例如导致变 形的网格112)。这些操作通过定位q,的网格近邻并使用WIRE获取它们的变形位 置开始。更具体地,设C(u)和C'(u)分别为原始的和变形的控制曲线,使用参数弧 长ue
来表示。给定相邻点p∈R3,设Up∈[O,l]是最小化p和曲线C(u)之间的距离的参数值。变形将p映射到p',使得C映射到C',并且附近的点相似地移动
<formula>complex formula see original document page 13</formula>
在该方程式中,R(u)是3X3旋转矩阵,它取C的切向矢量t(u)并通过旋转t(u)Xt'(u) 将其映射到C'上相应的切向矢量t'(u)。 s(u)是比例因子。它在每个曲线顶点处被计 算为C'中其相邻边的长度之和与C中该长度之和的比,接着通过线性内插在u上 连续地定义。
现在已确定了控制曲线上每个点和网格上其1环近邻的变形坐标。此时,变 形模块108的操作开始计算在控制曲线上每个点处的Tj。变形模块108通过将法向 和切向矢量计算为一个边矢量对于该法线的垂直投影来定义旋转。法线被计算为由 网格点i周围的表面法线的表面区域加权的线性组合。旋转被表示为四元组,这意 味着旋转角度应小于180度。Ti的縮放因子由s(Up)给出。
接着经由变形浓度域f(p)将变换从控制曲线传播所有的图形点p,所述变形浓 度域f(p)从变形点开始逐渐衰减(例如见图8的图像(b))。常数、线性和高斯浓度 域可以被选择,并且是基于从p到曲线的最短边路径(离散测地距离)。
在一个实现中,变形模块108通过将从控制曲线上最接近p的点qp的旋转和 缩放分配给p来实现简单的扩展传播。较为平滑的结果可以通过计算控制曲线上所 有顶点而非最近的顶点的加权平均值来获得。用距离的倒数1/1Ip-q,ll或通过高斯函 数来加权,诸如
<formula>complex formula see original document page 13</formula>
这样的高斯函数适用于系统100。 llp-qllg表示从p到q的离散测地距离。项o控制 高斯的宽度。多个曲线之间的加权是类似的,除了四元组和縮放是在多个曲线上累 积的。
在点p处最终的变换矩阵是
<formula>complex formula see original document page 13</formula>
其中f,。l是p的加权平均变化。这个公式只是将该变换与使用浓度域的单位矩阵混 合。拉普拉斯坐标由此逼近变形影响区域外其原始(静止)状态。
与常规的传播方案形成对比,由变形模块108实现的传播方案为每个图形顶 点计算变换并将变换应用于其拉普拉斯坐标。此外,某些传统技术通常为每个三角 形计算变换,并将其应用于三角形的顶点。然而,独立地变换每个三角形将它从网格中其近邻断开。泊松方程式将三角形缝合回一起,以保留每个三角形的定向并用 最小平方的方式来縮放。将此扩展到体积域需要四面体网格。
传统的网格变形技术通过定义未知的最小平方最优变换来引入额外的自由 度,使得点的局部近邻从静止状态变成了变形状态,而非在变形处计算变换并从变 形处开始传播该变换。所定义的变形一般被限制在旋转和縮放,以防止丢失局部细 节。对于保持二次性并由此容易解出的系统,使用小角度逼近来定义旋转。这种传 统技术对于大型变形提供了较差的逼近,这于是需要更为复杂的迭代细化。
示例性加权方案
对于网格拉普拉斯算子LM,变形模块108使用带有余切权重的加权方案 <formula>complex formula see original document page 14</formula>其中<formula>complex formula see original document page 14</formula>
对于图像拉普拉斯算子Lc,变形模块108通过解出二次编程问题来计算权重。 独立于每个图形顶点i,变形模块108解出以下问题以得出权重Wi」(为了清楚起见, 省略下标i):<formula>complex formula see original document page 14</formula>
参考上述方程式,第一能量项针对生成最小绝对值的拉普拉斯坐标的权重。第二项基于缩放相关的伞形算子(umbrella operator),它优选与边长成反比的权 重。参数X平衡这两个目标,而参数g防止小的权重。在该实现中,X和纟都被设 置为等于0.01。
图9示出了包含均匀(a)、边长的倒数(b)和热核(平方距离的指数衰减 函数)的各种加权方案的示例性比较。如这些示例性比较所示,图(d)中所示由系 统100的变形模块实现的加权方案比从其他加权方案所得的结果更加平滑和均匀。
示例性二次能量最小化
给定新的拉普拉斯坐标,变形模块108通过解出以下方程使得方程式(3)中的 二次能量最小化
<formula>complex formula see original document page 15</formula>这是稀疏线性系统Ax-b。矩阵A仅取决于变形前的图形,而b也取决于当前拉普 拉斯坐标和位置约束。因此,只要变形模块108不转变网格或图形和控制点,A就 是固定的,而b在交互变形期间不断改变。因此,变形模块108使用LU分解来预 先计算A—',并动态地执行倒代步骤以得到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的细节,但是采 用了用户的粗略比例修改。本质上,这是用于对网格进行变形的局部变换"传播" 的普通形式,但是对于曲线的情况,它可以对每个点独立地定义,并且无需被传播。
这种算法被称为曲线模拟给定一对源曲线G和C、和目标曲线C,生成新
的曲线c',使得c和c,之间的关系类似于c;和c、之间的关系。虽然传统的网格
变形操作可以直接变换顶点,但是变形模块108将顶点的相应微分坐标变换成在整
个曲线上更为均匀分布的误差。
一开始,Cb在曲线端点处具有两个结点。用户可以添加结点以在更详细的级
别上执行编辑。系统IOO支持两个编辑模式 一个操纵适用于原始曲线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-la到902-3b)在3-D网格上指定, 而控制曲线集904 (即904-la到904-3b)在2-D图像上指定。(为了示例性说明 起见,2-D和3-D控制曲线被示为图1的指定点120)。
假设G是3-D控制曲线902的投影,且卡通序列中其相应的曲线904是CJ E{l,...,k}。索引i用于不同的控制曲线,驱动诸如手臂和腿等模型的不同部分。 索引j是框架索引一相同的控制曲线对于每个框架具有相应的卡通曲线。变形模块 108自动地得出将Ci映射到连续的Cij的变形序列。对于这些变形操作,无需在每 个框架处都从头开始生成变形。在一个实现中,用户可以仅选择一些关键的框架, 并仅为选定的关键框架指定卡通控制曲线,而非指定整个框架序列的控制曲线。变 形模块108基于微分坐标来实现自动内插操作,以便在各框架之间进行内插。例如, 假设有带有相同连接性的两个网格M和M'。这两个网格表示两个关键框架处的经 变形的网格112。
变形模块108从为两个网格上的每个顶点计算拉普拉斯坐标开始。变形模块 108计算每个顶点p的局部邻域中的旋转和縮放,从M到M'中其位置取拉普拉斯 坐标(例如,见上述题为"体积图形的示例性变形" 一节)。用Tp表示变换。通 过随着时间将每个变换从单位矩阵内插到Tp,得到从M到M'的平滑变动的拉普 拉斯坐标。此时,变形模块108对方程(2)求解以提供从M到M'的网格序列。
2-D卡通曲线仅指定了经变形的曲线如何在单个平面中投影,而未指定其垂直 于平面的形状。鉴于此,如有需要,系统IOO允许用户选择其它投影平面以指定这 些额外的自由度。
图IO示出了常规大型网格变形技术相比使用系统100的体积图形拉普拉斯算 子的大型网格变形的示例性比较。更具体地,从左到右,顶行分别示出了原始网格 的图像、以及示出对该变形进行泊松网格编辑的结果的示例性图像、以及使用体积 图形拉普拉斯算子的大型网格变形的示例性结果的图像。第二行即底行分别示出了 与顶行中直接上方的图像相关联的经变形的区域的放大部分。即,列(a)中的图像 与原始网格116相关联,列(b)中的图像与已使用泊松网格编辑对原始网格进行变 形的结果相对应,而列(c)中的图像与已使用用系统100的体积图形拉普拉斯算子 的大型网格变形对原始网格进行变形的结果相对应。
示例性过程
图11示出了使用积图形拉普拉斯算子的大型网格变形的示例性过程1100。为 了讨论和示例说明起见,相对于图1的组件描述了该过程的操作。组件参考标号的 最左位表示了该组件首先出现在其中的特定附图。此外,虽然图ll以特定的顺序 呈现出过程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。在该实现中,用户指定原始网格U6是如何被如下变形的。 变形模块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立即访问和/或 当时正被操作的数据和/或程序模块。作为示例,而非限制,图l示出了操作系统 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的特定特征和操作是作为实现所作权利要求的主题的示例 性形式来公开的。
权利要求
1.一种计算机实现的方法,包括从用户处接收指示要如何变形原始网格的信息;以及基于所述信息和应用于从所述原始网格生成的体积图形的体积微分算子来对所述原始网格进行变形。
2. 如权利要求l所述的方法,其特征在于,所述信息是从相对于所述原始网 格指定的一条或多条相应的3-D控制曲线得出的一条或多条2-D控制曲线。
3. 如权利要求l所述的方法,其特征在于,所述信息是由用户指定来表示所 述原始网格的变形的一条或多条新的2-D控制曲线。
4. 如权利要求l所述的方法,其特征在于,对所述原始网格的变形独立于对 所述原始网格内部的表面进行的立体网格划分。
5. 如权利要求l所述的方法,其特征在于,所述体积微分算子是所述体积图 形的拉普拉斯算子。
6. 如权利要求1所述的方法,其特征在于,所述体积微分算子是所述体积图 形的拉普拉斯算子,所述体积图形的拉普拉斯算子将所述原始网格的体积细节编码 为体积图形中的多个点中的每个点与每个点的近邻的体积平均值之间的体积差值。
7. 如权利要求l所述的方法,其特征在于,所述体积微分算子是所述体积图 形的拉普拉斯算子,所述体积图形的拉普拉斯算子对体积细节进行编码,以施加在 对所述原始网格进行变形时防止体积的不自然改变的体积约束,所述体积细节包括 所述原始网格外部的点、以及所述原始网格内部的点的简单点阵结构。
8. 如权利要求l所述的方法,其特征在于,还包括 允许用户指定所述原始网格的表面上的一条或多条3-D控制曲线; 将对应于所述一条或多条3-D控制曲线中的至少一条的相应2-D控制曲线呈现给所述用户;允许所述用户修改所述2-D控制曲线来指定与所述2-D控制曲线相关联的一 组点响应于变形的移动。
9. 如权利要求1所述的方法,其特征在于,还包括通过以下步骤生成所述体 积图形创建内部和外部图形结构,所述内部图形结构是被构造成位于所述原始网格内的第一点阵,所述外部图形结构是被构造成位于所述原始网格外部的第二点阵; 构建所述内部图形结构和所述原始网格之间的连接;以及 将所述外部图形结构的细节与所述原始网格相连接。
10. 如权利要求1所述的方法,其特征在于,还包括通过以下步骤生成所述 体积图形创建内部和外部图形结构,所述内部图形结构是被构造成位于所述原始网格 内的第一点阵,所述外部图形结构是被构造成位于所述原始网格外部的第二点阵;使用基于所述内部图形结构的信息在与所述原始网格相关联的大型网格变形 操作期间防止大型体积改变;根据基于所述外部图形结构的信息在与所述原始网格相关联的大型网格变形 操作期间避免顶点的局部自交叉。
11. 如权利要求1所述的方法,其特征在于,对所述原始网格进行变形还包 括平衡对与所述原始网格相关联的原始表面细节的保留、用户选定的变形位置、 和由所述体积图形的拉普拉斯算子指定的体积细节的保留。
12. —种计算机实现的方法,包括将一用户界面呈现给用户,所述用户界面显示一3-D网格;允许用户指定有关所述3-D网格的3-D控制曲线;将所述3-D控制曲线投影到一平面上成为2-D控制曲线;允许用户编辑所述2-D控制曲线以创建经修改的控制曲线,该经修改的控制曲线指定所述3-D网格的目标变形;以及基于从所述3-D网格获得的体积图形拉普拉斯算子和所述经修改的控制曲线 对所述3-D网格进行变形。
13. 如权利要求12所述的方法,其特征在于,允许所述用户编辑所述2-D控 制曲线还包括向所述用户提供创建新曲线的机会,所述新曲线是所述经修改的控制 曲线。
14. 如权利要求12所述的方法,其特征在于,允许所述用户编辑所述2-D控 制曲线还包括在所述2-D控制曲线上呈现B-样条控制点,所述B-样条控制点可被 选择用于操纵所述2-D控制曲线的形状和大小。
15. 如权利要求12所述的方法,其特征在于,对所述3-D网格进行变形还包括基于所述3-D网格的顶点创建一体积图形,所述体积图形包括与所述3-D网格相关联的表面内部的顶点和所述表面外部的顶点的简单点阵;以及确定所述体积图形的拉普拉斯算子,用于将体积细节编码为所述体积图形中 的多个点中的每个点与所述点的近邻点的平均值之间的差值。
16. 如权利要求12所述的方法,其特征在于,对所述3-D网格进行变形还包 括使用来自在所述3-D网格内部形成的简单点阵的信息在所述原始网格的大型网 格变形期间防止大型的体积改变。
17. 如权利要求12所述的方法,其特征在于,对所述3-D网格进行变形还包 括使用来自所述3-D网格的表面外部生成的图形的信息在所述3-D网格的大型网 格变形期间防止体积的自交叉。
18. 如权利要求12所述的方法,其特征在于,对所述3-D网格进行变形还包 括平衡对与所述3-D网格相关联的原始表面细节的保留、用户选择的变形位置、 和对由所述体积图形拉普拉斯算子指定的体积细节的保留。
19. 如权利要求12所述的方法,其特征在于,还包括使用简化包络在与所述顶点的法向相反的方向上迭代地偏移所述原始网格的 多个顶点中的每个顶点,来创建所述3-D网格内部的简单点阵图形结构;通过朝对应于所述原始网格的表面的外部迭代地偏移所述原始网格的每个顶 点来生成外部图形,所述外部图形包括所述3-D网格外部的顶点;构建所述内部和外部图形与所述原始网格之间的连接以创建体积图形。
20. 如权利要求19所述的方法,其特征在于,还包括使用边坍縮和平滑操作 来简化所述体积图形。
全文摘要
描述了使用体积图形拉普拉斯算子的大型网格变形。一方面,从用户处接收信息,其中该信息指示要如何变形原始网格。接着基于该信息和体积微分算子对从该原始网格生成的体积图形的应用而对该原始网格进行变形。
文档编号G06T13/20GK101203861SQ200680022187
公开日2008年6月18日 申请日期2006年6月22日 优先权日2005年6月22日
发明者B·郭, H-Y·沈, J·M·辛德, K·周, X·刘 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1