用于针对试衣可视化进行三维衣服网格变形和分层的系统和方法与流程

文档序号:16596139发布日期:2019-01-14 19:40阅读:504来源:国知局
用于针对试衣可视化进行三维衣服网格变形和分层的系统和方法与流程

本申请涉及并要求于2017年2月15日提交的题为“systemandmethodforthree-dimensionalgarmentmeshdeformationandlayeringforgarmentfitvisualization(用于针对试衣可视化进行三维衣服网格变形和分层的系统和方法)”的未决美国专利申请号15/433,448的权益,所述专利申请的公开内容通过引用以其全文结合在此。

本公开涉及试衣领域,并且更具体地涉及生成表示一件或多件衣服的三维(3d)多边形网格,相对于人体网格而对所述3d多边形网格进行变形和/或分层以便使试衣可视化。



背景技术:

以3d多边形网格的形式来使衣服和人体数字化是众所周知的。在一些示例中,可以生成衣服网格,其状态为好像已经装配到或穿在人体上(即,而不是平放)。这种安排可用于如可视化(例如,试衣可视化)等情境。在一些示例中,可以提供衣服网格,其状态为使得其可能已经装配在特定体型大小的人体上。通常,衣服网格可能与不同大小的人体不相配。例如,装配在较大人体上的t恤可能在更小的人体上显得宽松,并且反之亦然。另外,当衣服网格应用到新人体网格上时,可能在衣服网格与不同大小的人体网格(例如,针对不同体型大小而生成的人体网格)之间生成相交。

基于物理布料模拟技术来生成衣服网格也是众所周知的。这些技术通常依赖于二维(2d)衣服图案,所述2d衣服图案然后被拼接在一起并装配到3d化身上。所述技术通常像通过弹簧彼此连接的颗粒的网格产品一样对待布料以便确定织物的位置和形状。物理布料模拟通常使用将如拉伸性、刚度和重量等布料特性考虑在内的物理模型。然而,物理布料模拟技术是计算机密集的并且在现实生活环境中可能无法实现。

生成表示单独地装配在同一人体上的不同衣服的多个多边形网格也是众所周知的。例如,在3d扫描管道中,通常单独地获取对装配在同一人体模型上的多件衣服的3d扫描。由于大量的可能组合,所以获取对分层到一起的多件衣服的3d扫描可能是成本高昂的。另外,因为每个网格的形状不考虑其他网格的存在,所以如果简单地将表示不同衣服的多个多边形网格组合到一起,则可能发生网格之间的相交。

需要用于产生新形状的衣服网格(它们好像装配在不同大小的人体上)、实施起来有效且简单并且不依赖于物理布料模拟技术(其可能是耗时的或者在现实生活环境中无法以简单方式来实现)的系统和方法。还需要对多个衣服网格进行分层同时解决多个衣服网格(当被分层到一起时)之间的相交的系统和方法。



技术实现要素:

本公开的方面涉及用于使表示装配在模板人体上的衣服的多边形网格变形到目标人体上的系统和方法。所述系统可以包括输入接口、变形引擎和输出接口。所述输入接口可以被配置成用于:接收表示所述目标人体的目标人体网格;接收具有多个模板人体顶点并且表示所述模板人体的模板人体网格,其中,所述目标人体网格不同于所述模板人体网格;并且接收具有多个衣服顶点并且表示所述衣服的衣服网格,所述衣服网格装配到所述模板人体网格上。所述变形引擎可以被配置成用于:通过几何变形算法来使所述衣服网格变形到所述目标人体网格上。对于每个衣服顶点,所述几何变形算法包括:标识所述模板人体顶点中的一个或多个模板人体顶点以及所述衣服顶点中各自处于所述衣服顶点的预定阈值(就距离和表面法线对准而言)内的一个或多个其他衣服顶点;将预定权重应用于每个经标识的模板人体顶点和每个经标识的其他衣服顶点;基于经加权的模板人体顶点与经加权的衣服顶点之和将所述衣服顶点映射到所述一个或多个经标识的模板人体顶点上;基于所述模板人体网格与所述目标人体网格之间的映射确定所述经映射的衣服顶点相对于所述目标人体网格的位置,从而使得所述衣服顶点根据所述位置而变形;以及针对所述衣服网格的每个衣服顶点,重复所述标识、应用、映射和确定步骤以便形成装配到所述目标人体网格上的经变形的衣服网格。所述输出接口可以被配置成用于输出所述经变形的衣服网格。

本公开的另一方面涉及用于对表示装配在目标人体上的多件衣服的多个多边形网格进行分层的系统和方法。一种分层方法包括:由输入接口接收表示所述目标人体的目标人体网格;由所述输入接口接收表示所述对应多件衣服的多个衣服网格,每个衣服网格分别装配到所述目标人体网格上;相对于所述目标人体网格从最近层到最远层向所述多个衣服网格中的每个衣服网格分配分层顺序;以及由分层引擎根据从下一个最远层到所述最近层的先后顺序针对每个分配层执行分层过程。对于所述先后顺序中的每个衣服网格,所述分层过程包括:通过将所述衣服网格的每个顶点映射到所述目标人体网格上的对应相应位置上来将所述衣服网格套缩到所述目标人体网格上以便形成经套缩的衣服网格;使更远离所述分层顺序中的所述衣服网格的至少一个外部衣服网格按某个预定量扩展远离所述目标人体以便形成至少一个经扩展的外部衣服网格;通过使所述经套缩的衣服网格的每个顶点朝着所述至少一个经扩展的外部衣服网格变形而不与所述经扩展的外部衣服网格相交来对所述经套缩的衣服网格执行形状恢复以便形成所述相应分层顺序的经形状恢复的衣服网格;重复所述套缩、扩展和形状恢复步骤,直到生成所述最近层的经形状恢复的衣服网格,以便形成经分层的衣服网格集合;以及由输出模块输出所述经分层的衣服网格集合。

附图简要说明

图1是根据本公开的方面的用于相对于人体网格而使衣服网格变形和/或分层的示例系统的功能框图。

图2是根据本公开的方面的用于进行与图1中所示出的系统相关联的衣服网格变形和/或衣服网格分层的示例方法的流程图。

图3a是根据本公开的方面的与图1中所示出的系统相关联的衣服变形和分层过程的示例方法的流程图。

图3b是根据本公开的另一方面的与图1中所示出的系统相关联的衣服网格变形的示例方法的流程图。

图3c是根据本公开的另一方面的与图1中所示出的系统相关联的衣服网格分层的示例方法的流程图。

图4a、图4b和图4c展示了3d多边形网格的各个方面。

图5a、图5b、图5c、图5d、图5e和图5f展示了根据本公开的方面的与示例衣服变形过程相关联的各种3d多边形网格。

图6a、图6b、图6c、图6d、图6e、图6f、图6g和图6h展示了根据本公开的方面的与示例衣服分层过程相关联的各种3d多边形网格。

图7是根据本公开的方面的与图1中所示出的系统相关联的衣服变形的示例方法的流程图。

图8是对根据本公开的方面的3d衣服网格顶点相对于3d人体顶点的映射的二维展示。

图9是对关于本公开的方面的3d衣服顶点相对于3d人体网格顶点的使用预定距离范围的映射的二维展示。

图10是对关于本公开的方面的3d衣服顶点相对于3d人体网格顶点的使用预定角度范围的映射的二维展示。

图11a、图11b、图11c和图11d是对可以结合本公开的方面使用的各种幂函数的展示。

图12是对3d衣服网格的自相交的二维展示。

图13是对结合本公开的方面使用的人体网格变形过程的展示。

图14a、图14b和图14c是对关于本公开的方面的对3d人体网格的放大的二维展示。

图15a、图15b和图15c展示了根据本公开的方面的衣服网格相对于人体网格的长度调整过程。

图16是根据本公开的方面的与图1中所示出的系统相关联的衣服分层的示例方法的流程图。

图17a、图17b和图17c是对根据本公开的方面的针对3d衣服网格的套缩过程的二维展示。

图18a和图18b是对根据本公开的方面的3d衣服网格(在套缩到人体网格上之前和之后)的展示。

图19是对根据本公开的方面的与针对3d多边形网格的扩展过程相关的一对一映射的二维展示。

图20a、图20b和图20c是对根据本公开的方面的针对3d衣服网格的形状恢复过程的二维展示。

图21是根据本发明的方面的示例计算机系统的功能框图。

具体实施方式

本公开的方面总体上涉及用于使表示衣服的至少一个多边形网格变形到表示人体的多边形网格上的系统和方法,所表示的衣服好像穿在所表示的人体上。在一方面,所公开的系统和方法可以用于使将衣服装配到人体上可视化。然而,应当理解的是,本文中所公开的系统和方法不限于此,而相反可以用于其他适当应用。

根据本公开的方面,可以提供用于使表示装配在模板人体上的衣服的多边形网格变形到目标人体上的系统和方法。在一些示例中,系统可以包括变形引擎,所述变形引擎被配置成用于接收装配到模板人体网格上的至少一个衣服网格,并且使衣服网格变形,从而使得其被装配到目标人体网格上。在一些示例中,变形引擎可以基于不使用物理布料模拟技术的几何变形算法来执行变形过程。变形过程可以包括将衣服网格映射到目标人体网格上以便使衣服网格变形到目标人体网格上。变形过程还可以包括对经变形的衣服网格执行长度调整,从而使得衣服网格的长度与原始衣服网格相对应。变形过程还可以包括对经变形的衣服网格进行重构以便消除经变形的衣服网格的任何自相交以及衣服网格与目标人体网格之间的任何相交。模板人体网格可能不同于目标人体网格。例如,模板人体网格的形状、大小和/或姿势可能不同于目标人体网格。

在一些示例中,变形过程标准可以包括:规定新形状保留原始衣服的整体长度;提供新衣服形状,从而使得其模仿原始衣服的如褶皱、悬垂性等细节;以及在经变形的衣服网格与目标人体网格之间提供间隔,从而使得所述间隔类似于原始衣服与模板人体网格之间的间隔,即,在变形过程之后,紧绷程度可能相似(或相同)。为了本公开的目的,紧绷程度可以被理解为指衣服网格与人体网格之间的间隔。通常,紧绷程度描述衣服的布料如何装配在人体上(例如,非常紧到非常松)。这意味着如果衣服装配到更大的新人体形状上,则可以放大衣服,并且反之亦然。另一个变形过程标准可以包括新衣服网格没有自相交并且与新人体没有相交。通常,根据目标人体网格相对于原始模板人体网格的大小,经修改的衣服网格的形状可能变得更大、更小、向上偏移或向下偏移。

在一些示例中,本公开还涉及将多个衣服网格分层到目标人体网格上的系统和方法。在一些示例中,系统可以包括分层引擎,所述分层引擎被配置成用于接收两个或更多个衣服网格(每个衣服网格分别装配到目标人体网格上)并且可以执行几何分层过程,所述几何分层过程根据分层顺序使衣服网格迭代地变形以便形成分层衣服网格集合。变形可以包括按分层顺序将特定(内部)衣服网格套缩到目标人体网格上;扩展(多个)外部衣服网格以便容纳内部衣服网格;以及朝着经扩展的外部衣服对内部(经套缩的)衣服网格进行形状恢复,从而使得内部衣服网格与经扩展的外部衣服网格不相交并且与目标人体网格不相交。

在一些示例中,分层过程可以解决表示单独装配在同一人体上的衣服的多个多边形网格之间的相交。分层方法可以采取分层激发方式来使单独的衣服变形。分层方法可以通过对衣服网格中的每个衣服网格作出小规模修改来解决多件衣服(当被放在一起时)之间的所有相交。分层方法可以应用分层顺序,即,从最里面的一件衣服(最靠近人体)到最外面的一件衣服的顺序。例如,在给定衬衫、裤子和夹克的情况下,可能的一种顺序是衬衫-裤子-夹克,意味着衬衫塞在裤子之内,并且夹克穿在它们上面。不同分层顺序可能导致不同结果,例如,更尴尬的外表顺序。例如,夹克-裤子-衬衫的分层顺序意味着夹克塞在裤子之内并且两者穿在衬衫之内。

本公开的分层系统和方法的目标可以包括将两个或更多个衣服网格分层到几何形状(例如,人体网格)上,从而使得在任何衣服网格对之间或者在衣服网格中的每个衣服网格与人体网格之间不存在任何相交。另外地,分层过程可以期望地提供经分层的衣服网格,所述经分层的衣服网格与其原始形状保持尽可能接近。

在一些示例中,本公开的系统和方法可以既包括将多个衣服网格单独(分别)变形到目标人体网格上,又包括随后将所述多个经变形的衣服网格分层到目标人体网格上。

根据本公开的方面,变形过程和分层过程可以是基于几何的。因此,不可以使用任何基于物理的技术(比如,物理布料模拟)来生成经变形和经分层的衣服网格。因为本公开的变形过程涉及几何技术,所以相比于计算密集的基于物理的技术,基于几何的变形过程在计算上更有效率并且在计算上更快。

例如,可以将两个常规的基于物理的布料模拟系统与本公开的几何变形过程进行比较。optitexpds(可从加利福尼亚州电子影像公司(electronicsforimaging,inc.)的部门efi/optitex获得)虽然在计算上更昂贵,但是可以产生物理上更逼真的结果(例如,具有逼真的外表褶皱、拉伸性等)。clo3d(可从纽约市柯镂虚拟衣服公司(clovirtualfashion,inc.)获得)虽然明显更快,但是结果更平滑,缺少细节。关于性能,应当考虑两种任务。第一,简单地将一件衣服放在目标人体上(即,衣服变形过程);第二,同时将多件衣服放在目标人体上(即,衣服分层过程)。

对于变形任务,optitexpds需要几分钟来完成所述过程(根据衣服的复杂性),而clo3d需要几秒到十秒来计算初始解决方案,并且如果初始解决方案不令人满意,则需要3d艺术家进行短暂的手动编辑会话(这可能需要花费另一个几分钟)。两种估计都假设衣服初始地置于铺放平整状态(即,像典型的2d图案一样)。

相比而言,本公开的衣服变形过程可能耗费高达几秒来完成。在很大程度上更有效的过程的一个原因是本公开使用3d经装配状态下已经穿在模板人体模型上(而不是2d图案)的衣服。本公开朝着目标人体模型使衣服变形。这种变形是不具有任何物理考虑因素的单纯几何过程并且可以非常有效地执行。

使用如optitexpds等一些现有技术系统通常无法以可靠的方式来执行将多件衣服同时放到人体上(即,分层过程)。尽管其可由如clo3d等其他现有技术系统执行,但是所述过程通常需要几秒钟来完成。相比而言,本公开的分层方法比这些现有技术系统更快,例如,在不超过一秒或两秒内完成分层过程。

基于物理的方式的附加性能问题在于所述方式不可靠地模仿细节。通常,如褶皱、悬垂性等现有细节减少,并且创建了新的细节。除了性能问题之外,对于许多应用,由于衣服模型采用2d图案(在理想情况下)或者至少高质量3d多边形网格(例如,均匀且规则地细分、平滑-无预先“焙制”的几何细节、并且无洞或其他网格问题)的形式的要求,基于物理的布料模拟技术无法实现。在如由网上衣服供应商使用的3d扫描管道等性能设置下,这种要求可能是不经济的或者以其他方式可能是不可行的。

本公开的其他优点在于性能和简单性。就简单性而言,特定优点在于本公开的过程不需要像类似方法所要求的那样将任何形式的骨架或操纵信息与人体网格相关联。关于人体网格的这种骨架信息通常需要由3d艺术家手动生成,从而增加了复杂性、费用和附加处理。

仅通过示例的方式,将参考装配在人体上的衣服来描述本公开,但是将理解的是,本公开不一定局限于此,并且本文中所描述的新颖方法可能更广泛适用。网格可以表示装配到另一个对象上的任何对象。

现在转到图1,示出了功能框图,所述功能框图展示了用于使网格变形和/或分层的示例系统100(本文中被称为系统100)。系统100可以包括输入接口110、变形引擎120、分层引擎130、输出接口140和数据存储设备190。在一些示例中,系统100可以包括可选用户界面150、可选网络接口160、可选显示器170和可选渲染引擎180中的一项或多项。在一些示例中,系统100可以包括变形引擎120和分层引擎130两者(见图3a)。在一些示例中,系统100可以包括变形引擎120(见图3b)。在一些示例中,系统100可以包括分层引擎130(见图3c)。尽管未示出,但是在一些示例中,系统100可以包括被专门配置成用于控制输入接口110、变形引擎120、分层引擎130、输出接口140、可选用户界面150、可选网络接口160、可选显示器170、可选渲染引擎180和数据存储设备190的操作的控制器(例如,处理器、微控制器、电路、(多个)软件和/或其他硬件组件)。

在一些示例中,可以在单个计算设备上将输入接口110、变形引擎120、分层引擎130、输出接口140和数据存储设备190(以及可选用户界面150、可选网络接口160、可选显示器170和可选渲染引擎180)具体化。在其他示例中,输入接口110、变形引擎120、分层引擎130、输出接口140和数据存储设备190(以及可选用户界面150、可选网络接口160、可选显示器170和可选渲染引擎180)可以指分布于多个物理位置的通过一条或多条有线和/或无线链路连接的两个或更多个计算设备。应当理解的是,系统100指具有足以用于执行以下专业功能的处理和存储器能力的计算系统,并且其不一定指特定物理位置。以下关于图21而描述可以表示系统100的示例计算系统。

输入接口110可以表示电子设备上被配置成用于接收一个或多个3d多边形衣服网格(即,表示(多件)衣服的(多个)3d多边形网格)和一个或多个人体网格(即,表示各种形状的(多个)人体的(多个)3d多边形网格)的任何电子设备或应用。为了本公开的目的,衣服网格可以被理解为指对衣服的3d表示。衣服网格可以包括相关联衣服信息,比如但不限于衣服标识符、纹理信息、制造商、设计师、商店信息、材料信息、渲染选项、大小信息、分层顺序和日期中的一项或多项。所接收的衣服网格表示如装配到模板人体网格上的3d多边形网格。衣服网格和人体网格的来源可以包括用于捕获图像、扫描材料的任何适当来源,或可以用于创建网格的任何软件。来源可以包括但不限于相机、录像机、3d扫描器、3d艺术家的数字授权工具以及公共和/或私人可访问的3d网格库(例如,google3d、turbosquid、cgtrader)。在一些示例中,可以使用设备来捕获可以通过软件变换成网格的信息数据。

变形引擎120可以包括映射模块121、长度调整模块122和重构模块123。变形引擎120可以被配置成用于从输入接口110接收至少一个衣服网格、模板人体网格(即,衣服网格装配到其上的人体网格)和目标人体网格。在一些示例中,变形引擎120可以被配置成用于基于用户指定人体测量结果根据模板人体网格生成目标人体网格。变形引擎120可以被配置成用于通过几何变形算法将衣服网格变形到目标人体网格上,从而使得经变形的衣服网格表示装配在目标人体上的重新成形的衣服。变形引擎120可以被配置成用于向输出接口140提供一个或多个经变形的衣服网格。在一些示例中,变形引擎120可以被配置成用于向分层引擎130提供两个或更多个经变形的衣服网格。

映射模块121可以被配置成用于从输入接口110接收一个或多个衣服网格、目标人体网格和模板人体网格。映射模块121可以被配置成用于计算从(多个)衣服网格的每个顶点到模板人体网格上处于顶点的预定阈值内的最近点的映射。映射模块121可以被配置成用于通过包括最靠近(例如,在预定阈值内的)衣服网格顶点的其他衣服网格顶点来增大映射。映射模块121可以为每个经标识的最近衣服网格顶点和每个经标识的最近模板人体网格顶点分配权重。映射模块121可以通过将衣服网格顶点限定为模板人体网格上的最近点与最近的其他衣服网格顶点的加权和来映射每个衣服网格顶点。在构造了到模板人体网格顶点的映射之后,映射模块121则可以基于模板人体网格与目标人体网格之间的预定映射来确定衣服网格顶点相对于目标人体网格顶点的位置。然后,映射模块121可以输出具有映射到目标人体网格上的顶点的衣服网格。映射模块121可以对所接收的每个衣服网格重复映射过程。

长度调整模块122可以被配置成用于从映射模块121接收(多个)经映射的衣服网格、模板衣服网格和目标人体网格,并且可以对(多个)经映射的衣服网格执行长度调整过程。长度调整过程可以被配置成用于调整经映射的衣服网格的长度,从而使得可以相对于模板人体网格的长度而与目标人体网格的长度成比例地缩放经映射的衣服网格的长度。长度调整模块122可以被配置成用于应用对(多个)经映射的衣服网格的缩放变换以便调整衣服网格长度。长度调整模块122还可以应用碰撞检测和响应过程以便避免经长度调整的衣服网格与目标人体网格之间的相交。然后,长度调整模块122可以输出经长度调整的衣服网格。长度调整模块122可以对所接收的(经映射的)每个衣服网格重复长度调整和碰撞避免过程。

重构模块123可以被配置成用于从长度调整模块122接收(多个)经长度调整的衣服网格,以及目标人体网格和装配到模板人体网格上的(多个)原始衣服网格。重构模块123可以被配置成用于生成(多个)经重构的衣服网格,所述经重构的衣服网格解决经长度调整的衣服网格的最终形状以便形成(多个)经变形的衣服网格。为了解决最终形状,重构模块123可以被配置成用于消除衣服网格中的局部缺陷,比如,自相交。在一些示例中,重构模块123可以被配置成用于执行基于拉普拉斯算子的重构过程以便产生衣服网格顶点(在映射和长度调整之后)相对于衣服网格(即,所接收的装配到模板人体网格上的衣服网格)的原始形状的最终位置。重构模块123还可以应用碰撞检测和响应过程以便避免经重构的最终衣服网格与目标人体网格之间的相交。然后,重构模块123可以输出经变形的衣服网格。重构模块123可以对所接收的每个(经长度调整的)衣服网格重复重构和碰撞避免过程。在一些示例中,(多个)经变形的衣服网格可以存储在数据存储设备190中。

通常,变形引擎120可以从输入接口110接收衣服网格并且可以(经由模块121至123)对衣服网格进行处理,从而使得输出衣服网格(在保持相同紧绷程度的同时)可以相对于目标人体网格的形状而变形,保持输入衣服网格的整体长度和几何细节并且可能没有自相交并且与目标人体网格没有相交。如本文中所讨论的,变形引擎120可以在不使用物理布料模拟技术的情况下执行变形过程。相反,由模块121至123执行的过程表示用于模拟将衣服装配在目标人体上的几何技术(即,几何变形算法)。以下关于图7而进一步描述变形引擎120。

分层引擎130可以包括套缩模块131、扩展模块132和形状恢复模块133。在一些示例中,分层引擎130可以被配置成用于从输入接口110接收两个或更多个衣服网格以及目标人体网格。在一些示例中,分层引擎130可以被配置成用于从变形引擎120接收两个或更多个经变形的衣服网格。所接收的衣服网格(经变形的衣服网格)可以表示单独装配到目标人体网格上的衣服。分层引擎130可以被配置成用于根据预定分层顺序将衣服网格(经变形的衣服网格)分层到目标人体网格上以便生成共同装配到目标人体网格上而在经分层的衣服网格之间没有相交的经分层的衣服网格集合。在一些示例中,预定分层顺序可以是例如经由用户界面150接收的用户指定顺序。在一些示例中,预定分层顺序可由分层引擎130确定。在一些示例中,衣服网格可以包括指示期望分层顺序的信息。分层引擎130可以被配置成用于向输出接口140提供经分层的衣服网格集合。

套缩模块131、扩展模块132和形状恢复模块133可以被配置成用于以与预定分层顺序相关联的先后顺序来处理衣服网格。预定分层顺序可以表示衣服网格相对于目标人体网格从距离目标人体网格的最近层到距离目标人体网格的最外面(即,最远)层的安排。模块131至133中的每个模块可以被配置成用于关于先后顺序而处理内部衣服网格(所分配的预定分层顺序中除了最外面衣服网格之外的所有网格)。在一些示例中,(内部衣服网格的)先后顺序可以包括从下一个最外面层到最里面层进行处理。

套缩模块131可以被配置成用于从例如输入接口110和/或变形引擎120接收目标人体网格和所述两个或更多个衣服网格。套缩模块131还可以被配置成用于从例如输入接口110、用户界面150和/或数据存储设备170接收预定分层顺序。套缩模块131可以被配置成用于将所有内部衣服网格(所分配的预定分层顺序中除了最外面衣服网格之外的所有网格)套缩到目标人体网格上。对于每个内部衣服网格,套缩模块131可以被配置成用于将内部衣服网格的顶点映射到目标人体网格上的最近位置(即,在预定阈值内)上。然后,套缩模块131可以输出经套缩的当前衣服网格(即,根据内部网格处理顺序序列处理的当前衣服网格)。

扩展模块132可以被配置成用于接收(多个)外部衣服网格(即,除了当前内部衣服网格之外根据预定分层顺序更远离当前内部衣服网格的衣服网格)。扩展模块132可以被配置成用于沿着对应法线方向稍微扩展(即,根据预定量)(多个)外部衣服网格。扩展可以为当前内部网格用于腾出地方以便塞在(多个)外部网格之内。然后,扩展模块132可以输出(多个)经扩展的衣服网格。

形状恢复模块133可以被配置成用于接收经套缩的当前衣服网格(从套缩模块131)以及(多个)经扩展的外部衣服网格(从扩展模块132),并且将经套缩的内部衣服网格的形状朝着其原始形状恢复。形状恢复模块133可以被配置成用于基于当前衣服网格(在套缩之前)的原始形状产生经套缩的衣服网格的顶点的最终位置。形状恢复模块133可以被配置成用于执行形状恢复,同时相对于(多个)经扩展的外部衣服网格而对经形状恢复的(当前)衣服网格执行碰撞检测和响应过程。可以执行碰撞检测/响应过程以便避免经重构的(当前)内部衣服网格与目标人体网格之间以及经重构的内部衣服网格与经扩展的外部网格之间的相交。然后,形状恢复模块133可以输出经形状恢复的当前衣服网格(即,根据内部网格处理顺序序列处理的当前衣服网格)。

模块131至133可以被配置成用于对每个内部衣服网格重复处理以便形成经分层的衣服网格集合。在一些示例中,经套缩的衣服网格、经扩展的衣服网格、经形状恢复的衣服网格和/或所接收的衣服网格可以存储在数据存储设备190中,例如,至少在由分层引擎130执行的分层过程期间。

通常,分层引擎130可以接收两个或更多个衣服网格、目标人体网格和预定分层顺序,并且可以(经由模块131至133)对衣服网格进行处理,从而使得从第二最外面层开始到最里面层使内部衣服网格迭代地变形(一次一个衣服网格)。在每次迭代时,被变形的衣服可以稍微收缩以便解决与(多个)外部衣服网格的相交。以下关于图16而进一步描述分层引擎130。

输出接口140可以表示电子设备上被配置成用于输出一个或多个3d多边形衣服网格(即,表示(多件)衣服的(多个)3d多边形网格)和一个或多个人体网格(即,表示各种形状的(多个)人体的(多个)3d多边形网格)的任何电子设备或应用。输出的衣服网格可以是表示如装配到目标人体网格上的至少一个3d多边形网格的(多个)经变形和/或经分层衣服网格。(多个)经变形、经分层的衣服网格的目的地可以包括但不限于渲染引擎(比如,渲染引擎180)、显示器(比如,显示器170)、数据存储设备(比如,数据存储设备190)、摄像机、3d打印机、3d艺术家的数字授权工具和/或公共或私人可访问的3d网格库。

数据存储设备190可以是适合于存储多边形网格(例如,(多个)目标人体网格、(多个)模板人体网格、(多个)输入衣服网格、(多个)经变形的衣服网格、经分层的衣服网格集合)、预定分层顺序、数据或用于执行本文中所描述的功能中的任何一项或多项功能的指令(例如,软件)的任何设备或设备组合。数据存储设备190可以包括任何适当的非瞬态计算机可读存储介质,包括但不限于固态存储器、光学介质和磁性介质或其组合。

可选用户界面150可以是适合于用户向系统100提供数据或信息(例如,分层顺序、对变形和/或分层的选择、对用于控制变形和/或分层处理的参数的输入、显示偏好、渲染偏好等)的任何设备或设备组合。可选用户界面150可以包括但不限于物理键盘、虚拟键盘、相机、智能电话、平板设备、触摸屏、计算机鼠标、扬声器、相机、麦克风、字母数字输入设备、光标控制设备或其任何组合。在一些示例中,可选用户界面150可以与系统100的其他组件(比如,显示器170)组合。

可选显示器170可以是适合于显示3d多边形网格(包括相对于目标人体网格的经变形和/或经分层的衣服网格)的任何设备或设备组合。可选显示器170可以包括但不限于触敏显示器、阴极射线管显示器、发光二极管显示器、电致发光显示器、等离子体显示面板、液晶显示器、有机发光二极管显示器等。

可选网络接口160可以是适合于使用有线连接(例如,以太网)和/或无线连接(例如,wifi)来为系统100的组件提供电子通信的任何设备或设备组合。作为示例但不是通过限制的方式,可选网络接口160可以包括网络接口卡(nic)(也被称为网络接口控制器)、网络适配器、局域网(lan)适配器、无线nic(wnic)或其组合。可选网络接口160可以与自组织网络、个域网(pan)、局域网(lan)、wan、城域网(man)或互联网的一个或多个部分或其任何组合通信。

可选渲染引擎180可以是适合于产生经变形和/或经分层的衣服网格和目标人体网格的经渲染帧以供离线或实时观看的任何设备或设备组合或电子设备上应用。在一些示例中,可选渲染引擎180可以接收经修改(经变形和/或经分层)的衣服网格连同其他数据(比如,化身模型、背景场景、配饰等)以便生成经渲染帧。可选渲染引擎180可以包括但不限于专用显卡(也被称为独立显卡)、通用图形处理单元(gpgpu)、与系统100远程定位的图形处理器(gpu)或其组合。用于进行渲染的软件可以采用任何数量的不同技术来获得最终图像,包括但不限于跟踪、光栅化(包括扫描线渲染)、光线投射、光线跟踪、辐射度算法或其组合。

系统100可以包括用于执行本文中所描述的功能的任何适当硬件和/或软件组件。

本文中的说明的一些部分就算法和对信息的操作的符号表示方面对实施例进行了描述。这些算法描述和表示由数据处理领域中的技术人员常用来有效地将它们的工作实质传达给本领域中的其他技术人员。尽管在功能上、计算上或逻辑上描述了这些操作,但是所述操作应当被理解为由计算机程序或等效电路、微代码等实施。此外,将操作安排称为模块也已多次证明是方便的,并不失一般性。可以在专用软件、固件、专门配置的硬件或其任何组合中将所描述的操作和其相关联模块具体化。

本领域的技术人员将理解,系统100可以配置有更多或更少模块以便进行本文中参照图2、图3a至图3c、图7和图16而描述的方法。如在图2、图3a至图3c、图7和图16中所展示的,所示出的方法可由处理逻辑(例如,如图21中的处理逻辑2104)执行,所述处理逻辑可以包括硬件(例如,电路系统、专用逻辑、可编程逻辑、微代码等)、软件(比如,在处理设备上运行的指令)或其组合。在一个实施例中,图2、图3a至图3c、图7和图16中所示出的方法可由与系统100的组件120和130相关联的一个或多个专业处理组件执行。

图2是与系统100(图1)相关联的用于进行衣服网格变形和/或衣服网格分层的示例方法的流程图。在图2中,应当理解的是,步骤中的一些步骤可以与其他步骤或步骤组合一起由系统100同时执行,可以以与所示出的顺序不同的顺序来执行,或者所述步骤中的一些步骤可以省略(根据系统100是否执行变形和/或分层)。

在步骤202处,可以例如由输入接口110接收目标人体网格。在一些示例中,在步骤202处,还可由输入接口110接收模板人体网格。例如,可以在将把至少一个衣服网格从模板人体网格变形到目标人体网格上时接收模板人体网格。在步骤204处,可由输入接口110接收至少一个衣服网格。在一些示例中,可以接收单个衣服网格以供变形引擎120进行变形。在一些示例中,可以接收两个或更多个衣服网格以供由分层引擎130进行分层。在一些示例中,可以接收两个或更多个衣服网格以供(由变形引擎120)进行变形并(由分层引擎130)进行分层。在一些示例中,在步骤206处,可以例如由可选用户界面150接收分层顺序。在一些示例中,可以经由从数据存储设备190中进行检索来获得分层顺序。在一些示例中,系统100可以(经由输入接口110和/或可选用户界面150)接收对与(多个)所接收的衣服网格相关联的变形和/或分层的指示。

在步骤208处,(多个)所接收的衣服网格可由变形引擎120变形到所接收的目标人体网格上。例如,当接收到用于将(多个)衣服网格变形到目标人体网格上的指示时,步骤202和204可以继续到步骤208。变形引擎120可以使用几何变形算法来使装配到模板人体网格上的(多个)衣服网格变形,从而使得(多个)经变形的衣服网格装配到目标人体网格上。以下关于图7而进一步描述步骤208。在一些示例中,步骤208可以继续到步骤210。在一些示例中,步骤210可以省略,并且步骤208可以继续到步骤212(在所述步骤处,(多个)经变形的衣服网格可以形成(多个)经修改的衣服网格)。

例如,图5a至图5f展示了由变形引擎120执行的用于将衣服网格变形到目标人体网格上的示例变形过程。图5a展示了可以在输入接口110处接收的类型的模板人体网格。图5b展示了可以在输入接口110处接收的类型的原始衣服网格。在图5b中,衣服网格装配到图5a中所示出的模板人体网格上。图5c展示了图5b的原始衣服网格和图5a的模板人体网格的组合。

图5d展示了不同于图5a的模板人体网格的目标人体网格(例如,具有可能与不同大小和/或姿势相关联的不同形状)。图5e展示了图5b的根据变形引擎120的变形过程而被变形成适合图5d中所示出的目标人体网格的原始衣服网格。图5f展示了图5e的与图5d的目标人体网格组合的经变形的衣服网格。

在步骤210处,可由分层引擎130将所接收的两个或更多个衣服网格分层到目标人体网格上。在一些示例中,当接收到用于将衣服网格分层到目标人体网格上的指示时,步骤202至206可以继续到步骤210(同时省略步骤208)。在一些示例中,当接收到用于将衣服网格变形到目标人体网格上以及用于将(经变形的)衣服网格分层到目标人体网格上的指示时,步骤202至208可以继续到步骤210。分层引擎130可以根据分层顺序将衣服网格分层到目标人体网格上(步骤206)以便形成无相交的经分层的衣服网格集合。以下关于图16而进一步了描述步骤210。在一些示例中,步骤210可以继续到步骤212。

图6a至图6h展示了本公开的与将衣服网格分层到目标人体网格上相关的方面。图6e展示了图6a的在不执行分层引擎130的分层过程的情况下分层有图6b至图6d的(单独装配到目标人体网格上的)衣服网格的目标人体网格的比较示例。插图6f显示在网格之间可能发生严重相交。图6g展示了根据分层引擎130的分层过程将图6b至图6d的相同衣服网格分层到图6a的目标人体网格上。插图6h显示分层过程生成相同衣服网格的如相比于图6f的无相交分层。

在步骤212处,可以向输出接口140输出(多个)经修改的衣服网格。在一些示例中,在步骤208处(在省略步骤210的同时)生成的(多个)经变形的衣服网格可以表示(多个)经修改的衣服网格。在一些示例中,在步骤210处(在省略步骤208的同时)生成的经分层的衣服网格集合可以表示经修改的衣服网格。在一些示例中,通过步骤208和210的组合生成的经分层和经变形的衣服网格集合可以表示经修改的衣服网格。

在一些示例中,可以在可选步骤214中例如由可选渲染引擎180渲染(多个)经修改的衣服网格。在一些示例中,在可选步骤216处,可以例如经由可选显示器170显示所输出的(多个)经修改(或可选地,经渲染)的衣服网格。

转到图3a,流程图展示了本公开的包括衣服变形和衣服分层过程两者(经由变形引擎120和分层引擎130两者)的另一个示例。示例过程的目标可以是使(在步骤204中接收的)装配到一个或多个模板人体网格上的衣服网格集合变形到(在步骤202中接收的)目标人体网格上(即,从而使得经变形的衣服网格装配到目标人体网格上)并且以(在步骤206中接收的)所分配的分层顺序分层在目标人体网格上。

在一些示例中,所分配的分层顺序可以是用户指定的分层顺序206。在一些示例中,分层顺序可由供应商预先确定或者通过与衣服网格相关联的数据来确定。在使用用户指定的分层顺序的一些示例中,分层顺序可以完全由用户决定。例如,给定表示衬衫、裤子和夹克的衣服网格。衬衫-裤子-夹克顺序可以意指衬衫塞在裤子之内,并且夹克穿在衬衫和裤子两者之外。

图3a中的过程可以使用(在步骤202处接收的)目标人体网格和(在步骤204处接收的)装配到其对应模板人体网格上的衣服网格集合,并且首先在步骤208处(由变形引擎120)使衣服网格集合变形以便形成经变形的衣服网格集合302。可以使每个经变形的衣服网格302变形,从而使得对应衣服网格(分别地)装配到目标人体网格上。在步骤304处,可以为经变形的衣服网格集合302分配(在步骤206中接收的)分层顺序以便形成衣服网格层。然后,在步骤210处,可由分层引擎130对所分配的经变形的衣服网格层执行分层过程以便形成经变形和经分层(即,经修改)的衣服网格集合306。相应地,可以使经修改的衣服网格集合306变形为好像它们穿在目标人体网格上并且以所分配的分层顺序来分层的状态。

图3b是流程图,展示了本公开的包括由变形引擎120进行的衣服变形的示例(例如,没有由分层引擎130进行的分层)。所述过程可以使用(在步骤202处接收的)目标人体网格以及(在步骤204中接收的)装配到一个或多个对应模板人体网格上的一个或多个衣服网格。在步骤208处,变形引擎120可以对每个衣服网格执行变形过程以便形成一个或多个对应经变形的衣服网格302。可以使每个经变形的衣服网格302变形,从而使得对应衣服网格(分别地)装配到目标人体网格上。在一些示例中,在步骤308处,可以为经变形的衣服网格集合302分配(在步骤206中接收的)分层顺序以便形成具有所分配的分层顺序的(多个)经变形(即,经修改)的衣服网格。相应地,可以使经修改的衣服网格308变形为好像它们以所分配的分层顺序穿在目标人体网格上的状态。

图3c是流程图,展示了本公开的包括由分层引擎130进行的衣服分层的示例(例如,没有由变形引擎120进行的变形)。所述过程可以使用(在步骤202处接收的)目标人体网格以及(在步骤204处接收的)装配到其对应模板人体网格上的衣服网格集合。在一些示例中,目标人体网格可以与(多个)模板人体网格相同。在步骤310处,可以由分层引擎130为衣服网格集合分配(在步骤206中接收的)分层顺序以便形成衣服网格层集合。在步骤210处,分层引擎130可以对衣服网格层执行分层过程,并且然后输出经分层(即,经修改)的衣服网格集合312。

图4a、图4b和图4c展示了可以用于理解本文中的说明的三维多边形网格的各个方面。系统100的输入可以包括表示衣服的形状的一个或多个多边形网格(下文中被称为衣服网格)、表示人体的形状的一个或多个多边形网格(下文中被称为人体网格)。如在图4a中所示出的,多边形网格是指一起近似三维形状(例如,如图4b中所示出的衣服网格)的一系列顶点406、边缘404和面402。所述方法假设衣服网格(图4b)为几何形状,好像其穿在人体上。形状可以从现有技术布料模拟、来自现实生活来源的3d扫描中产生,由3d艺术家或通过任何相关方法创建。人体网格的形状可以从对人体的3d扫描中确定或者可由3d艺术家直接创建。人体可以是真实人体或者人造人体模型。此外,本文中所描述的过程假设衣服网格和人体网格(模板人体网格和目标人体网格两者)不具有自相交并且在衣服网格与人体网格之间不具有相交。本文中,在图形处理中的通常意义下,相交被理解为网格的任何扭曲、拉伸或消失。在图4c中展示了相交的特定示例,其中,如果网格的两个面相交,则或者一个面的两个边缘与另一个面相交408,或者每个面的一个边缘与另一个边缘相交410。

通常,网格可以是任何适当格式(比如,标准数据格式(例如,来自欧特克(autodesk)的部门wavefront技术(wavefronttechnologies)的wavefrontobj))的流形多边形三角网格。可以通过任何熟知的手段来将非三角网格转换成三角网格,并且可以通过任何熟知的手段来将非流形网格转换成流形网格。在一些示例中,当所接收的网格(根据适当的质量度量)被标识为质量较差时,可以通过任何熟知的方法来对其进行重新网格划分。

图7是根据本公开的方面的与系统100(图1)相关联的衣服变形过程的示例方法的流程图。在图7中,应当理解的是,步骤中的一些步骤可以与其他步骤或步骤组合一起由系统100同时执行,或者可以以与所示出的顺序不同的顺序来执行。图7中的步骤可由变形引擎120执行。尽管以下描述了对一个衣服网格的变形,但是应当理解的是,可以对装配到一个或多个不同模板人体网格上的将被变形到目标人体网格上的两个或更多个衣服网格执行同一过程。

在步骤702处,可以经由输入接口110接收目标人体网格。在步骤704处,可以经由用户界面110接收模板人体网格以及装配到模板人体网格上的衣服网格。可以向变形引擎120的映射模块121提供目标人体网格、模板人体网格和衣服网格。

接下来,在步骤706至714处,映射模块可以将衣服网格的每个顶点映射到目标人体网格上。通常,将衣服网格顶点映射到目标人体网格上形成经映射的衣服网格。使经映射的衣服网格从(所接收的)原始衣服网格变形成装配到目标人体网格上。变形过程还包括附加长度调整和重构步骤(步骤716至718)。为了清晰起见,通过映射步骤(步骤706至714)生成的变形在本文中被称为经映射的衣服网格。

具体地,在步骤706处,对于衣服网格的每个顶点(例如,顶点vi),映射模块121可以标识模板人体网格的一个或多个模板人体顶点,以及衣服网格的从衣服网格顶点(例如,顶点vi)开始的处于(以下进一步描述的)预定阈值内的一个或多个其他衣服顶点。在步骤708处,映射模块121可以将预定权重应用于(以下进一步描述的)每个经标识的模板人体顶点和每个经标识的其他衣服顶点。

在步骤710处,映射模块121可以基于加权模板人体顶点与加权衣服顶点之和将衣服顶点(vi)映射到经标识的模板人体顶点上。在步骤712处,映射模块121可以基于模板人体网格与目标人体网格之间的映射来确定经映射的衣服顶点相对于目标人体网格的位置。在步骤714中,映射模块121可以对衣服网格的每个顶点重复步骤706至712以便形成经映射的衣服网格。以下进一步详细地描述映射步骤706至714。

在步骤716处,长度调整模块121可以调整经映射的衣服网格的长度以便相对于(原始)衣服网格的原始长度而缩放经映射的衣服网格,同时还避免经长度调整的网格与目标人体网格之间的任何相交。以下关于图15a至图15c而详细地讨论长度调整(步骤716)。

在步骤718处,重构模块123可以对经长度调整(且经映射)的衣服网格执行重构以便形成经变形的衣服网格。重构过程可以包括解决任何局部缺陷(比如,自相交)以便产生衣服网格顶点的最终位置,同时避免(经变形)的最终衣服网格与目标人体网格之间的相交。以下进一步详细地讨论步骤718。在步骤720处,可以例如经由输出接口140输出由变形引擎120生成的经变形的衣服网格。在一些示例中,可以对两个或更多个衣服网格重复步骤702至720。在一些示例中,可以向分层引擎130提供(在步骤720处输出的)两个或更多个经变形的衣服网格以便执行以下在图16中描述的分层过程。

(由变形引擎120执行的)变形过程可以包括基于如在图8中所展示的加权模板人体顶点与加权衣服顶点(步骤706至710)之和来确定(由映射模块121进行的)从衣服网格的顶点中的每个顶点到模板人体网格上的最近点(即,在预定阈值内)的映射。为了清晰起见,因为3d展示可能显得杂乱,所以本公开使用对网格的2d展示。为了更清晰起见,本公开使用虚线来表示人体网格(即,模板人体网格和目标人体网格)的一部分,并且使用实线来表示衣服网格的一部分。

可以通过包括衣服网格上的最近顶点连同模板人体网格上的最近顶点来增大(步骤706至710中的)映射。增大的权重(步骤710)在此被理解为意指包括(如以下所讨论的)附近模板人体顶点和附近衣服顶点两者的权重。未增大的权重在此被理解为意指仅包括附近模板人体顶点的权重。

对顶点的标识(步骤706)可以包括标识如由图9中的半径所展示的距离阈值、如在图10中所展示的测量顶点(vi)上的表面法线(ni)与(在面上或沿着边缘的任何地方处的)点的对准的角度阈值、或两者内的模板人体顶点和其他衣服网格顶点。可以将权重(步骤710)应用于根据幂函数与顶点(vi)与点之间的距离成反比的点集合,也就是说,可以向最大权重分配最近点,等等。在图11a至图11d中展示了幂函数的示例。权重之和可以设置为一(unity)(即,一(one))。

如在图9中所展示的,两个不同的距离阈值可由映射模块121用于将附近模板人体顶点和衣服顶点标识(步骤706)到顶点映射(分别地,半径g和半径b)上。在一些示例中,模板人体顶点的阈值可能大于附近(即,其他)衣服顶点。在如图9中所展示的非限制性示例中,四个模板人体顶点可以包括在顶点vi的映射中,并且可以包括两个其他衣服顶点。经标识的模板人体顶点和衣服网格顶点在图9中被标注有选中标记。

在图10中,展示了45度的角度阈值。如果表面法线偏离大于角度阈值,则可以不将附近模板人体顶点或衣服顶点包括在衣服网格顶点的映射中。在图10中,满足角度阈值的模板人体顶点和(其他)衣服网格顶点(即,在角度阈值内或等于角度阈值)标注有选中标记。未能满足角度阈值的模板人体顶点和衣服网格顶点(即,在角度阈值之外的顶点)标注有十字标记。在一些示例中,对于要包括到由映射模块121对顶点vi进行的映射中的附近模板人体网格顶点和衣服网格顶点,可以满足距离阈值和角度阈值两者。

vgi=(∑wbi,jvbj+∑wgi,jvgj)li,[1]

li=vgi-(∑wbi,jvbj+∑wgi,jvgj)[2]

wbi,j=pow((distb最大-||vi-vj||)/(distb最大-distb最小),kbd)*

pow((ni°nj-dotb最小)/(dotb最大-dotb最小)kbn)[3]

wgi,j=pow((distg最大-||vi-vj||)/(distg最大–distg最小),kgd)*

pow((ni°nj–dotg最小)/(dotg最大-dotg最小),kgn)[4]

∑wbi,j+∑wgi,j=1[5]

∑wbi,j=wb和[6]

∑wgi,j=wg和[7]

vx0,=(∑wb0,jvxb0,j+∑wg0,jvxg0,j)+lx0

vx1,=(∑wb1,jvxb1,j+∑wg1,jvxg1,j)+lx1

vxn-1,=(∑wbn-1,jvxbn-1,j+∑wgn-1,jvxgn-1,j)+lxn-1[8]

vy0,=(∑wb0,jvyb0,j+∑wg0,jvyg0,j)+ly0

vy1,=(∑wb1,jvyb1,j+∑wg1,jvyg1,j)+ly1

vyn-1,=(∑wbn-1,jvybn-1,j+∑wgn-1,jvygn-1,j)+lyn-1[9]

vz0,=(∑wb0,jvzb0,j+∑wg0,jvzg0,j)+lz0

vz1,=(∑wb1,jvzb1,j+∑wg1,jvzg1,j)+lz1

vzn-1,=(∑wbn-1,jvzbn-1,j+∑wgn-1,jvzgn-1,j)+lzn-1[10]

方程[1]指由映射模块121进行的对附近模板人体顶点的映射(步骤706至712)。可以对附近模板人体顶点给予比附近衣服顶点更高的偏好以便主要通过与附近模板人体网格的偏移来限定衣服网格。因此,在模板人体网格被变形到其新形状(作为目标人体网格)上之后,衣服网格也可以变形到与目标人体网格不相交的新形状上。然而,可以包括附近衣服网格顶点本身(即,由于增大权重)以便阻止经重构的衣服网格变得自相交。图12展示了这样的一种可能情况,其中,衣服网格包括顶点vi附近像褶皱的衣服细节。这种细小细节(即,褶皱)可能由彼此非常接近的一些衣服顶点形成。当仅应用非增大的权重方案时,褶皱有可能变得自相交(或“套缩”)。

方程[1]和[2]展示了加权映射方案的概念。每个顶点vi可以是其相邻人体顶点(即,vbj)与衣服顶点(即,vgj)的加权平均值加上拉普拉斯向量li。可以使用模板人体网格顶点和衣服顶点的顶点位置通过方程[2]来预先计算拉普拉斯向量。对于所有顶点,方程[1]形成可以在最小二乘方的意义上通过众所周知的封闭解(例如,qr分解)来求解的三个线性拉普拉斯系统(每个维度一个)。以下关于方程[8]、[9]和[10]而详细地讨论这三个线性拉普拉斯系统。拉普拉斯向量为(通过方程[2]预先计算的)常数。目标人体顶点的顶点可以输入到方程[1]的系统中,并且可以对衣服顶点的位置进行求解。

方程[3]和[4]展示了映射模块121可以如何计算附近顶点到顶点vi的权重(步骤710)。在一些示例中,权重方程可以将最高权重应用于最靠近vi且具有多半对准的表面法线的附近顶点,并且反之亦然。方程[3]和[4]是针对附近模板人体顶点(方程[3])和附近衣服网格顶点(方程[4])的两个不同的权重方程。

参照方程[3]和[4],“pow”是幂函数(即,pow(x,d)=xd),其中,distb最小和distb最大分别表示从vi到距离阈值(即,图9中的半径b)内的附近模板人体顶点的最小和最大距离。同样,distg最小和distg最大分别表示从vi到距离阈值(即,图9中的半径g)内的附近衣服顶点的最小和最大距离。如在图11a至图11d中所展示的,幂函数可以用于将距离映射到在零到一的范围内并且采用相反(即,距离越小,权重越大)且比线性更陡的方式的权重值上。在一些示例中,可以使用8次幂函数。可以通过用表面法线的点积来替代距离值从而将相同权重函数应用于表面法线偏移。

方程[5]、[6]和[7]展示了对权重的归一化。方程[5]对所有权重进行求和并将它们设置为等于一。方程[6]将附近模板人体顶点的权重归一化,并且同样,方程[7]将附近衣服顶点的权重归一化。方程[5]和[6]控制附近模板人体顶点相比于附近衣服顶点的权重的权重。在一些示例中,可以使用wb和:wg和=4:1的权重。

所有顶点的权重方程(方程[1]和[2])一起形成如在方程[8]、[9]和[10]处所示出的三个线性拉普拉斯系统(每个维度一个)。可由映射模块121在最小二乘方的意义上对拉普拉斯系统进行求解(步骤710)。最小二乘解可以包括雅克比迭代法或线性代数法,比如,qr分解。雅克比迭代法通常比线性代数法更低效(即,更慢),但是更万能,因为在迭代期间可以使用附加约束条件。vx、vy和vz用于分别表示顶点的x、y和z坐标。此外,“vxi”是指第i个衣服顶点的x分量;“wbij,”是指第i个衣服顶点的第j个邻近衣服顶点的权重;“vxbij”是指第i个衣服顶点的第j个邻近衣服顶点的x分量;“lxi,”是指第i个衣服顶点的拉普拉斯向量的x分量;等等。

参照图8,映射可以与可能处于面上的任何地方或者沿着边缘的附近顶点(而不是点)相关联。图8中的箭头总体上示出了每个衣服顶点和人体顶点处的表面法线。为了清晰起见,虽然未示出表示映射的箭头,但是应当理解的是,一个箭头将vi连接至每个经映射的顶点。例如,对于图8的非限制性示例,可能存在六个这种箭头,四个箭头指向四个附近人体顶点,并且两个箭头指向两个附近衣服顶点。在经映射的顶点上还示出了模拟权重系数集合以便展示示例权重。

在映射到模板人体网格上(步骤710)之后,可以确定衣服网格顶点相对于目标人体网格的位置(步骤712)。参照图5a至5f,在模板人体网格(图5a)与目标人体网格(图5d)之间可能存在一对一映射。模板人体网格与目标人体网格之间的一对一映射被理解为指这两个网格具有相同连接性,即,相同数量和顺序的顶点、面和边缘。因此,模板人体网格(图5a)上的顶点的新位置映射到目标人体网格(图5d)上,并且通过雅克比迭代法以简单且有效的方式来计算经变形的衣服网格顶点的新位置。例如,每个面可以结合相同顶点(例如,当其全部为三角形时,相同的三个顶点),并且每个边缘可以连接相同的两个顶点。也就是说,这两个网格可能仅在其顶点的位置上不同。

在模板人体网格与目标人体网格之间不存在一对一映射的一些示例中,目标人体网格可由变形引擎120变形为向模板人体网格和目标人体网格给予相同连接性的模板人体网格版本(或反之亦然)。

参照图13,在一些示例中,可以通过根据人体测量使通用人体网格1302(例如,所有人体的平均水平)变形来生成目标人体网格1306。可以通过现有变形技术(比如,可从纽约市人体实验室公司(bodylabs,inc.)获得的bodykit)来完成人体变形过程。因此,可以通过可用于使通用人体网格1302变形的特定人体测量集合来确定目标人体网格。可以例如从用户输入端接收人体测量集合。对通用人体网格1302的变形还可以涉及如在重置的人体网格1304中所展示的微小姿势改变。

在一些示例中,为了避免经映射的衣服网格的所产生的新形状与目标人体网格相交,变形引擎120可以在对经映射的衣服网格的重构期间使用放大过程。如在图14a至图14c中所展示的,可以例如通过沿着测地圆盘(geodesicdisk)之上的平均法线使模板人体网格的每个顶点移动很小的距离来创建稍微放大状态的人体网格(即,经放大的人体网格)。模板人体网格上的最近点的位置可以基于经放大的人体网格,而不是原始网格。放大过程是解决衣服映射(变形)之后衣服网格与目标人体网格之间的相交的简单且有效的方式。

图14a展示了衣服网格1402和模板人体网格1404-a彼此靠近的挑战性情况。在使模板人体网格1404-b变形(见图14b)之后,在更弯曲的部分处,在这两个网格之间可能存在相交。可以通过以下方式来有效解决相交:沿着法线方向临时放大经变形的人体网格以便创建如图14c中所示出的经放大的人体网格1404-c。可以使衣服网格1402相对于经放大的人体网格1404-c而变形。在一些示例中,可以将放大距离保持很小以便使经变形的衣服网格与经放大的人体网格之间的距离不明显。

长度调整模块122可以调整经映射的衣服网格的垂直长度(步骤716)。可以调整经映射的衣服网格以便补偿映射过程期间的衣服加长效果。参照图15a至图15c,可以相对于模板人体网格的长度而与目标人体网格的长度成比例地缩放经映射的衣服网格的长度。例如,如在图15b中所示出的,目标人体网格比图15a的模板人体网格更高。在映射期间,经映射的衣服网格也可能变得更长。可以将这种情况视为相比于典型试衣的不真实加长。

为了调整经映射的衣服网格的长度,可由长度调整模块122将垂直方向上的缩放变换(步骤716)应用于经映射的衣服网格(步骤714)以便将经映射的衣服网格的整体长度缩放回到像在所接收的衣服网格中的原始长度(步骤704),同时保持经映射的衣服网格的顶部固定。

对于每个衣服顶点{xi,yi,zi}:

yi=y最大-(y最大–yi)/(y最大-y最小)*(yori最大-yori最小)[11]

参照方程[11],正垂直方向沿着正y轴(即,y越大,越高)。yori最大和yori最小表示原始衣服网格的最大和最小y值;并且y最大和y最小表示经映射的衣服网格的最大和最小y值。因此,原始衣服网格和经映射的衣服网格的顶部的y值分别为yori最大和y最大。所述方程的目的是将经映射的衣服网格的y值范围重新缩放到原始衣服网格的范围中,同时保持衣服网格的顶部的y值不变。长度调整方案可以是无参数的。其可以将原始衣服网格和经映射的衣服网格用作输入并且可以输出经长度调整的衣服网格。

图15a展示了所接收的装配到模板人体网格上的衣服网格。图15b展示了在没有长度调整的情况下映射到更高目标人体网格上的衣服网格。在图15a和图15b两者中的衣服网格的顶部相对于线a-a保持固定。图15b中的经映射的衣服网格的长度已经增大至线b-b(其是如在图15a中所示出的原始衣服网格的长度)下面。图15c展示了映射到图15b的同一更高人体网格上的衣服网格,但长度缩放回到其沿着线b-b的原始值以便形成经长度调整的衣服网格。长度调整模块122可以同时对目标人体网格使用碰撞检测和响应过程(在步骤716期间)以便避免经长度调整的衣服网格与目标人体网格之间的相交。

重构模块123可以对经长度调整的衣服网格进行重构(步骤718)以便移除在映射和长度调整过程期间形成的任何局部缺陷。例如,在映射过程结束时,很大程度上解决了经映射的衣服网格的形状。然而,可能仍然存在如自相交等局部缺陷。为了移除这些缺陷,可由重构模块123执行基于拉普拉斯算子的重构过程(步骤718)。首先计算经长度调整的衣服网格上的每个经长度调整的衣服网格顶点的拉普拉斯坐标(即,每个顶点与其相邻顶点的平均位置之差)。基于拉普拉斯坐标,可以使用雅克比迭代法来产生衣服网格顶点的最终位置(从经长度调整的衣服网格中产生的顶点位置开始)以便形成经重构的衣服网格。可以同时对目标人体网格执行碰撞检测和响应过程以便避免经重构的衣服网格与目标人体网格之间的相交。最终重构的衣服网格形成经变形的衣服网格。

通常,重构模块123的碰撞检测和响应过程可以使用三个输入:移动对象、移动对象的目标位置和静态对象。在移动对象和静态对象之间可能发生碰撞。移动对象可以是从原始形状朝着其经变形(经映射)的形状移动的衣服网格。静态对象可以是目标人体网格。碰撞检测/响应过程可以包括迭代过程。在每次迭代时,移动对象将朝着其目标位置移动。实际上,这意味着,对于移动对象的每个顶点,向其给予从其当前位置到其目标位置的移动路径。然而,移动路径可能与新人体网格(即,静态对象)的某个面(或多个面)碰撞。如果发生碰撞,则移动顶点在第一碰撞点处停下来。在下一次迭代时,对于发生碰撞的那些移动顶点,它们将在上一次迭代时的其停止位置处开始。对于未发生碰撞的那些移动顶点,它们已经到达其目标位置并且将不再移动。当达到时间限制或所有顶点已经到达其目标位置(意味着顶点将不再移动)时,迭代可以停止。在一些示例中,重构模块123可以使用基于离散定向多面体(k-dop)的空间分隔技术来加速所述过程以便找到新人体网格的可能被移动路径撞击的潜在三角形。

总之,在变形过程(图7)结束时,经变形的衣服网格相对于目标人体网格的形状而变形。相比于所接收的衣服网格,经变形的衣服网格保持与目标人体网格相同的紧绷程度,保持整体长度并且保持几何细节。经变形的衣服网格没有自相交并且与目标人体网格没有相交。保持了原始衣服网格与模板人体网格之间的映射。所述映射可以理解为与附近化身(即,人体)部位的偏移或“拉普拉斯算子”。例如,紧身布料可通过与模板人体网格的短且均匀的偏移来限定,而宽松布料可通过更大且更复杂的偏移来限定。然后,通过这种偏移来自然限定如褶皱和悬垂性等细节。映射变形过程表示基于几何的方式,所述方式在不使用基于物理的技术(比如,物理布料模拟)的情况下生成经变形的衣服网格。

现在转到图16,示出了根据本公开的方面的与系统100(图1)相关联的衣服分层过程的示例方法的流程图。在图16中,应当理解的是,步骤中的一些步骤可以与其他步骤或步骤组合一起由系统100同时执行,或者可以以与所示出的顺序不同的顺序来执行。图16中的步骤可由分层引擎130执行。尽管以下描述了对两个或更多个衣服网格的分层,但是应当理解的是,可以对从变形引擎120接收的两个或更多个经变形的衣服网格执行同一过程。

在步骤1602处,可由输入接口110接收目标人体网格。在步骤1604处,可由输入接口110接收各自分别装配到目标人体网格上的多个衣服网格(即,两个或更多个衣服网格)。衣服网格可以采用几何形状,好像它们穿在(即,映射到)目标人体网格上。在一些示例中,衣服网格的形状可以从现有技术布料模拟、来自现实生活来源的3d扫描中产生或由3d艺术家创建。在一些示例中,模板人体网格的形状可以来自对人体的3d扫描或由3d艺术家直接创建,并且可以来自真实人体或人造人体模型。在一些示例中,所有衣服网格和目标人体网格可能不具有任何自相交,并且在衣服网格中的每个衣服网格与目标人体网格之间可能不存在任何相交。然而,在一些示例中,衣服网格之间可能存在相交。

在步骤1606处,可由分层引擎130基于所接收的衣服网格与所接收的目标人体网格之间的距离按从最近层到最远层的先后顺序向所接收的衣服网格中的每个衣服网格分配分层顺序。在一些示例中,可以从可选用户界面150接收分层顺序。在一些示例中,可以预先向每个衣服网格分配分层顺序。在一些示例中,可以从数据存储设备190中检索分层顺序。应当理解的是,对于多件衣服,可能存在多于一个可能的分层顺序,这可能导致不同的分层结果。可以基于衣服相对于目标人体网格的放置而将所接收的每个衣服网格分配给某个层。可以将与目标人体网格具有最小距离(即,离目标人体网格最近)的衣服网格分配给最近层。可以将与目标人体网格具有下一个最小距离的衣服网格分配给下一个更远层。分配可以继续,直到将与目标人体网格具有最大距离(即,离目标人体网格最远)的衣服网格分配给最远层,并且已经按先后顺序将所有衣服网格分配给某个层。

在步骤1608处,由分层引擎130选择根据先后顺序与下一个更远层相关联的衣服网格。在步骤1610处,例如由套缩模块131将所选衣服网格套缩到目标人体网格上。

在步骤1612处,扩展模块132可以相对于法线方向而按预定量(例如,布料厚度)将(多个)外部衣服网格扩展远离目标人体网格以便形成(多个)经扩展的衣服网格。(多个)外部衣服网格表示进一步远离所分配的分层顺序中的当前所选衣服网格的衣服网格。对(多个)外部衣服网格的扩展可以用于补偿将塞到(多个)外部衣服网格之内的所选(内部)网格。

在步骤1614处,形状恢复模块133可以相对于(多个)经扩展的外部衣服网格而对经套缩的衣服网格执行形状恢复。形状恢复将之前套缩的所选网格的形状朝着其原始形状恢复,同时避免与目标人体网格和(多个)经扩展外部衣服网格的碰撞。

在步骤1616处,可以重复步骤1608至1614,直到对所分配的最近层进行分层,以便形成经分层的衣服网格集合。在步骤1618处,可由输出接口140输出经分层的衣服网格集合。

通常,经分层的衣服网格集合根据其在所分配的分层顺序中的位置被装配到目标人体网格上。相应地,分层过程接收分别且单独装配到目标人体网格上的衣服网格,并且使每个衣服网格变形(一次一个),从而使得衣服网格中的所有衣服网格被分层在目标人体网格上,同时解决多个衣服网格(当根据分层顺序组合时)之间的任何相交。分层过程可以生成对每个衣服网格的小规模修改以便在分层期间避免相交。像变形引擎120的变形过程一样,分层引擎130的分层过程可以在不使用物理布料模拟技术的情况下通过几何算法来执行分层过程。

在图6a至图6h处展示了分层过程。分层过程的输入包括表示人体的形状的多边形网格(即,人体网格)(图6a);表示各自单独映射到模板人体网格上的衣服集合的形状的多边形网格集合(即,衣服网格)(图6b至图6d);以及限定从最近层(最靠近目标人体网格)到最远层(最远离目标人体网格)的分层顺序的对衣服集合的先后顺序的分配。

图6e展示了在没有本公开的分层过程的情况下被放在一起的目标人体网格(图6a)和这三个衣服网格(图6b至图6d)的比较示例。插图6f示出了腰部附近具有严重相交的区域。图6g展示了根据本公开的分层系统和方法放在一起的目标人体网格(图6a)和这三个衣服网格(图6b至图6d)。插图6h展示了根据分层顺序(例如,衬衫-裙子-夹克分层顺序)解决了所有相交。

分层过程的目标是将衣服网格分层到新几何形状(即,目标人体网格)上,其方式为可以满足某些标准。第一标准包括在任何衣服网格对之间没有相交。第二标准包括在衣服网格中的每个衣服网格与目标人体网格之间没有相交。第三标准包括经分层的衣服网格保持尽可能接近其原始形状。

在给定分层顺序的情况下,分层过程迭代地一次对一个衣服网格进行分层。在每次迭代时,相对于与一个衣服网格距离更远(即,与目标人体网格具有更大的距离)的所有衣服网格而对所述一个衣服网格进行分层。所述方法可以开始于选择第二最远衣服(步骤1608),并且顺序地前进至下一个更近的衣服,直到对最近的衣服进行分层。例如,在给定衬衫-裙子-夹克分层顺序的情况下,所述方法在第一次迭代时相对于夹克而对裙子进行分层,然后在第二次迭代时相对于裙子和夹克两者而使衬衫变形。

在每次迭代时,可由分层引擎130将待分层的衣服网格表示为所选(内部)衣服网格,并且可以将离所选衣服网格更远的所有衣服网格表示为外部网格。在每次迭代时,分层分三个阶段进行。第一,套缩步骤(步骤1610),其中,将所选衣服网格完全套缩到目标人体网格上。第二,扩展步骤(步骤1612),其中,稍微扩展所有外部网格以便为所选衣服网格腾出地方从而塞到之内。第三,形状恢复步骤(步骤1614),其中,使之前套缩的所选(内部)网格的形状朝着其原始形状恢复,同时避免与目标人体网格和外部网格的碰撞。通常,最远层相对不变(除了扩展步骤之外),而其他层被一次性分层。

例如,假设存在以从最近层到最远层的先后顺序分配的n个衣服层l0、l1、…、ln。初始地,所述层可能彼此相交。分层过程可以假设最外面层(ln)固定(除了通过扩展步骤(步骤1612)而稍微扩展之外)。可以相对于最远层(ln)而扩展第二最远层(ln-1)以便解决与最远层的相交。在这之后,第二最远层(ln-1)应当与最远层没有相交。然后,相对于与第三最远层(ln-2)更远的层(即,第二最远层(ln-1)和最远层(ln))而扩展第三最远层。在此扩展步骤结束时,第三最远层到最远层将全部彼此不相交。可以重复所述过程,直到也扩展了最近衣服层。最终,所有层应当彼此无相交。

在一些示例中,分层过程可以使用将uv参数化、uv坐标和uv映射用于套缩步骤(步骤1610)。作为对准人体网格和衣服网格的结果,仅衣服网格顶点中的一些衣服网格顶点(即,按距离阈值足够靠近人体网格且具有低于阈值的表面法线偏离的衣服网格顶点)明确“知道”要套缩到哪里。例如,参照图17b,这些是标记有箭头的顶点并且本文中被称为经映射的顶点。对于衣服网格顶点中的剩余部分(即,未经映射的顶点),可以从附近衣服顶点的平均位置中确定其目标套缩位置。因为结果可能不正确,所以无法直接确定其3d位置的平均值。相反,平均值包括其在衣服网格上的位置,所述位置被描述为uv坐标。因此,可以使用对衣服网格的uv映射。对于uv映射,uv坐标的任何组合的平均值仍应当处于uv映射之内。这意味着uv映射的形状可能是凸形的。凸形形状的最简单形式是圆盘(即,一张图表并且具有相当于圆圈的边界)。可以通过连续且迭代地对uv值求平均来执行对uv值的拉普拉斯平滑过程,直到达到收敛或时间限制。

套缩步骤(步骤1610)的目标可以是将所选衣服网格完全套缩到目标人体网格上。图17a至图17c展示了套缩过程。图17a示出了衣服网格1702(示出为实线)和目标人体网格1704(示出为虚线)。应当理解的是,目标人体网格1704面向左侧,并且所选衣服网格1702被定位在进一步远离目标人体网格1704的位置处。对于每个目标人体网格顶点1706,给出了范围为从0到1的一维uv参数化(本文中被进一步称为uv坐标)。因为映射受对所选衣服网格1702和目标人体网格1704上的表面法线的对准进行测量的距离和角度阈值的影响,所以对于一些顶点,映射可能为空(例如,离人体网格太远的那些顶点)。

第一,(由套缩模块131)发现从所选衣服网格顶点中的每个衣服网格顶点到目标人体网格1704上的最近点的映射。图17b示出了预定阈值(为了清晰起见,未示出阈值)内的所选衣服网格顶点被映射到目标人体网格1704上的最近点上并且延续相应一维uv坐标。使用箭头来标记这些衣服网格顶点并且指示了其延续的uv坐标。在一些示例中,满足预定阈值的衣服网格顶点可以仅仅是所有衣服网格顶点的子集。可以通过常规插值/外推方案来向不满足预定阈值的衣服网格顶点(即,空映射)给予uv坐标。在0与1之间的任何实数(即,一维uv坐标)标识目标人体网格上的唯一位置。

如在图17c中所示出的,衣服网格顶点可以根据其延续的uv坐标而映射到目标人体网格1704上以便形成具有顶点1708的经套缩的衣服网格1702’。uv映射恰好包括一个图表,并且边界相当于圆圈并且可以使用已知参数化技术通过uv映射来生成。在一些示例中,可以使用对顶点的uv值的拉普拉斯平滑通过外推来向具有空映射的顶点给予其uv坐标。因为uv坐标限定了目标人体网格上的唯一位置,所以可以通过根据每个顶点的uv值而将其移动到目标人体网格1704上的相应位置来将所选衣服网格套缩到目标人体网格1704上从而形成经套缩的衣服网格1702’。图18a展示了所选衣服网格1802,并且图18b展示了作为根据步骤1610的经套缩的衣服网格1804的所选衣服网格1802。

在形成经套缩的衣服网格之后,可以沿着法线的方向稍微扩展外部衣服网格中的所有外部衣服网格(步骤16120)以便为经套缩的衣服网格腾出地方从而塞到之内。在一些示例中,扩展的距离可以大致等于经套缩的(内部)衣服网格的布料的厚度。在给定衣服网格的情况下,第一步骤可以是估计每个顶点处的表面法线。对表面法线的估计可以通过对顶点的邻近顶点的三角形法线求平均来执行。在这之后,可以沿着经套缩的衣服网格的每个顶点的表面法线而将所述顶点移动给定距离。图19展示了映射到经扩展的衣服网格1904(步骤1612)上的衣服网格1902。

分层过程进一步包括形状恢复步骤(步骤1614),其中,使之前套缩的衣服网格的形状朝着其原始形状恢复,同时避免与人体网格和更远网格的碰撞。在一些示例中,形状恢复模块133可以使用基于拉普拉斯算子的重构过程。用于对网格的3d形状进行编码的一种技术是通过向每个顶点给予3d位置。可替代地,网格的3d形状可以被编码为每个顶点相对于其邻近顶点的加权平均值的差。这种差被称为拉普拉斯坐标。拉普拉斯坐标也是三维的,但是不限定3d空间中的确切位置。相反,拉普拉斯坐标限定与其邻近顶点的加权平均值的差分向量。拉普拉斯坐标可以被解释为方程。将所有顶点的拉普拉斯坐标放在一起导致线性系统。在最小二乘方的意义上对线性系统进行求解导致顶点的实际3d位置。通常,因为顶点中的一些顶点的3d位置是固定的,所以此最小二乘方问题具有唯一解。

可以(由形状恢复模块133)计算衣服网格的原始形状上的每个衣服网格顶点的拉普拉斯坐标(即,每个顶点与其相邻顶点的平均位置之差)。然后,基于拉普拉斯坐标,可以使用雅克比迭代法来产生衣服网格顶点的最终位置(从经套缩的内部网格的顶点位置开始)。可以同时对目标人体网格和(经扩展的)外部网格进行碰撞检测和响应过程以便避免经套缩的衣服网格与目标人体网格以及更远网格之间的相交。

相应地,可以通过迭代地使经套缩的衣服网格顶点中的每个衣服网格顶点向后移动(根据所述衣服网格顶点的拉普拉斯坐标)来使经套缩的衣服网格朝着其原始形状恢复。目标人体网格和外部衣服网格可以充当碰撞目标,所述碰撞目标可以阻止经套缩的衣服网格完全重新获得其原始形状。经套缩的衣服网格的未被阻挡的部分可以重新获得其原始形状,而经套缩的衣服网格的被阻挡的部分将被阻止重新获得其原始形状。

图20a示出了处于原始形状的所选衣服网格2002-a(实线)以及目标人体网格2004(虚线)。图20b示出了被套缩在目标人体网格2004之内的经套缩的衣服网格2002-b。图20c示出了作为碰撞目标的外部衣服网格2006。如在图20c中可以看到的,经形状恢复的网格2002-c的上部部分已经完全重新获得了其原始形状,但是由外部网格2006通过使用碰撞检测和响应过程来阻挡对经形状恢复的网格2002-c的下部部分的形状恢复。所产生的经分层的衣服网格集合使经形状恢复的网格2002-c似乎塞在外部网格2006之内。

本公开的系统和方法可以包括一个或多个专用计算机(其包括专用硬件和/或软件组件)和/或可以由其实施。为了本公开的目的,专用计算机可以是能够执行算术和/或逻辑运算的可编程机器并且可以被专门编程成用于执行本文中所描述的功能。在一些实施例中,计算机可以包括处理器、存储器、数据存储设备和/或其他公知或新颖组件。这些组件可以物理地连接或通过网络或无线链路连接。计算机还可以包括可以指导对前述组件的操作的软件。计算机可以与相关领域中的技术人员常用的术语一起提及,比如,服务器、个人计算机(pc)、移动设备以及其他术语。应当理解的是,本文中所使用的那些术语是可互换的,并且可以使用能够执行所描述的功能的任何专用计算机。

计算机可以经由一个或多个网络彼此链接。计算机可以是任何多个完全或部分互连的计算机,其中,所述计算机中的一些或所有计算机能够彼此通信。在一些情况下,计算机之间的连接可以是有线的(例如,经由有线tcp连接或其他有线连接)或可以是无线的(例如,经由wifi网络连接)。至少两个计算机可以通过其交换数据的任何连接可以是网络的基础。此外,单独的网络可以能够互连,从而使得一个网络内的一个或多个计算机可以与另一个网络中的一个或多个计算机通信。在这种情况下,所述多个单独的网络可以被可选地考虑为单个网络。网络可以包括例如专用网络(例如,局域网(lan)、广域网(wan)、内联网等)和/或公共网络(例如,互联网)。

图21展示了采用计算机系统2100的示例形式的机器的功能框图,在所述机器内,可以执行用于使机器执行本文中所讨论的方法、过程或功能中的任何一项或多项的指令集。在一些示例中,机器可以连接(例如,联网)至如以上所描述的其他机器。该机器可以以客户端服务器网络环境中的服务器或客户端机器的身份进行操作,或者作为对等(或分布式)网络环境中的对等机器进行操作。机器可以能够(顺序地或以其他方式)执行指定待由所述机器采取以便执行本文中所描述的功能的动作的指令集的任何专用机器。进一步地,虽然仅展示了单个机器,但是术语“机器”还应视为包括单独或联合地执行指令集合(或多个集合)以便执行本文中所讨论的方法中的任何一种或多种方法的任何机器集合。在一些示例中,系统100(图1)可由图21中所示出的示例机器(或这种机器中的两个或更多个机器的组合)实施。

示例计算机系统2100可以包括处理器2102、存储器2106、数据存储设备2122、输入接口2110和输出接口2112,所述组件可以经由数据和控制总线2120彼此通信。在一些示例中,计算机系统2100还可以包括显示器2116和/或用户界面2118。

处理器2102可以包括但不限于微处理器、中央处理单元、专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)和/或网络处理器。处理器2102可以被配置成用于执行本文中所描述的操作的处理逻辑2104。通常,处理器2102可以包括被专门编程有用于执行本文中所描述的操作的处理逻辑2104的任何适当专用处理设备。

存储器2106可以包括例如但不限于存储可由处理器2102执行的计算机可读指令2108的只读存储器(rom)、随机存取存储器(ram)、闪存、动态ram(dram)和静态ram(sram)中的至少一项。通常,存储器2106可以包括存储可由用于执行本文中所描述的操作的处理器2102执行的计算机可读指令2108的任何适当的非易失性计算机可读存储介质。尽管在图21中展示了一个存储器2108,但是在一些示例中,计算机系统2100可以包括两个或更多个存储器设备(例如,动态存储器和静态存储器)。

计算机系统2100可以包括用于与其他计算机直接通信(包括有线和/或无线通信)和/或用于与(多个)网络通信的网络接口2114。在一些示例中,计算机系统2100可以包括显示器2116(例如,液晶显示器(lcd)、触敏显示器等)。在一些示例中,计算机系统2100可以包括用户设备2118(例如,字母数字输入设备、光标控制设备等)。

在一些示例中,计算机系统2100可以包括存储用于执行本文中所描述的操作中的一项或多项操作的指令(例如,软件)的数据存储设备2122。数据存储设备2122可以包括任何适当的非瞬态计算机可读存储介质,包括但不限于固态存储器、光学介质和磁性介质。

术语“计算机可读存储介质”应当视为包括存储一个或多个指令集合的单个介质或多个介质。术语“机器可读取储存媒体”还应当视为包括能够存储或编码供机器执行且使机器执行本公开的方法中的任何一种或多种方法的指令集合的任何介质。

虽然已经就某些实施例而讨论了本公开,但是应当理解的是,本公开不限于此。本文中通过示例的方式解释了实施例,并且存在可以采用的仍将处于本公开的范围内的许多修改形式、变化形式以及其他实施例。

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