细化用于将二维图像应用于三维模型的局部参数化的制作方法

文档序号:18548122发布日期:2019-08-27 21:53阅读:181来源:国知局
细化用于将二维图像应用于三维模型的局部参数化的制作方法

本公开总体上涉及用于计算机图形处理的计算机实现的方法和系统。具体地,本公开涉及改进将二维图像应用于三维模型的局部参数化的质量。



背景技术:

某些图形操纵应用允许将诸如贴花等二维(“2d”)图像应用于三维(“3d”)模型。将2d图像应用于3d模型可以向3d模型添加期望的样式、纹理或其他美学质量。例如,如图1所示,图像应用过程106用于将2d图像104(例如,具有标题“苏打味的汽水!”的贴花)应用于描绘苏打罐的3d模型102。图像应用过程106将来自2d图像104的像素叠加在3d模型102的圆柱形侧面之上,从而产生风格化的3d模型108。

不同的现有技术促进了这些类型的图像应用过程。例如,参数化技术在2d图像的像素和沿着定义3d模型的网格的点之间创建映射。这些方法允许将来自给定像素的图像内容应用于沿着网格的相应的点。

但是现有的参数化方法存在若干限制。一个限制是质量。一些现有的参数化技术假定在2d图像与要应用2d图像的目标网格区域之间存在等距映射(即,无失真映射)。但是如果在不失真网格的特征的情况下不能展平目标网格区域,则不存在这样的等距映射,并且所应用的2d图像包括失真。现有技术的限制的另一示例是缺乏可扩展性。例如,现有的参数化技术不能容易地被定制到特定的插入任务,诸如将2d图像的边界与3d网格表面上的线或点对准。此外,现有参数化技术的计算时间对于较大的网格可能花费很长时间,使得难以创建交互式贴花放置体验。

因此,现有解决方案可能由于诸如(但不限于)上述原因而存在缺点。



技术实现要素:

某些实施例涉及细化将二维(“2d”)图像应用于三维(“3d”)模型的局部参数化。例如,基于目标网格区域的一个或多个特征来选择特定参数化初始化过程。从该参数化初始化过程生成2d图像的初始局部参数化。计算初始局部参数化的质量度量,并且修改局部参数化以改进质量度量。通过根据经修改的局部参数化将来自2d图像的图像点应用于目标网格区域来修改3d模型。

提及这些说明性实施例不是为了限制或限定本公开,而是提供示例以帮助理解本公开。在具体实施方式中讨论了另外的实施例,并且在那里提供了另外的描述。

附图说明

当参考附图阅读下面的具体实施方式时,将更好地理解本公开的特征、实施例和优点。

图1描绘了将二维(“2d”)图像应用于三维(“3d”)模型的示例;

图2描绘了根据本公开的某些实施例的用于改进将2d图像应用于3d模型的局部参数化的质量的计算环境的示例;

图3描绘了根据本公开的某些实施例的用于迭代地计算用于将2d图像应用于3d模型的局部参数化的过程的示例;以及

图4描绘了根据本公开的某些实施例的图2的计算系统的实现的示例。

具体实施方式

本公开包括用于细化用于将二维(“2d”)图像应用于三维(“3d”)模型的局部参数化的系统和方法。如上所述,现有的参数化技术可以增加应用于参数化操作的计算资源,而没有实现参数化的期望精度或灵活性。本文中描述的某些实施例可以通过从各种参数化技术(例如,指数映射、平面和圆柱投影等)中进行选择来解决这些限制,其中每种参数化技术基于特定网格区域的一个或多个特征生成不同类型的初始参数化。根据一个或多个质量度量迭代地细化为特定区域生成的局部参数化,其中迭代可以由某些时间预算或其他计算限制明确限制。使用一组可用的参数化技术结合该迭代细化可以以计算上有效的方式创建更适合于特定网格区域的局部参数化。

提供以下非限制性示例以介绍某些实施例。在这个示例中,图形操纵应用访问一组可用的参数化初始化过程。参数化初始化过程是用于生成2d图像的点和沿着3d表面的点之间的映射的局部参数化技术。局部参数化技术的示例包括指数映射参数化、谐波映射参数化、平面和圆柱投影等。图形操纵应用选择特定参数化初始化过程以生成目标图像和网格区域的初始局部参数化。图形操纵应用基于特定于网格区域的一个或多个选择标准进行该选择。在一个示例中,使用目标网格区域的特征来选择参数化初始化过程,因为某些参数化技术为弯曲表面提供更好的结果,并且其他参数化技术为角形表面提供更好的结果。在另一示例中,关于目标网格区域为每个可用参数化初始化过程计算初始质量度量,并且图形操纵应用选择导致最佳初始质量度量的参数化初始化过程。

继续这个示例,图形操纵应用迭代地修改最初生成的局部参数化以优化质量度量。质量度量的示例包括失真值、特征对准指示符、由经训练的机器学习模型输出的质量得分等中的一个或多个。优化质量度量可以包括最小化表示由映射引入的失真、用于映射的特征对准的误差等的误差函数。图形操纵应用基于指示迭代地修改的局部参数化的足够质量的质量度量来完成迭代。在一些实施例中,还可以基于迭代的指定时间预算来完成迭代(例如,在最终用户可感知滞后之前完成迭代)。然后,图形操纵应用根据细化的局部参数化将2d图像应用于3d模型。例如,图形操纵应用将来自2d图像的每个像素的图像内容覆盖(或以其他方式应用)到来自3d模型的目标网格区域上的相应点,其中相应点通过细化的局部参数化的映射来指示。

如本文中描述的,某些实施例通过自动应用特定类型的各种规则(例如,用于将来自2d图像的纹理或风格化特征应用于3d模型的局部参数化)来提供图像处理的改进。在一个示例中,使用一组不同的参数化技术可以允许关于给定区域执行更合适的参数化。例如,如果对于特定网格区域可能不存在等距映射,则本文中描述的图形操纵应用可以使用不依赖于这样的等距映射的参数化技术。此外,与以贪婪方式计算参数化的现有技术相比,针对不同网格区域使用然后通过质量度量来细化的一组不同参数化技术可以提高计算效率。并且基于可定制的质量度量来细化参数化允许本文中描述的实施例被定制到3d模型中的特定类型的特征。因此,本文中描述的实施例对将2d图像数字地应用于3d模型以用于纹理、风格化或其他美学增强的目的的计算系统提供改进。

现在参考附图。图2描绘了用于细化用于将2d图像应用于3d模型的局部参数化的计算系统200的示例。计算系统200包括执行图形操纵应用202的一个或多个处理设备、用于存储由图形操纵应用202修改或以其他方式使用的图形数据的一个或多个存储器设备、用于接收指向图形操纵应用202的用户输入的输入设备220、和用于显示由图形操纵应用202修改或以其他方式生成的图形数据的呈现设备224。

例如,图形操纵应用202从输入设备220接收指示用于将2d图像212应用于网格区域214、216、218中的特定网格区域的期望的用户输入。特定网格区域r被定义为一组多边形、位置网格顶点和半径的组合、或某个其他合适的定义。用户输入可以包括例如网格区域214、216、218中的一个网格区域内的点的选择。图形操纵应用202生成具有足够高的质量用于将2d图像212应用于所选择的网格区域的局部参数化。图形操纵应用202使用局部参数化中的映射来将来自2d图像212的图像点(例如,2d图像212的像素)与沿着3d模型210的表面的模型点(例如,在所选择的网格区域内的顶点或其他控制点)相匹配。图形操纵应用202生成经修改的3d模型222,其中根据该匹配操作将2d图像212应用于3d模型210。图形操纵应用202使得呈现设备224显示经修改的3d模型222。

为了生成具有足够高质量的局部参数化,图形操纵应用202执行参数化引擎204,参数化引擎204包括用于优化(或以其他方式改进)3d模型210的一个或多个网格区域214、216和218的局部参数化的框架。该参数化的“局部”性质是从参数化聚焦在3d模型210的特定的一个网格区域(例如,网格区域216)上而不是被应用于整个3d模型而产生的。局部参数化将纹理图投影到3d网格区域上,其中纹理图的轴被表示为u和v。在一个示例中,局部参数化针对3d网格的每个顶点包括一组两个浮点数(即,u和v坐标),这些浮点数将2d图像212映射到3d模型的一个或多个网格区域上。通过将2d图像212中的像素分配给网格区域的多边形上的表面映射(例如,通过复制2d图像212的三角形片段并且将其粘贴到网格区域上的相应的三角形上)来将2d图像212应用于特定的网格区域。

参数化引擎204基于质量度量来优化(或以其他方式改进)局部参数化。质量度量可以是例如指示给定的局部参数化lp的质量的标量值。局部参数化的质量包括一个或多个标准,这些标准指示局部参数化将以美学上期望的方式将2d图像212应用于3d模型210的特定网格区域的程度。在一些实施例中,参数化引擎204包括用于计算质量度量的度量函数m。本文中关于图3描述不同质量度量的示例。

参数化初始化过程206包括可以用于生成特定网格区域的初始局部参数化的一组不同的参数化过程。图形操纵应用202从这组可用参数化初始化过程206中进行选择。从一组不同的参数化初始化过程206中选择特定参数化初始化过程206可以提高局部参数化的质量、计算高质量参数化的速度、或两者。本文中参考图3描述参数化初始化过程206的示例。

图形操纵应用202执行细化循环,细化循环迭代地修改由所选择的参数化初始化过程206生成的局部参数化。例如,细化循环可以执行关于质量度量的非线性优化。细化循环基于达到一个或多个终止条件(例如,阈值质量度量值、时间预算、迭代次数、细化循环的最小进度等)而终止。本文中参考图3描述这些终止条件的示例。

为了说明的目的,图2描绘了存储相关图形数据并且执行图形操纵应用202的单个计算系统200。在一些实施例中,单个计算系统200可以是执行这两个功能的服务器系统或其他计算设备。但其他实现也是可能的。例如,计算系统200可以包括不同的计算设备(或成组的设备),每个计算设备执行以下中的一个或多个:训练由图形操纵应用202使用的各种机器学习模型,执行图形操纵应用202,存储输入图形数据208,以及在呈现设备上呈现经修改的3d模型222。

图3描绘了用于计算在将2d图像应用于3d模型时使用的高质量局部参数化的过程300的示例。一个或多个计算设备(例如,计算系统200)通过执行合适的程序代码(例如,图形操纵应用202)来实现图3中描绘的操作。出于说明性目的,参考附图中描绘的某些示例来描述过程300。然而,其他实现也是可能的。

在框302处,过程300涉及访问3d模型和要应用于来自3d模型的网格区域的2d图像。一个或多个计算设备执行来自图形操纵应用202的程序代码以实现框302。例如,参数化引擎204从输入图形数据208访问3d模型210和2d图像212。在一些实施例中,参数化引擎204通过经由数据总线在本地非暂态计算机可读介质(例如,存储输入图形数据208的存储器设备)与被包括在与存储器相同的计算设备中的本地处理设备之间传送合适的信号来访问输入图形数据208。在附加或替代实施例中,参数化引擎204通过经由数据网络在包括非暂态计算机可读介质的计算设备与包括执行图形操纵应用202的处理设备的计算设备之间传送合适的信号来访问输入图形数据208。

在框304处,过程300涉及从一组参数化初始化过程中选择特定参数化初始化过程。一个或多个计算设备执行来自图形操纵应用202的程序代码以实现框304。例如,参数化引擎204访问与各种参数化初始化过程206相对应的程序代码,并且确定哪个参数化初始化过程206适合于目标网格区域。在一些实施例中,参数化引擎204通过计算每个参数化技术的初始质量度量并且选择具有最佳初始质量度量的参数化技术来确定最合适的参数化初始化过程206。在附加或替代实施例中,参数化引擎204计算或以其他方式访问描述目标网格区域的一个或多个特征(例如,形态、特征类型等)的数据。参数化引擎204访问指示哪个参数化技术与目标网格区域的所标识的特征相关联的配置数据,并且选择该参数化技术。

参数化初始化过程206的一个示例是指数映射参数化。指数映射参数化创建将应用2d图像的特定网格区域216的局部参数化。为此,指数映射参数化计算以3d模型210上的特定点(诸如由用户输入到图形操纵应用202所选择的点)为中心的局部参数化。指数映射参数化以贪婪方式从特定点向外扩展。例如,指数映射参数化在逐个三角形的基础上迭代地平坦化平面的局部邻域。一旦指数映射参数化具有映射到局部3d网格区域的平坦邻域,指数映射参数化将2d图像212平移到3d表面的平坦平面上。通过保留在应用于特定网格区域216之前2d图像212中的像素之间的相对距离以及在应用于特定网格区域216(即,映射到网格的表面)之后像素之间的相应距离,最小化或以其他方式减少图像应用过程中的失真。在cmtransactionsongraphics,25(3),july2006,pp.605-613的schmidt等人的“interactivedecalcompositingwithdiscreteexponentialmaps”中描述了实现指数映射参数化的示例,其通过引用并入本文。

参数化初始化过程206的另一示例是谐波映射参数化。谐波映射参数化将3d模型210分解为分块。分块的边界对应于3d模型210上的特征的边界。例如,如果3d模型210描绘具有“鼻子”特征的面部,则鼻子的边界将对应于由谐波映射参数化计算的分块的边界。谐波映射参数化通过将一个或多个分块边界投射到2d图像212的一个或多个边界来计算局部参数化。例如,谐波映射参数化将从3d模型210获取的给定分块平坦化为2d平面。谐波映射参数化通过将2d图像212与定义2d平面的分块的边界对准来将2d图像212的一个或多个部分映射到该2d平面上。谐波映射参数化可以用于将3d模型210的凸出特征投射到2d图像212的边界。

参数化初始化过程206的另一示例是来自沿着3d模型210的另一点的相邻局部参数化。图形操纵应用202访问给定网格区域r1、r2、......、rn和这些区域的先前计算的局部参数化lp(ri)。现有的局部参数化lp(ri)先前已经由图形操纵应用202响应于由图形操纵应用202关于2d图像接收的放置输入而计算。假定移位后的网格区域r'与一些网格区域ri交叠,图形操纵应用202通过调节原始参数化lp(ri)而不是从头开始重新计算lp(r')来计算网格区域r'的参数化lp(r')。

例如,如果先前已经使用图形操纵应用202将2d图像212(或另一图像)在沿着3d模型210的表面的第一点处放置到3d模型210上,则图形操纵应用202先前已经计算了与该第一点相关联的网格区域214的局部参数化。在随后的图像应用过程中,图形操纵应用202标识要放置2d图像212的第二点(例如,因为用户已经决定移动贴花或其他2d图像212的放置)。第一点可以位于与第二点所在的目标网格区域交叠或相邻的不同网格区域中。相邻区域可以是在另一区域的阈值距离内的区域。在一些实施例中,基于具有与目标区域类似的形态的相邻区域来选择相邻局部参数化(例如,两个区域被分类为相同特征或特征类型,两个区域具有相似的弯曲程度或没有弯曲,等等)。

为了计算关于与第二点相关联的网格区域216的局部参数化,图形操纵应用202检索第一网格区域214的局部参数化,并且调节相应局部参数化的一个或多个值以创建关于第二网格区域216的局部参数化。在简化示例中,如果第二点在第一点左侧的几个像素的位置处,则图形操纵应用202转换第一点的局部参数化中的值以调节位置的变化。在另一示例中,沿着3d模型的目标点a(即,由用户输入选择的新点)可以具有带有相关联的局部参数化lp(b)、lp(c)、lp(d)和lp(e)的相邻的点b、c、d和e。lp(a)可以被计算为lp(b)、lp(c)、lp(d)和lp(e)的加权平均值。

参数化初始化过程206的另一示例是用户提供的参数化。例如,艺术家或其他用途可以为3d模型210提供模板或默认参数化以及3d模型210。图形操纵应用202可以从存储3d模型210的数据结构访问模板或默认参数化。

在一些实施例中,图形操纵应用202基于质量度量m从一组参数化初始化过程中选择特定参数化初始化过程。例如,图形操纵应用202计算一组初始局部参数化,其中这些初始局部参数化中的每个使用参数化初始化过程中的不同参数化初始化过程来计算。图形操纵应用202分别计算这些初始局部参数化的质量度量的初始值。图形操纵应用202选择具有质量度量的最佳值的初始局部参数化(例如,最高值或指示最佳质量局部参数化的值)。图形操纵应用202迭代地调节所选择的局部参数化。

在附加或替代实施例中,图形操纵应用202基于特定网格区域216的形态从这组参数化初始化过程中选择特定参数化初始化过程。在一个示例中,图形操纵应用202可以确定网格区域216包括更多弯曲,并且因此包括更少的明显的3d特征。缺乏明显的3d特征可以减少将2d图像212与特定特征边界对准的需要。因此,图形操纵应用202可以选择指数映射参数化。在另一示例中,图形操纵应用202可以确定网格区域216包括更尖锐的角度或其他明显的3d特征。这些特征的性质可以表明,谐波映射参数化的基于分块的分解是合适的。因此,图形操纵应用202可以选择谐波映射参数化。

上述参数化技术中的一些可以用于具有非不重要曲率的目标网格区域或跨网格区域具有曲率变化(即,非恒定曲率)的目标网格区域。但参数化引擎204也可以使用其他技术。例如,在一些实施例中,如果这样做对于目标网格区域的形态是可接受的,则参数化引擎204使用基于投影的技术(即,简单地将2d图像投影到平面或曲面上)。在一个示例中,参数化引擎204根据目标网格区域的形态的分析来确定目标网格区域是否具有不重要或恒定的曲率(例如,平坦、圆柱或球面曲率)。如果参数化引擎204检测到目标网格区域中的不重要或恒定曲率,则参数化引擎204可以使用比指数或谐波映射参数化更有效的更简单的参数化技术,诸如2d图像到平面或恒定曲面上的投影。计算参数化中提高的效率的可以包括较低失真和较少计算时间中的一个或多个。

图形操纵应用202可以以任何合适的方式确定网格区域的形态。在一些实施例中,图形操纵应用202分析关于网格区域216的信息(例如,曲率、顶点数等)以确定区域的形态。在其他实施例中,图形操纵应用202应用被训练以对3d模型210进行分类的特征分类模型(例如,机器学习模型)。使用特征分类模型对3d模型210(或个别特征)进行分类可以指示3d模型210的形态。例如,如果特征分类模型指示3d模型210描绘瓶子,则图形操纵应用202可以从该分类确定3d模型210的形态包括更大程度的弯曲,并且因此应当使用指数映射参数化。

在一个示例中,图形操纵应用202可以响应于2d图像212根据用户输入被移动到3d模型210上的不同位置来计算各种不同的局部参数化。在这种情况下,图形操纵应用202可以通过调整相邻点的现有局部参数化来计算给定点的局部参数化。与使用指数映射参数化或谐波映射参数化相比,这样做可以针对给定点产生局部参数化的更快计算。

在框306处,过程300涉及从所选择的参数化初始化过程生成初始局部参数化。一个或多个计算设备执行来自图形操纵应用202的程序代码以实现框306。例如,参数化引擎204检索在框304处选择的参数化初始化过程206的程序代码并且使用2d图像212和3d模型210的目标网格区域作为输入来执行该检索到的程序代码。执行程序代码生成局部参数化,该局部参数化包括将来自2d图像212的图像点映射到沿着目标网格区域的表面的模型点(例如,顶点或其他控制点)。

在框308处,过程300涉及计算局部参数化的质量度量。一个或多个计算设备执行来自图形操纵应用202的程序代码以实现框308。例如,参数化引擎204将一个或多个度量函数应用于局部参数化。度量函数包括用于计算指示局部参数化的质量的标量值的一个或多个操作。在一些实施例中,参数化引擎204通过计算各种中间质量度量(例如,失真、特征对准等)并且组合中间质量度量(例如,经由加权平均、线性组合、或者接收中间质量度量作为输入并且计算组合质量度量作为输出的某种其他数学公式)来在框308处计算质量度量。

质量度量的一个示例是失真度量。失真度量指示通过使用局部参数化将2d图像212应用于目标网格区域来修改(例如,拉伸、压缩等)2d图像212的一个或多个特征的程度。在一个示例中,2d图像212描绘了在将2d图像212应用于目标网格区域时被修改的圆。稍微修改圆(例如,将圆圈变成椭圆)的局部参数化将具有比极大地修改圆(例如,将圆圈变成正方形)的局部参数化更高的失真度量。

可以使用任何合适的函数来计算失真度量。用于计算失真度量e的度量函数的示例是:

来自该度量函数的失真度量可以具有[0...1]的范围。该失真度量可以测量例如被可接受地参数化的3d表面的一部分。在该度量函数中,a是目标网格区域的网格区域,∑f()是关于目标网格区域网格中的所有面的和,af是网格区域中的给定面的面区域,df是每个面的失真误差,并且σ是容错。每个面的失真误差的一个示例是面的对称dirichlet能量ed,其可以通过以下函数提供:

容错可以指示2d图像和目标网格区域的可接受的失真量。例如,容错的较高值可以指示,较大量的失真(即,三角形相对于相邻三角形可以缩放或伸展多少)对于特定的图像到网格应用是可接受的。

质量度量的另一示例是特征对准度量。特征对准度量可以测量在2d图像212中描绘的一个或多个边与目标网格区域的一个或多个边紧密对准的程度。图像特征上的边与来自网格区域的特征(即,模型特征)上的边之间的较小距离可以指示更好的质量度量。图像特征上的边与来自网格区域的特征(即,模型特征)上的边之间的较大距离指示较差的质量度量。

在一些实施例中,使用等式(1)针对将目标网格区域的3d表面映射到来自2d图像的矩形的一组谐波映射来计算特征对准度量。参数化引擎204通过将3d区域边界上的四个点映射到来自2d图像的矩形的四个角来创建一组这些映射。参数化引擎204从这组映射中选择特定映射使来自等式1的误差e最小化。e的这个最小化值被选择作为特征对准度量。

质量度量的另一示例是利用经训练的机器学习模型计算的学习的质量度量。可以训练质量机器学习模型以将各种参数化与质量得分相关联。例如,在该训练过程中使用的训练数据可以包括与一组网格和局部参数化相对应的一组艺术家标记的质量得分,其中艺术家或其他用户已经回顾使用局部参数化来将2d图像应用于网格的结果并且已经向结果指定了质量得分。另外地或替代地,在该训练过程中使用的训练数据可以包括一组艺术家创建的局部参数化。

在一些实施例中,使用学习的质量度量可以允许对特定参数化初始化过程的更细微的选择、对初始局部参数化的细化、或两者。例如,特定形状可以具有隐藏或模糊通过应用2d图像212而引入的某些失真的特征。在一个示例中,如果3d模型210描绘将应用“面部”图像的头部,并且在头部后面的任何失真将通过应用单独的“头发”图像而被最终隐藏,则可以在质量度量中忽略或放松在头部后面发生的失真。因此,参数化引擎204可以将参数化优化集中在面部特征上。

质量度量的另一示例是开发者定义的质量度量。例如,图形操纵应用202可以提供用于接收用户输入(例如,从开发者或其他用户)的接口,用户输入选择特定度量函数m,定义度量函数m,或者以其他方式允许开发者提供定制的质量度量。

在框310处,过程300涉及确定是否已经达到终止条件。一个或多个计算设备执行来自图形操纵应用202的程序代码以实现框310。例如,参数化引擎204执行迭代地修改由所选择的参数化初始化过程生成的局部参数化的细化循环(例如,框308-312)。该迭代细化可以基于一个或多个终止条件而终止。终止条件的一个示例是被优化的质量度量(例如,最小化误差值,超过阈值质量值,等等)。终止条件的另一示例是被达到的时间预算或迭代计数。例如,图形操纵应用202可以访问细化循环的阈值持续时间(例如,最大时间量或最大迭代次数)。可以选择最大时间量或最大迭代次数,使得局部参数化的计算对用户是透明的。例如,几十毫秒的时间预算可以防止用户注意到在用户输入在特定点放置2d图像212与局部参数化被完成之间的滞后。另外地或替代地,可以在“鼠标向上”命令上使用不同的时间预算(例如,半秒)。终止条件的另一示例是在给定数目的先前迭代上的最小进度(例如,质量度量中的变化)。

如果尚未达到终止条件,则过程300涉及修改局部参数化,如框312所示。一个或多个计算设备执行来自图形操纵应用202的程序代码以实现框312。在一些实施例中,参数化引擎204可以执行关于质量度量的非线性优化。该非线性优化涉及例如修改映射中的三角形的(u,v)坐标以最小化在质量度量中使用的误差值。在一个示例中,参数化引擎204可以最小化度量函数m,其可以是使用等式(1)或另一标量值导出的等式1的单个e的计算,诸如使用等式(1)和(2)计算的失真度量的加权组合、如上面关于框308所述计算的特征对准度量、以及任何其他合适的误差值。在另一示例中,参数化引擎204可以最大化表示质量的标量值,诸如由被训练为计算质量度量的机器学习模型输出的标量值,如上所述。

如果已经达到终止条件,则过程300涉及根据局部参数化将2d图像应用于3d模型的网格区域,如框314所示。一个或多个计算设备执行来自图形操纵应用202的程序代码以实现框314。

在一些实施例中,图形操纵应用202使得呈现设备224显示已经应用了2d图像212的经修改的3d模型222。在一些实施例中,图形操纵应用202从本地非暂态计算机可读介质访问经修改的3d模型222,并且经由数据总线向呈现设备224传送合适的信号(例如,显示数据、绘制指令等)。在附加或替代实施例中,图形操纵应用202从合适的非暂态计算机可读介质(例如,本地或网络可访问的存储器设备)访问经修改的3d模型222,并且经由数据网络向远程计算设备传送合适的信号。合适的信号可以包括显示数据、绘制指令、或者指示或以其他方式使得远程计算设备在呈现设备224处绘制显示数据的其他消息。

在一些实施例中,图形操纵应用202通过将上述一个或多个操作应用于来自3d模型210的网格的低分辨率版本来增强过程300。例如,3d模型210可以包括具有大量顶点的高分辨率网格。图形操纵应用202或其他合适的引擎通过对该网格进行下采样来生成3d模型210的低分辨率版本,从而产生具有较少数目的顶点的低分辨率网格。(术语“高分辨率”和“低分辨率”可以包括任何关系,其中具有较高分辨率的第一网格被下采样到具有较低分辨率的网格中。)可以执行下采样使得在于高分辨率网格中呈现的凸出特征(例如,描绘头部的3d模型210中的面部特征)也存在于低分辨率网格中。也可以执行下采样使得在低分辨率网格中不引入失真。

在这些实施例中,图形操纵应用202利用过程300的一个或多个操作来计算来自低分辨率网格的网格区域的足够高质量的局部参数化。图形操纵应用202经由从低分辨率网格到高分辨率网格的合适的映射将该局部参数化转换为高分辨率网格的局部参数化。图形操纵应用202通过根据高分辨率网格的局部参数化将2d图像212应用于3d模型210来修改3d模型210。

可以使用任何合适的计算系统或成组的计算系统来执行本文中描述的操作。例如,图4描绘了计算系统200的示例。在一些实施例中,计算系统200包括执行图形操纵应用202的处理设备、存储各种图形数据的存储器、输入设备220(例如,鼠标、键盘、触摸板、触摸屏等)、以及显示图形内容(例如,3d模型210、2d图像212、经修改的3d模型222)的呈现设备224,如图4所示。在其他实施例中,具有与图4中所示的设备类似的设备(例如,处理器、存储器等)的不同的计算系统执行以下中的一个或多个:执行图形操纵应用202,存储图形数据,接收输入,以及显示各种输出。

计算系统200的所描绘的示例包括被通信地耦合到一个或多个存储器设备404的处理器402。处理器402执行存储在存储器设备404中的计算机可执行程序代码,访问存储在存储器设备404中的信息,或两者。处理器402的示例包括微处理器、专用集成电路(“asic”)、现场可编程门阵列(“fpga”)或任何其他合适的处理设备。处理器402可以包括任何数目的处理设备,包括单个处理设备。

存储器设备404包括用于存储数据、程序代码或两者的任何合适的非暂态计算机可读介质。计算机可读介质可以包括能够向处理器提供计算机可读指令或其他程序代码的任何电子、光学、磁性或其他存储设备。计算机可读介质的非限制性示例包括磁盘、存储器芯片、rom、ram、asic、光学存储器、磁带或其他磁存储器、或者处理设备可以从其读取指令的任何其他介质。指令可以包括由编译器或解释器从以任何合适的计算机编程语言编写的代码生成的处理器特定指令,计算机编程语言包括例如c、c++、c#、visualbasic、java、python、perl、javascript和actionscript。

计算系统200还可以包括多个外部或内部设备,诸如输入设备220、呈现设备224或其他输入或输出设备。例如,计算系统200被示出为具有一个或多个输入/输出(“i/o”)接口408。i/o接口408可以从输入设备接收输入或向输出设备提供输出。一个或多个总线406也被包括在计算系统200中。总线406可通信地耦合计算系统200中的相应计算系统的一个或多个组件。

计算系统200执行将处理器402配置为执行本文中描述的一个或多个操作的程序代码。程序代码包括例如图形操纵应用202或执行本文中描述的一个或多个操作的其他合适的应用。程序代码可以驻留在存储器设备404或任何合适的计算机可读介质中,并且可以由处理器402或任何其他合适的处理器执行。在一些实施例中,图形操纵应用202中的所有模块(例如,参数化引擎204、参数化初始化过程206等)存储在存储器设备404中,如图4所示。在附加或替代实施例中,来自图形操纵应用202的这些模块中的一个或多个存储在不同计算系统的不同存储器设备中。

在一些实施例中,计算系统200还包括网络接口设备410。网络接口设备410包括适合于建立到一个或多个数据网络的有线或无线数据连接的任何设备或成组的设备。网络接口设备410的非限制性示例包括以太网网络适配器、调制解调器等。计算系统200能够使用网络接口设备410经由数据网络与一个或多个其他计算设备(例如,执行图形操纵应用202的计算设备)通信。

在一些实施例中,计算系统200还包括图4中描绘的输入设备220和呈现设备224。输入设备220可以包括适合于接收控制或影响处理器402的操作的视觉、听觉或其他合适输入的任何设备或成组的设备。输入设备220的非限制性示例包括触摸屏、鼠标、键盘、麦克风、单独的移动计算设备等。呈现设备224可以包括适合于提供视觉、听觉或其他合适的感觉输出的任何设备或成组的设备。呈现设备224的非限制性示例包括触摸屏、监视器、扬声器、单独的移动计算设备等。

虽然图4将输入设备220和呈现设备224描绘为对于执行图形操纵应用202的计算设备是本地的,但是其他实现也是可能的。例如,在一些实施例中,输入设备220和呈现设备224中的一个或多个可以包括使用本文中描述的一个或多个数据网络经由网络接口设备410与计算系统200通信的远程客户端计算设备。

一般考虑因素

本文中阐述了很多具体细节以提供对所要求保护的主题的透彻理解。然而,本领域技术人员将理解,可以在没有这些具体细节的情况下实践所要求保护的主题。在其他情况下,没有详细描述本领域普通技术人员已知的方法、装置或系统,以免模糊所要求保护的主题。

除非另外特别说明,否则应当理解,在整个说明书中,利用诸如“处理”、“计算”、“计算的”、“确定”和“标识”等术语的讨论是指诸如一个或多个计算机或一个或多个类似的电子计算设备等计算设备的动作或过程,这些设备操纵或转换在存储器、寄存器或其他信息存储设备、传输设备或计算平台的显示设备内表示为物理电子或磁量的数据。

本文中讨论的一个或多个系统不限于任何特定硬件架构或配置。计算设备可以包括提供以一个或多个输入为条件的结果的任何合适的组件布置。合适的计算设备包括访问存储的软件的多用途的基于微处理器的计算机系统,该存储的软件将计算系统从通用计算设备编程或配置为实现本主题的一个或多个实施例的专用计算设备。可以使用任何合适的编程、脚本或其他类型的语言或语言组合来在用于编程或配置计算设备的软件中实现本文中包含的教导。

本文中公开的方法的实施例可以在这样的计算设备的操作中执行。上述示例中呈现的框的顺序可以变化——例如,可以将框重新排序,组合和/或分成子框。某些框或过程可以并行执行。

本文中“适于”或“被配置为”的使用表示开放且包容性的语言,其不排除适于或被配置为执行附加任务或步骤的设备。另外,“基于”的使用表示开放和包容性,因为“基于”一个或多个所述条件或值的过程、步骤、计算或其他动作在实践中可以基于除了所述的之外的附加的条件或值。本文中包括的标题、列表和编号仅是为了便于解释而不意味着是限制性的。

虽然已经关于本发明的特定实施例详细描述了本主题,但是应当理解,本领域技术人员在实现理解前述内容的基础上可以容易地产生对这样的实施例的改变、变化和等同物。因此,应当理解,本公开内容出于示例而非限制的目的而被呈现,并且不排除包括对本主题的这样的修改、变化和/或添加,这对于本领域普通技术人员是很清楚的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1