确定3D建模对象变形的制作方法

文档序号:26584152发布日期:2021-09-10 18:24阅读:106来源:国知局
确定3D建模对象变形的制作方法
pattern regognition(cvpr),2017.
13.[9]r.hanocka,a.hertz,n.fish,r.giryes,s.fleishman,and d.cohen

or.meshcnn:a network with an edge.in siggraph,2019.
[0014]
[10]eloi mehr,ariane jourdan,nicolas thome,matthieu cord,and vincent guitteny.disconet:shapes learning on disconnected manifolds for 3d editing.in iccv 2019.
[0015]
[11]j.liu,f.yu,and t.funkhouser.interactive 3d modeling with a generative adversarial network.in international conference on 3d vision(3dv),2017.
[0016]
[12]b.l
é
vy and h.zhang.spectral mesh processing.in siggraph asia,2009.
[0017]
然而,仍然存在针对用于使3d建模对象变形的改进的解决方案的需求。


技术实现要素:

[0018]
因此,提供了一种用于确定3d建模对象变形的计算机实现的方法。该方法包括:提供被配置用于推断输入3d建模对象的变形基础的变形基础函数。该方法进一步包括提供第一3d建模对象。该方法进一步包括提供第一3d建模对象的变形约束。该方法进一步包括确定遵守变形约束的第二3d建模对象。确定第二3d建模对象包括计算在第一3d建模对象和第二3d建模对象之间的过渡3d建模对象的轨迹。该轨迹通过将变形基础函数应用于每个过渡3d建模对象的结果的线性组合来使该过渡3d建模对象变形。轨迹减少了损失。损失惩罚了变形的过渡3d建模对象不遵守变形约束的程度。
[0019]
该方法可以包括以下各项中的一个或多个:
[0020]
·
轨迹对应于以下类型的积分公式:
[0021][0022]
其中:
[0023]
οx(0)是第一3d建模对象,
[0024]
οx(.)对应于过渡3d建模对象,
[0025]
οv1(x(.)),...,v
b
(x(.))对应于将变形基础函数应用于过渡3d建模对象的结果,v1(.),...,v
b
(.)是变形基础函数,以及
[0026]
ο对应于线性组合,α1(.),...,α
b
(.)是线性组合的系数;
[0027]
·
计算包括:通过计算朝向第二3d建模对象收敛的中间3d建模对象的序列并减少损失来离散化轨迹;
[0028]
·
计算序列包括:从第一3d建模对象开始,进行以下迭代:
[0029]
ο将变形基础函数应用于在先前迭代时计算出的中间3d建模对象,应用产生矢量;
[0030]
ο在先前迭代时分别通过所产生的矢量的相应线性组合计算出的中间3d建模对象的候选变形之中,确定使损失最小化的候选变形;以及
[0031]
ο选择被应用于当前的中间3d建模对象的所确定的候选变形作为下一个中间建模对象;
[0032]
·
确定使损失最小化的候选变形探索相应线性组合的系数的候选集合,并且在所探索的候选集合之中操作选择,所选择的候选系数集合与所确定的候选变形相对应;
[0033]
·
在系数的每个候选集合的范数小于预定义值的约束下,执行使损失最小化的候选变形的确定;
[0034]
·
范数是l1范数或l2范数;和/或
[0035]
·
提供第一3d建模对象的变形约束包括由用户定义变形约束。
[0036]
进一步提供了一种包括指令的计算机程序,当在计算机上执行该计算机程序时,所述指令使得该计算机执行该方法。
[0037]
进一步提供了一种其上记录有该计算机程序的计算机可读数据存储介质。
[0038]
进一步提供了一种包括耦合到存储器的处理器的计算机,该存储器在其上记录有该计算机程序。
附图说明
[0039]
现在将通过非限制性示例的方式并且参考附图来描述本发明的实施例,其中:
[0040]
图1示出了计算机的示例;
[0041]
图2示出了可以被方法使用的神经网络;以及
[0042]
图3和图4示出了该方法。
具体实施方式
[0043]
提供了用于推断3d建模对象的变形基础的第一计算机实现的机器学习方法。该方法包括提供3d建模对象的数据集。该方法进一步包括学习神经网络。神经网络被配置用于推断输入3d建模对象的变形基础。第一方法可以被称为“学习方法”。
[0044]
这构成了用于使3d建模对象变形的改进的解决方案。
[0045]
显著地,通过学习方法学习的神经网络被配置用于将3d建模对象作为输入并且输出3d建模对象的变形基础。变形基础包括各自形成输入3d建模对象的变形的矢量。这允许获得3d建模对象的许多变形,这是由于可以将基础的矢量进行线性组合,每种可能的线性组合产生3d建模对象的不同变形。该学习方法因此允许增加3d建模对象的变形的可能性。此外,该学习方法允许通过一劳永逸地计算变形基础、通过经学习的神经网络的单个应用来这样做,使得在那之后仅线性组合需要被执行。这允许高效地计算变形,尤其是在计算时间和资源使用方面。还应当注意的是,为了产生变形基础,神经网络不要求3d建模对象的目标变形:神经网络独自产生变形矢量的基础,然后可以将变形矢量进行线性组合以达到输入3d建模对象的目标变形。该学习方法因此具有强大的泛化能力,并且使输入3d建模对象的表现力(expressiveness)最大化。
[0046]
神经网络可以推断出局部变形基础,该局部变形基础可以包括局部变形矢量,即,每个矢量表示输入3d建模对象的局部(例如,小)变形。这允许使3d建模对象在其局部邻域(即,在3d建模对象的附近)现实地变形。换句话说,神经网络在这种意义上输出了令人满意的基础:该基础允许以物理上可接受的方式使输入对象朝着接近的对象变形。
[0047]
此外,在数据集的3d建模对象上学习神经网络,这些3d建模对象至少大多数(例如,全体)是合理的(plausible)3d建模对象。由此,神经网络产生了输入3d建模对象的变形的合理矢量的基础。如先前所讨论的,这些矢量可以被线性地组合,由此例如在输入3d建模对象的局部邻域中产生其合理的变形。
[0048]
此外,所提供的数据集不需要为了学习神经网络来推断输入3d建模对象的合理变形矢量的基础而由相同类别的对象(例如,都是椅子)构成。具体地,如果所提供的数据集由或实质上由相同类别的大量3d建模对象(例如,都是椅子)构成,则神经网络将公认地推断出此类别的对象(例如,椅子)的物理上现实的变形基础。然而,即使所提供的数据集的3d建模对象形成不同的类别(例如,椅子和长凳),并且即使这些类别没有由所提供的数据集内的大量3d建模对象表示,神经网络也可以这样做。显著地,该学习不要求用指示其相应类别的标签(如果有)来注释所提供的数据集的对象。此外,学习不要求使用模板建模的对象,例如对象类别的平均形状。另外,所提供的数据集不需要根据对象的类别被聚合。这进一步提高了神经网络的泛化能力。
[0049]
然而,当所提供的数据集包括形成流形(manifold)的两个或更多个类别的3d建模对象(例如,椅子和长凳)时,神经网络的泛化能力被进一步提高。实际上,流形可以由不同类别的对象形成,这些对象之间具有至少二对二的连接性,即,一定量的共享特征/特性(例如,椅子和长凳也是如此)。因此,对于流形内的许多对象类别,变形基础的单个矢量可以是有意义的合理变形(例如,椅子和长凳的座位可以被类似地变形)。换句话说,如果所提供的数据集形成3d建模对象(例如,椅子和长凳)的流形,则以这种方式学习神经网络:它在不同类别的对象的变形之间相互关联。即使所提供的数据集由形成流形的不同类别的少量建模对象构成,这也允许神经网络学习推断物理上现实的/可接受的变形基础。这提高了神经网络的泛化能力。
[0050]
一般而言,学习赋予神经网络的泛化能力使得学习要求这样的训练数据集(即,所提供的数据集):与其他深度学习框架相比,该训练数据集每个类别包括更少的3d建模对象,而不会影响神经网络推断变形基础的能力。具体地,由于神经网络能够在不同类别上学习到的变形之间相互关联,因此每个类别需要更少的对象。然而,如果所提供的数据集仅包括对象的两个非常不同类别中的一个类别,则可能需要更大量的对象。
[0051]
通过使用由神经网络输出的变形基础获得的变形可以用于3d建模中,例如用于3d编辑应用。由神经网络推断出的基础还可以用于其他应用中,例如形状匹配和非线性变形推断,如在下文中进一步讨论的。此外,神经网络提供了输入3d建模对象的线性变形,其在用于实时应用时是高效的。
[0052]
还提供了用于确定3d建模对象变形的第二种计算机实现的方法。该方法包括提供被配置用于推断输入3d建模对象的变形基础的变形基础函数。该方法进一步包括提供第一3d建模对象。该方法进一步包括提供第一3d建模对象的变形约束。该方法进一步包括确定遵守变形约束的第二3d建模对象。确定第二3d建模对象包括计算在第一3d建模对象和第二3d建模对象之间的过渡3d建模对象的轨迹。轨迹通过将变形基础函数应用于每个过渡3d建模对象的结果的线性组合来使该过渡3d建模对象变形。轨迹减少了损失。损失惩罚了变形的过渡3d建模对象不遵守变形约束的程度。第二方法可以被称为“确定方法”。
[0053]
该确定方法构成了用于使3d建模对象变形的改进的解决方案。
[0054]
显著地,该确定方法通过计算这两个对象之间的过渡3d建模对象的轨迹来从第一3d建模对象确定第二3d建模对象,每个过渡3d建模对象是另一个过渡3d建模对象的变形的结果。换言之,确定方法使第一3d建模对象沿着最终到达第二3d建模对象的变形的过渡3d建模对象的轨迹进行变形。从而,确定方法确定第一3d建模对象的大且非线性的变形。
[0055]
此外,该确定方法通过将变形基础函数应用于每个过渡3d建模对象的结果的线性组合来使该过渡3d建模对象变形。变形基础函数的应用产生了过渡3d建模对象的变形基础,即,过渡3d建模对象的变形矢量的基础。基础是一组矢量,每个矢量都是过渡3d建模对象的变形方向。该基础是或至少倾向于是线性代数意义上的基础。基础的矢量使得它们可以被线性组合以将过渡3d建模对象变形为另一个过渡3d建模对象,这是过渡3d建模对象的合理局部变形。例如,变形基础函数可以是可通过学习方法学习的神经网络,例如,已经通过学习方法学习了神经网络,这种变形基础函数产生了如先前所讨论的这样的矢量。从而,该确定方法将每个过渡3d建模对象线性地且局部地变形为相邻的合理过渡3d建模对象,直到到达第二3d建模对象。换句话说,确定方法仅基于提供输入3d建模对象的现实局部变形方向的基础的变形基础函数,计算从第一3d建模对象到第二3d建模对象的轨迹。换句话说,该确定方法仅基于产生局部合理变形的变形基础函数来实现第一3d建模对象的大变形,这使得确定方法高效。此外,由于沿着轨迹使用的局部变形是合理且现实的,即,它们将3d建模对象现实地变形为属于3d建模对象附近的另一个3d建模对象,因此从第一3d建模对象到达第二3d建模对象的大变形也是现实的。
[0056]
当变形基础函数被配置为推断属于3d建模对象的流形的输入3d建模对象的变形基础时,显著提高了确定方法的效率和真实性。例如,如先前所讨论的,当变形基础函数是在形成流形的3d建模对象的数据集上可根据学习方法学习(例如,已经学习)的神经网络时,就是这种情况。实际上,如先前所讨论的,以这种方式学习的神经网络具有提高的泛化能力。在这种情况下,确定方法中涉及的任何3d建模对象也可能属于此流形。过渡3d建模对象的物理现实的局部变形在这种情况下被神经网络高效地推断出,如先前针对学习方法所讨论的。最后,也高效且现实地确定了作为第二3d建模对象的第一3d建模对象的大变形。
[0057]
此外,该轨迹减少了损失,该损失惩罚了变形的过渡3d建模对象不遵守变形约束的程度。换言之,损失使得3d建模对象对变形约束越遵守,损失就越小。过渡3d建模对象的轨迹使得损失沿着轨迹减小/减少。换言之,过渡3d建模对象沿着轨迹直到第二3d建模对象越来越遵守变形约束。因此,第二3d建模对象在过渡3d建模对象之中最遵守变形约束。换言之,第二3d建模对象倾向于是损失的最小值,或者至少倾向于接近损失的最小值。该确定方法由此产生第一3d建模对象的最佳的大的非线性合理变形。
[0058]
换言之,该确定方法通过仅依赖于局部合理变形基础推断函数,产生3d建模对象(即,第二3d建模对象),该3d建模对象是第一3d建模对象的大的合理变形并且遵守变形约束。这使得确定方法高效且鲁棒。这也意味着确定方法允许3d建模对象的大的现实变形被确定。这样,该确定方法可以高效地用于3d建模或3d编辑,这是由于用户仅需要在第一3d建模对象上定义变形约束,以使确定方法向他/她提供满足用户意图的此对象的大的合理变形。由此,确定方法还构成了用于3d编辑的改进的且符合人体工程学的解决方案。
[0059]
可以独立地执行学习方法和确定方法。可替代地,确定方法可以是学习方法的应用,即,使用通过学习方法学习的神经网络的方法。确定方法的变形基础函数确实可以是神
经网络。可替代地或附加地,确定方法的变形基础函数可以是可根据学习方法学习的任何神经网络,例如根据学习方法直接学习的神经网络。例如,提供变形基础函数可以包括执行学习方法,该学习方法产生形成变形基础函数的神经网络。
[0060]
可以将这些方法集成到3d建模对象变形的相同计算机实现的过程中。该过程可以包括离线阶段和在离线阶段之后的在线阶段,学习方法形成离线阶段,确定方法形成在线阶段。离线阶段因此包括提供数据集以及根据学习方法学习神经网络,而在线阶段包括根据确定方法提供和确定第二3d建模对象。
[0061]
学习方法、确定方法和过程是计算机实现的方法。
[0062]
这意味着方法的步骤(或实质上所有步骤)由至少一台计算机或任何相似系统执行。因此,方法的步骤由计算机执行,可能是全自动执行,也可能是半自动执行。在示例中,可以通过用户

计算机交互来执行触发方法的至少一些步骤。所要求的用户

计算机交互级别可以取决于所预见的自动级别,并且与实现用户意愿的需求保持平衡。在示例中,此级别可以是用户定义的和/或预定义的。
[0063]
方法的计算机实施方式的典型示例是用适于此目的的系统执行该方法。该系统可以包括耦合到存储器的处理器和图形用户界面(gui),该存储器在其上记录有计算机程序,该计算机程序包括用于执行该方法的指令。存储器还可以存储数据库。存储器是适于这种存储的任何硬件,可能包括若干个物理不同的部分(例如,一个用于程序,而可能一个用于数据库)。
[0064]
本文的方法通常操纵建模对象。建模对象是由被存储在例如数据库中的数据定义的任何对象。通过扩展,表达“建模对象”指定数据本身。根据系统的类型,可以通过不同种类的数据来定义建模对象。该系统实际上可以是cad系统、cae系统、cam系统、pdm系统和/或plm系统的任何组合。在那些不同的系统中,建模对象由对应的数据定义。因此,可以提到cad对象、plm对象、pdm对象、cae对象、cam对象、cad数据、plm数据、pdm数据、cam数据、cae数据。然而,这些系统并不是彼此排斥的,这是由于建模对象可以通过与这些系统的任何组合相对应的数据来定义。因此,系统也可以同时是cad和plm系统。
[0065]
所谓cad系统,另外意味着至少适于在建模对象的图形表示的基础上设计建模对象的任何系统,例如catia。在这种情况下,定义建模对象的数据包括允许建模对象的表示的数据。cad系统可以例如使用边或线(在某些情况下利用面或表面)来提供cad建模对象的表示。线、边或表面可以以各种方式表示,例如非均匀有理b样条(nurbs)。具体地,cad文件包含可以从中生成几何结构的规范,这些规范转而允许表示被生成。建模对象的规范可以被存储在单个cad文件或多个cad文件中。表示cad系统中的建模对象的文件的典型大小在每零件一兆字节的范围中。并且建模对象通常可以是数千个零件的组装件。
[0066]
在cad的上下文中,建模对象通常可以是3d建模对象,例如表示产品(例如,零件或零件的组装件,或者可能是产品的组装件)。所谓“3d建模对象”,意味着由允许其3d表示的数据建模的任何对象。3d表示允许从所有角度查看零件。例如,当被3d表示时,3d建模对象可以被处理并且围绕其轴中的任一个或围绕显示该表示的屏幕中的任何轴进行旋转。这特别地排除了不是3d建模的2d图标。3d表示的显示促进设计(即,提高设计人员在统计上完成其任务的速度)。由于产品的设计是制造过程的一部分,因此这加快了行业中的制造过程。
[0067]
本文中的任何3d建模对象(即,在方法的任一个中)可以表示在用例如cad软件解
决方案或cad系统完成其虚拟设计之后在现实世界中要被制造的产品的几何结构,例如(例如,机械)零件或零件的组装件(或等效地零件的组装件,这是由于从方法的角度看零件的组装件可以被看作是零件本身,或者这些方法可以被独立地应用于组装件的每个零件),或者更一般地任何刚体组装件(例如,移动机构)。cad软件解决方案允许各种且不受限的工业领域中的产品设计,包括:航空航天、建筑、建设、消费品、高科技设备、工业装备、运输、船舶和/或海上油/气生产或运输。这些方法中涉及的任何3d建模对象可以因此表示一种工业产品,该工业产品可以是任何机械零件,例如:陆地载具(包括例如汽车和轻型卡车装备、赛车、摩托车、卡车和机动车装备、卡车和公共汽车、火车)的零件,航空载具(包括例如机身装备、航空航天装备、推进装备、国防产品、航空装备、航天装备)的零件,海上载具(包括例如海军装备、商用船、海上装备、游艇和工作船、船舶装备)的零件,通用机械零件(包括例如工业制造机械、重型移动机械或装备、安装的装备、工业装备产品、金属制品、轮胎制品),机电或电子零件(包括例如消费电子产品、安全和/或控制和/或仪器产品、计算和通信装备、半导体、医疗设备和装备),消费品(包括例如家具、家居和花园产品、休闲用品、时尚产品、硬商品零售商的产品、软商品零售商的产品),包装(包括例如食品和饮料和烟草、美容和个人护理、家用产品包装)。
[0068]
图1示出了系统的示例,其中,该系统是客户端计算机系统,例如用户的工作站。
[0069]
该示例的客户端计算机包括:连接到内部通信总线1000的中央处理单元(cpu)1010、也连接到总线的随机存取存储器(ram)1070。客户端计算机被进一步提供有图形处理单元(gpu)1110,其与被连接到总线的视频随机存取存储器1100相关联。视频ram 1100在本领域中也被称为帧缓冲器。大容量存储设备控制器1020管理对大容量存储器设备(例如,硬盘驱动器1030)的存取。适合于有形地体现计算机程序指令和数据的大容量存储器设备包括所有形式的非易失性存储器,包括:作为示例的半导体存储器设备,例如eprom、eeprom和闪速存储器设备;磁盘,例如内部硬盘和可移动磁盘;磁光盘;以及cd

rom磁盘1040。上述任一项可以通过专门设计的asic(专用集成电路)进行补充或者被合并到其中。网络适配器1050管理对网络1060的访问。客户端计算机还可以包括触觉设备1090,例如光标控制设备、键盘等。在客户端计算机中使用光标控制设备以允许用户将光标选择性地定位在显示器1080上的任何期望的位置处。另外,光标控制设备允许用户选择各种命令并且输入控制信号。光标控制设备包括多个信号生成设备,以用于将控制信号输入到系统。通常,光标控制设备可以是鼠标,该鼠标的按钮被用于生成信号。可替代地或另外地,客户端计算机系统可以包括敏感垫和/或敏感屏幕。
[0070]
该计算机程序可以包括计算机可执行的指令,这些指令包括用于使得上述系统执行方法的单元。该程序可以是可记录在任何数据存储介质(包括系统的存储器)上的。该程序可以例如以数字电子电路或以计算机硬件、固件、软件或它们的组合来实现。该程序可以被实现为装置(例如,有形地体现在机器可读存储设备中以用于由可编程处理器执行的产品)。方法步骤可以通过可编程处理器执行指令程序来执行,以通过对输入数据进行操作并且生成输出来执行方法的功能。处理器可以因此是可编程的并且被耦合以从数据存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,以及向数据存储系统、至少一个输入设备和至少一个输出设备发送数据和指令。可以以高级过程或面向对象的编程语言实现应用程序,或者如果期望,以汇编或机器语言实现应用程序。在任何情况下,该语言可
以是编译语言或解释语言。该程序可以是完整的安装程序或更新程序。在任何情况下,程序在系统上的应用都会产生用于执行这些方法的指令。
[0071]
现在进一步讨论学习方法。
[0072]
现在讨论提供3d建模对象的数据集。在此讨论之前,现在讨论其中涉及的数据结构。
[0073]
本文中的任何3d建模对象都可以形成3d形状的离散几何表示,例如表示来自现实世界的对象,例如如先前所讨论的机械零件。离散几何表示在本文中是一种数据结构,其包括数据段的离散集合。每个数据段表示位于3d空间中的相应几何实体。每个几何实体表示3d形状的相应位置(换言之,由3d形状表示的实体构成的材料的相应部分)。几何实体的聚合(即,并集或并列)共同表示3d形状。本文中的任何离散几何表示可以在示例中包括高于100、1000或10000的数量的这样的数据段。
[0074]
本文中的任何离散几何表示可以例如是3d点云,每个几何实体是一个点。本文中的任何离散几何表示可以可替代地是3d网格,每个几何实体是网格分片(mesh tile)或面。本文中的任何3d网格可以是规则的或不规则的(即,由相同类型的面组成或不由相同类型的面组成)。本文中的任何3d网格可以是多边形网格,例如三角形网格。本文中的任何3d网格可以可替代地是b

rep。本文中的任何3d网格可以从3d点云获得,例如通过对3d点云进行三角剖分(例如,用delaunay三角剖分)。可以例如在3d重构过程内根据对真实对象的物理测量结果来确定本文中的任何3d点云。3d重构过程可以包括:提供真实对象;提供各自被配置用于获取相应的物理信号的一个或多个物理传感器;以及通过对真实对象操作一个或多个物理传感器(即,用每个传感器扫描真实对象)来获取一个或多个相应的物理信号。根据任何已知的技术,3d重构可以然后基于测量结果来自动地确定3d点云和/或3d网格。一个或多个传感器可以包括多个(例如,rgb和/或图像或视频)相机,并且确定可以包括从运动恢复结构分析(structure

from

motion analysis)。一个或多个传感器可以可替代地或另外地包括一个或多个深度传感器(例如,在rgb深度相机上),并且确定可以包括根据深度数据的3d重构。一个或多个深度传感器可以例如包括激光器(例如,激光雷达)或超声发射器

接收器。
[0075]
可以例如通过在3d建模对象上进行光线投射或对3d建模对象进行细分,来从表示实体的蒙皮(即,外表面)的3d建模对象(例如,对应于表示蒙皮(即,确切的表面)的b

rep模型)中可替代地获得本文中的任何3d点云或3d网格。可以根据任何3d建模对象渲染过程来执行细分。可以在任何cad系统上对这种渲染过程进行编码,以便显示3d建模对象的图形表示。3d建模对象可以由用户用cad系统设计或已经由用户用cad系统设计。
[0076]
提供数据集可以包括例如通过创建3d建模对象来形成数据集。可替代地,提供数据集可以包括从(例如,远程的)存储器中取回数据集,数据集在其创建之后已经被存储于该存储器中。数据集的3d建模对象可以全部是3d点云,例如由3d网格的预处理产生。可替代地,它们可以全部是3d网格。在这种情况下,学习方法可以包括对这些网格的预处理,其将它们采样到3d点云中。预处理可以然后包括使每个3d网格居中。预处理可以然后包括独立地重新调节每个3d网格的尺寸,使得网格顶点恰好适于单位立方体。预处理可以然后包括:例如通过在6个正交视图上对每个归一化形状进行光线投射,从数据集中的每个归一化形状提取密集点云。预处理可以然后包括对每个点云进行均匀地子采样(例如,通过将每个点
云下采样到相同大小)。子采样可以从点云的随机点开始,并且迭代地挑选点云中的距已经选择的点最远的点,从而达到所期望的点数。
[0077]
数据集的3d建模对象可以是合理的(例如,现实的)3d建模对象。合理的3d建模对象可以指定表示真实世界对象的3d建模对象,例如合理的机械零件。合理的机械零件可以指定在现实世界的工业制造过程中可实际制造的机械零件。合理的机械零件可以是指一种机械零件,其遵守为了在现实世界的工业制造过程中现实地制造该机械零件必须遵守的所有约束。约束可以包括以下各项中的一个或多个:机械约束(例如,由经典力学定律得出的约束)、功能约束(例如,与一旦被制造就要由机械零件执行的一个或多个机械功能有关的约束)、制造约束(例如,涉及在用于制造机械零件的一个或多个制造过程期间将一个或多个制造工具应用于机械零件的能力的约束)、结构约束(例如,涉及机械零件的强度和/或阻力的约束)、和/或组装件约束(例如,定义机械零件如何可以与一个或多个其他机械零件组装的约束)。
[0078]
如先前所讨论的,所提供的数据集的3d建模对象可以全部或实质上全部属于3d建模对象的单个类别。可替代地,它们可以形成3d建模对象的不同类别,例如所述类别形成流形。在任何情况下,数据集的3d建模对象各自表示来自现实世界的相应对象,例如如先前所讨论的机械零件。
[0079]
现在讨论神经网络的学习。
[0080]
如从机器学习领域本身已知的,由神经网络对输入的处理包括将操作应用于输入,这些操作由包括权重值的数据定义。学习神经网络因此包括:基于被配置用于这种学习的数据集来确定权重值,这种数据集可能被称为学习数据集或训练数据集。为此,数据集包括各自形成相应训练样本的数据段。训练样本表示神经网络在被学习后要被使用的情况的多样性。本文所引用的任何数据集都可以包括高于1000、10000、100000或1000000的数量的训练样本。在本文中,在所提供的数据集上学习神经网络,这意味着所提供的数据集是神经网络的学习/训练数据集。该学习可以通过任何合适的已知方法来执行。
[0081]
神经网络被配置用于推断输入3d建模对象的变形基础。换言之,神经网络将3d建模对象作为输入,并且输出3d建模对象的变形基础。为此,输入3d建模对象与数据集的3d建模对象具有相同的数据类型。例如,如果数据集的3d建模对象是3d网格,则输入3d建模对象也是3d网格。可替代地,如果数据集的3d建模对象是3d点云,则输入3d建模对象也是3d点云。尽管如此,3d建模对象可以是3d点云,该3d点云是从网格的采样产生的。变形基础是矢量的集合,每个矢量都是变形的方向。可以对矢量进行线性组合以使输入3d建模对象变形,具有其系数(也被称为幅度)集合的线性组合会产生变形。可以以这种方式对矢量进行线性组合:如果线性组合足够小,则变形的输入3d建模对象接近输入3d建模对象。在这种情况下,其变形是现实的。在数学上,变形是现实的,只要其流形保持在切线空间上足够接近变形,该切线空间是由变形基础定义的。变形基础可以是线性代数意义上的基础,即,线性独立的矢量的集合,该基础可能是归一化的,例如是标准正交的。具体地,学习目的在于使神经网络推断或至少倾向于推断线性独立(例如,不相关和/或标准正交的,如下文进一步讨论的)的变形矢量的基础。变形基础可以具有固定的大小(例如,在2和10个矢量之间,或者多于10个矢量)。换言之,神经网络可以总是(即,针对每个输入3d建模对象)输出具有相同固定数量的矢量的变形基础。在数据集由合理的3d建模对象构成的情况下,神经网络会推
断3d建模对象的合理变形矢量的基础,这是因为它为这样做而被学习。
[0082]
神经网络具有被配置用于将3d建模对象作为输入并且输出其变形基础的架构。该神经网络可以包括编码器和深度前馈神经网络。编码器被配置为将3d建模对象作为输入并且输出表示输入3d建模对象的潜在矢量。编码器可以因此被配置为将3d网格或例如从3d网格采样的3d点云作为输入。深度前馈神经网络被配置为将由编码器输出的潜在矢量作为输入,并且输出由潜在矢量表示的3d建模对象的变形基础。编码器架构可以基于pointnet(例如,在先前引用的参考文献[8]中进行了描述,其通过引用并入本文)或其任何扩展。可替代地,编码器架构可以使用网格拓扑结构(即,如果数据集的3d建模对象是3d网格),例如如在meshcnn中完成的(例如,参见先前引用的参考文献[9],其通过引用并入本文)。
[0083]
学习可以包括:针对数据集的至少一部分,使损失最小化。针对数据集的至少一部分的每个3d建模对象以及针对具有矢量的每个候选变形基础,损失惩罚3d建模对象按矢量的线性组合的变形与另一3d建模对象之间的距离。
[0084]
现在讨论损失的最小化。
[0085]
数据集的至少一部分是数据集的3d建模对象的样本。例如,数据集的至少一部分可以是小批量,学习在这种情况下是逐小批量执行的,并且包括:针对每个小批量,使损失最小化。从机器学习领域本身已知逐小批量学习的构思。例如,学习可以实现任何已知的小批量随机优化方法,例如小批量随机梯度下降。如从机器学习领域本身已知的,逐小批量学习提高了学习效率。
[0086]
针对数据集的至少一部分的每个3d建模对象,学习评估由神经网络利用其当前权重值输出的建模对象的变形基础。此计算出的变形基础形成了3d建模对象的候选变形基础。损失惩罚3d建模对象按此候选基础矢量的线性组合的变形与另一3d建模对象之间的距离。这意味着当3d建模对象按此候选基础矢量的线性组合的变形与所述另一3d建模对象之间的距离较大时,损失倾向于增加。如果是这种情况,则使损失最小化的学习会修改神经网络的权重,以降低损失值,因此产生新的候选。学习这样做(例如,逐小批量),直到损失达到其最小值或至少足够小的值(例如,相对于收敛标准)。
[0087]
所述另一3d建模对象可以是目标对象,即,其中,矢量的线性组合用于使3d建模对象变形。这允许训练神经网络以推断变形的基础。例如,所述另一3d建模对象可以是:在数据集的至少一部分的3d建模对象之中,与数据集的至少一部分的3d建模对象接近的3d建模对象。换言之,学习可以显著地包括:基于距数据集的至少一部分的3d建模对象的距离,在数据集的至少一部分的3d建模对象之中选择所述另一3d建模。选择可以包括:计算数据集的至少一部分的每个3d建模对象与数据集的至少一部分的所述3d建模对象之间的距离,以及评估哪些3d建模对象是接近的,即,对于哪些3d建模对象该距离小。然后,选择可以选择该距离小的3d建模对象。在示例中,选择可以评估哪个3d建模对象是最接近的,即,对于哪个3d建模对象,该距离是最小的。换言之,该选择计算距离的最小值,并且评估哪个3d建模对象会产生此最小值。在这些示例中,所述另一3d建模对象是在数据集的至少一部分的3d建模对象之中,与数据集的至少一部分的3d建模对象最接近的3d建模对象。在示例中,可以逐小批量执行学习,并且学习包括:针对每个小批量,使损失最小化并且在小批量的3d建模对象之中选择所述最接近的3d建模对象。换句话说,选择另一3d建模对象是在小批量的对象之中,数据集的至少一部分是小批量。
[0088]
距数据集的至少一部分的3d建模对象的所述距离可以是任何距离,例如3d建模对象之间的距离,例如点云或3d网格之间的3d距离。在示例中,该距离可以是在潜在空间中的距离,如现在所讨论的。
[0089]
具体地,在这些示例中,学习方法可以包括:例如在学习之前,例如在学习方法的初始阶段处,提供另一编码器,该另一编码器被配置为:将所提供的数据集的3d建模对象作为输入,并且输出编码此3d建模对象的潜在矢量。可以在自动编码器框架中、在分类任务中或者通过任何其他机器学习方法训练所述另一编码器,以便学习3d建模对象的有意义的潜在空间,如从机器学习领域本身已知的。提供所述另一编码器可以包括训练所述另一编码器。可替代地,所述另一编码器可以被预先训练。在这些示例中,例如第一3d建模对象和第二3d建模对象之间的距离可以是:在将所述另一编码器应用于第一3d建模对象的结果和将所述另一个编码器应用于第二3d建模对象的结果之间的所述另一编码器的潜在空间中的距离。此潜在空间距离允许训练神经网络用更高的准确性推断变形的基础,这是由于由所述另一编码器输出的潜在矢量捕获了编码3d建模对象的语义。换句话说,所述编码器相对于语义隐式地聚合数据集。这允许将所述另一3d建模对象确定为与数据集的至少一部分的所述3d建模对象最类似的3d建模对象。例如与3d建模对象空间中的距离(其可能花费更多来计算)相比,使用这种潜在空间距离因此提高了学习的准确性以及效率。
[0090]
选择所述另一3d建模对象可以在最小化之前被执行。例如,将所述另一编码器应用于数据集的3d建模对象的结果可以被预先计算,即,在最小化之前被计算。
[0091]
线性组合具有系数,每个系数对应于组合中的相应矢量的贡献。可以在学习期间通过神经网络计算系数。可替代地,它们可以是在学习期间被执行的优化的结果。
[0092]
损失可以惩罚3d建模对象按矢量的线性组合的变形与所述另一3d建模对象之间的距离的最小值。这选择了按线性组合的最佳变形,即,当使损失最小化时使距离最小化的变形。最小值可以例如是在线性组合的系数的所有可能值之中,3d建模对象按矢量的线性组合的变形与所述另一3d建模对象之间的距离的最小值。损失惩罚最小值,原因是当最小值较大时,损失倾向于增加。如果是这种情况,则使损失最小化的学习修改神经网络的权重以降低损失的值。学习这样做(例如,逐小批量),直到损失达到其最小值或至少足够小的值(例如,相对于收敛标准)。
[0093]
损失可以是以下类型:
[0094][0095]
其中:
[0096]
·
e1,...,e
n
是数据集的至少一部分的3d建模对象,n是数据集的至少一部分中的对象数量,
[0097]
·
p1,...,p
n
是分别从e1,...,e
n
获得的点云,
[0098]
·
针对每个3d建模对象e
i
,g
w
(f
w
(e
i
),p
i
)1,...,g
w
(f
w
(e
i
),p
i
)
n
是3d建模对象的候选变形基础的矢量,n为候选变形基础的大小,
[0099]
·
是3d建模对象e
i
按矢量的线性组合的变形,
α1,...,α
n
是线性组合的系数,
[0100]
·
q
i
是从所述另一3d建模对象获得的点云,
[0101]
·
d
ch
是距离,
[0102]
·
神经网络具有权重,w表示神经网络的权重,
[0103]
·
f
w
是编码器,其被配置为将3d建模对象作为输入并且输出表示输入3d建模对象的潜在矢量,以及
[0104]
·
g
w
是深度前馈神经网络,其被配置为将由编码器输出的潜在矢量作为输入,并且输出由潜在矢量表示的3d建模对象的变形基础。
[0105]
e1,...,e
n
可能已经是3d点云,在这种情况下,e1=p1,...,e
n
=p
n
。可替代地,e1,...,e
n
可以是3d网格,在这种情况下,p1,...,p
n
可以由对e1,...,e
n
的采样产生。d
ch
可以是3d点云之间的任何3d距离,例如地动距离(earth mover distance)或倒角距离(chamfer distance)。d
ch
可以在示例中是以下类型:
[0106][0107]
q
i
可以如下进行计算。令f

为先前讨论的另一编码器。然后针对每个i,学习方法确定然后,q
i
由q
i
=p
i

给出。如先前所讨论的,可以预先计算矢量f

(e
i
)。
[0108]
针对每个3d建模对象和每个候选变形基础,损失可以进一步惩罚稀疏诱导函数(例如,其最小值),该稀疏诱导函数将线性组合的系数作为输入。如先前所讨论的,稀疏函数可以例如是线性组合的系数的l1

范数(例如,参见参考文献[6],其通过引用并入本文)。换言之,当稀疏诱导函数(例如,其最小值)较大时,损失倾向于增加。如果是这种情况,则使损失最小化的学习修改神经网络的权重以降低损失值。学习这样做(例如,逐小批量),直到损失达到其最小值或至少足够小的值(例如,相对于收敛标准)。在这种情况下,损失可以是以下类型:
[0109][0110]
λ是一个权衡参数(这是机器学习领域公知的概念),φ是稀疏诱导函数,例如l1范数(例如,参见先前引用的参考文献[6],其通过引用并入本文),(α1,


p
)是系数的矢量,也被称为幅度的矢量。
[0111]
这允许在学习期间使系数/幅度稀疏。最终,这允许神经网络学习输出不相关的变形基础矢量,这进一步提高了学习方法的泛化能力。显著地,以这种方式学习的神经网络输出了令人满意的基础,这是由于其稀疏性允许使用少量的矢量来计算按基础矢量的线性组合的输入3d建模对象的变形。此外,输出基础是或至少倾向于是线性代数意义上的基础。
[0112]
针对每个3d建模对象和每个候选变形基础,损失可以进一步奖励候选变形基础的标准正交性。换言之,损失可以进一步包括捕获如由神经网络用其当前权重值推断的3d建模对象的变形基础的标准正交性的项,当变形基础倾向于标准正交时,该项倾向于较小。在
这种情况下,损失可以是以下类型:
[0113][0114]
δ是一个权衡参数(其是从机器学习领域公知的概念)。这进一步允许神经网络学习输出不相关的变形基础矢量,这是由于它们倾向于标准正交。由此,这种基础是或者至少倾向于是线性代数意义上的基础。
[0115]
该损失可以进一步包括任何合适的正则化函数,如从机器学习领域本身已知的。
[0116]
现在讨论学习方法的实施方式。
[0117]
此实施方式为3d建模和3d机器学习领域带来了改进。此实施方式的结果可以用于诸如虚拟现实和增强现实(更一般地,任何种类的沉浸式体验)、视频游戏、制造和3d打印或3d建模之类的领域中。此实施方式提供了一种用于计算任何3d建模对象的现实稀疏变形线性基础的解决方案,然后可以利用该解决方案执行形状合成、根据图像的形状重构、或者形状匹配。
[0118]
此实施方式允许为任何3d建模对象提供合理的线性变形基础,使得可以通过构成其基础的变形矢量的任何线性组合来在局部邻域中使该模型现实地变形。这种变形可以用于3d建模软件中,特别是用于3d编辑应用。即,它可以用于大的非线性变形和形状匹配的推断。
[0119]
此实施方式训练神经网络(在学习中学习的神经网络),该神经网络学习具有稀疏约束的线性3d变形场,以便获得彼此独立的合理变形。从所提供的数据集开始(该数据集是未标记的3d建模对象的数据集),此实施方式(在学习时)学习了一种神经网络,该神经网络推断出输入3d建模对象模型的每个点处的变形基础。为了学习此网络,学习逐小批量进行,如先前所讨论的:
[0120]
1)将每个批量的每个3d建模对象与相同批量中最接近的3d建模对象相匹配。换言之,如先前所讨论的,在该批量的3d建模对象之中选择最接近3d建模对象的所述另一3d建模对象。
[0121]
2)利用附加的稀疏正则化项,计算3d建模对象的预测变形矢量的线性组合,该线性组合使以下二者之间的距离最小化:3d建模对象按如由神经网络利用其当前权重推断出的变形矢量的线性组合的变形,以及其在批量中最接近的3d建模对象。
[0122]
3)通过神经网络的权重使相同的损失(变形的3d建模对象与其最接近的3d建模对象之间的距离)最小化,以优化预测的变形基础。
[0123]
此实施方式不要求对不同种类的3d建模对象进行聚合以单独学习每个聚合。相反,适合于一起对整个数据集进行直接学习。此实施方式学习了不相关的变形基础,其中,每个变形本身都是合理的。推断出的变形是线性的,并且因此可以在实时应用中被使用。变形被推断为3d变形场,其使输入3d建模对象的表现力最大化。
[0124]
在提供数据集时,在所提供的数据集由3d网格构成的情况下,此实施方式可以执行如先前所讨论的预处理。预处理包括使每个网格居中并独立地重新调节其尺寸,使得网
格顶点恰好适于单位立方体。预处理然后包括:通过在6个正交视图上对每个归一化形状进行光线投射,从数据集中的每个归一化形状提取密集点云。预处理然后包括对每个点云进行均匀地子采样(例如,通过将每个点云下采样到相同大小)。为此,预处理可以从点云的随机点开始,并且迭代地挑选点云中的距已经选择的点最远的点,直到达到预定义的(例如,所期望的)点数。
[0125]
现在讨论根据当前讨论的实施方式的神经网络的架构。
[0126]
在此实施方式中,神经网络推断(例如,针对任何输入3d建模对象)相同固定数量的变形基础矢量。令n为推断出的变形基础的这个固定相同大小。此实施方式包括设计编码器架构f
w
,其将3d点云或3d网格作为输入,并且输出表示输入3d点云或3d网格的潜在矢量例如,这种编码器架构可以基于pointnet(例如,参见先前引用的参考文献[8],其通过引用并入本文)或其许多扩展,或者也可以使用如在meshcnn中完成的网格拓扑结构(例如,参见先前引用的参考文献[9],其通过引用并入本文)。因此,f
w
可以被设计为将3d网格x或其采样的3d点云y作为输入。
[0127]
附加于f
w
,此实施方式包括设计深度前馈神经网络g
w
,该深度前馈神经网络g
w
将3d点云或3d网格的潜在矢量h以及3d点x作为输入,并且在点x处输出其变形基础为了进一步简化表示,针对包含m个点或顶点的任何点云或网格令g
w
(h,p)
j
,j∈{1,

,n}作为矢量因此,是在x的所有点处计算出的基础。此外,此实施方式还可以构建g
w
,使得‖g
w
(h,x)
j
‖2=1,其中所有j∈{1,

,n}。w是神经网络f和g的可训练权重。
[0128]
此实施方式可以包括提供类似于f
w
的另一编码器架构f

。如先前所讨论的,在自动编码器框架中、或在分类任务中、或通过任何其他机器学习方法训练f

,以便学习3d对象的有意义的潜在空间。此实施方式使用所述另一编码器来在训练f
w
期间高效地将3d建模对象(3d网格或3d点云)与其最接近的3d建模对象相匹配。
[0129]
此实施方式在学习神经网络时执行无监督学习。现在讨论这一点。
[0130]
该学习通过使针对n个点云p1,

,p
n
的小批量的损失e(w)(也被称为“能量”)最小化,通过任何小批量随机优化(例如,小批量随机梯度下降)来学习网络f
w
和g
w
二者。令e1,

,e
n
为f
w
的输入空间中的对应的3d建模对象,即,如果这些输入是点云e
i
=p
i
,并且如果它们是网格,则e
i
是用于对p
i
进行采样的源网格。
[0131]
针对每个i,令且q
i
=p
i

。可以预先计算矢量f

(e
i
),即,例如在学习之前,此实施方式包括矢量的预计算。
[0132]
然后,损失由以下公式给出:
[0133][0134]
d
ch
在这里是倒角3d距离,但是它可以用任何其他3d损失(例如,地动距离)替换:
[0135][0136]
φ是稀疏诱导函数,例如l1范数[6]。令(α1,


p
)被称为幅度的矢量。此实施方式试图使幅度稀疏,以便尽可能地使变形不相关,使得任何变形矢量本身是合理的。出于相同的原因,此实施方式强制变形基础与δ惩罚标准正交,在捕获基础的标准正交性的项之前进行,如先前所讨论的。
[0137]
σ(e
i
,e
i
+v)可以是任何正则化函数,其可以包括但不限于以下各项的组合:
[0138]

对e
i
和e
i
+v之间的边长之差的惩罚(如果e
i
是点云,则此实施方式可以包括使用k个最近邻图来在其点上创建边),以及
[0139]

对e
i
和e
i
+v的拉普拉斯坐标之间的差的惩罚,即,l(e
i
)和l(e
i
+v)之间的差,其中,l是e
i
的拉普拉斯算子。
[0140]
λ、δ和γ是权衡参数。
[0141]
为了使e(w)最小化,学习包括针对批量的每个输入计算幅度(α1,


p
)上的最小值,以及计算e(w)的梯度。
[0142]
针对每个输入i,针对每个输入i,可以使用标准梯度下降或任何连续优化算法来计算。
[0143]
然而,梯度可能似乎难以处理,这是由于达到最小值的幅度取决于w。
[0144]

[0145][0146]
并且
[0147][0148]
其中
[0149][0150]
包络定理使的梯度易于处理(并且因此e(w)的梯度也是如此),这是由于它等于的梯度,其中,α1,


p
相对于w被认为是恒定的,即,梯度的计算不会通过幅度α1,


p
的计算而反向传播。
[0151]
即,
[0152][0153]
这可以按照的定义使用以下事实证明:
[0154]
图2示出了根据当前讨论的实施方式学习的神经网络的深度模型架构。
[0155]
现在进一步讨论确定方法。
[0156]
该确定方法用于确定3d建模对象变形。换言之,确定方法将3d建模对象作为输入并且输出3d建模对象的变形,该变形是大的非线性变形。该确定方法特别包括提供(例如,
通过用户动作,例如在3d编辑过程期间)第一3d建模对象,该第一3d建模对象是通过该确定方法变形的3d建模对象。第一建模对象可以是3d点云或3d网格。例如,如果变形基础函数将3d点云作为输入,则第一建模对象是3d点云。例如,如果变形基础函数将3d网格作为输入,则第一建模对象是3d网格。
[0157]
确定方法进一步包括提供第一3d建模对象的变形约束。3d建模对象的变形约束的概念本身是已知的。然而,为了完整性,现在讨论其中涉及的概念的示例。然而,确定方法可以实现用于提供变形约束的任何已知方法。
[0158]
提供变形约束可以由用户执行,即,可以从用户动作产生。例如,用户可以定义变形约束。变形约束可以指定(例如,几何)规范的集合,这些规范确定将第一3d建模对象的零件的几何形状变形为另一几何形状(其在下文中可以被称为“新几何形状”)。换言之,变形可能不是由用户直接定义的,但是用户动作可能会引起规范强制变形。在示例中,这意味着用户例如通过使用键盘和/或触摸和/或触觉设备来提供(例如声明,例如指定)规范的集合。可替代地,可以从对第一3d建模对象(例如,其零件)的用户动作(例如,自动地)取回规范的集合。可替代地,可以从包括第一3d建模对象的屏幕上的用户的绘图中(例如,自动地)取回规范的集合。通过将零件的几何形状变形为新的几何形状,由变形约束定义的变形可以因此将第一3d建模对象的变形定义为第一3d建模对象的变形版本。
[0159]
定义变形约束可以由用户与第一3d建模对象的零件的图形交互产生。图形交互可以包括在第一3d建模对象上点击,例如,用触觉设备(例如,鼠标),或者用附属肢体(例如,手指)触摸第一3d建模对象。图形交互可以进一步包括:例如通过执行拖放操作来移动被点击或触摸的3d建模对象。例如,用户在3d建模对象的零件上选择一个或多个点(例如,通过使用触觉设备(例如,鼠标)点击一个或多个点),以及通过拖放操作移动它们(例如,一个接一个地移动它们,或者通过一键式拖放操作移动它们),如本领域已知的。被移动的一个或多个点的相应的一个或多个位置确定(例如形成,例如引起)第一3d建模对象的零件的新几何形状。换言之,第一3d建模对象当被提供时,具有给定的几何形状,并且用户可以通过移动点来定义新的几何形状。给定的几何形状到新几何形状的变形因此受到由用户移动的一个或多个点的相应的一个或多个位置的约束。换言之,移动一个或多个点定义了零件的新几何形状,而零件的新几何形状定义了变形约束。
[0160]
可替代地,用户可以通过绘制(例如,通过使用触觉设备)3d或2d绘图/草图(例如,在显示器上)来定义变形约束,该3d或2d绘图/草图表示第一3d建模对象的零件的新几何形状,该第一3d建模对象当被提供时具有给定的几何形状。给定的几何形状到新的几何形状的变形因此受到用户的绘制的约束,例如由像素的集合捕获。换言之,用户的绘制定义了零件的新几何形状,并且零件的新几何形状定义了变形约束。
[0161]
该确定方法进一步包括提供变形基础函数,该变形基础函数被配置用于推断输入3d建模对象的变形基础。换言之,变形基础函数将输入3d建模对象作为输入并且输出基础。该基础是或者至少倾向于是线性代数意义上的基础。基础是矢量的集合,每个矢量是输入3d建模对象的局部合理变形的方向。基础的矢量可以被线性组合,所得的线性组合形成输入3d建模对象的局部合理变形。基础的矢量是或者至少倾向于是不相关的。例如,基础可以是正交的,例如标准正交的。
[0162]
为此,变形基础函数可以包括(例如,是)可根据学习方法获得的神经网络(例如,
根据学习方法学习的神经网络)。在这种情况下,基础包括(例如,由其组成)由此神经网络输出的变形基础的矢量。
[0163]
附加地或可替代地,变形基础函数可以包括(例如,是)将输入3d建模对象作为输入并且输出几何和/或物理光谱模式的函数。这些模式是通过一定量的光谱分解计算出的矢量,例如输入3d建模对象的拉普拉斯算子或刚度矩阵,例如,并且最终具有增加的力,例如阻尼力。在这种情况下,基础包括(例如,由其组成)这些模式。这些模式可以是先前引用的参考文献[12](在拉普拉斯算子的情况下)或者先前引用的参考文献[3](在刚度矩阵的情况下)(它们通过引用并入本文)的那些模式。
[0164]
附加地或可替代地,变形基础函数可以包括(例如,是)这样的函数:其将输入3d建模对象作为输入并且输出被应用于具有共享对应关系的输入3d建模对象的数据集的pca的主分量,这些分量形成不相关的变形矢量。在这种情况下,基础包括(例如,由其组成)这些矢量。这些矢量可以是先前引用的参考文献[7](其通过引用并入本文)的那些矢量。
[0165]
附加地或可替代地,变形基础函数可以包括(例如,是)将输入3d建模对象作为输入并且输出手工制作的几何模式的函数。在这种情况下,基础包括(例如,由其组成)这些模式。这些模式可以是先前引用的参考文献[3](其通过引用并入本文)的那些模式。
[0166]
在示例中,变形基础函数由从到的b个平滑函数v1,

,v
b
构成,这些函数定义了变形基础,其中:
[0167]
·
输出归一化变形矢量,对于任何该归一化变形矢量允许以合理的方式使输入3d建模对象x局部变形,
[0168]
·
可选地,或更一般地,v
i
函数是不相关的,并且表示独立的变形模式。这提高了确定方法的效率。
[0169]
这些函数可以被线性组合以推断输入3d建模对象x的局部合理变形。换言之,是表示输入x的变形的合理的3d建模对象(例如,3d网格或3d点云),其中,{α
i
}
i=1,

,b
是足够小以确保变形保持局部的权重的任何集合。
[0170]
如先前所讨论的,变形基础的变形矢量v
i
可以是以下各项的任何组合:
[0171]
·
由可根据学习方法学习的神经网络输出的线性变形基础的矢量,例如根据学习方法学习的神经网络。在这种情况下,方法学习的神经网络。在这种情况下,其中,g
w
(f
w
(.),.)是神经网络。例如,f
w
是被配置为将3d建模对象作为输入并且输出表示输入3d建模对象的潜在矢量的编码器,而g
w
是深度前馈神经网络,其被配置为将由编码器输出的潜在矢量作为输入并且输出由潜在矢量表示的3d建模对象的变形基础。
[0172]
·
几何和/或物理光谱模式:通过一定量的光谱分解计算出的特征矢量,例如输入形状的拉普拉斯算子(例如,先前引用的参考文献[12]中考虑的那些)或刚度矩阵(例如,先前引用的参考文献[3]中考虑的那些),最终具有增加的力(例如,阻尼力)。
[0173]
·
被应用于具有共享对应关系的输入形状的数据集的pca的主要分量,从而产生不相关的变形矢量(例如,先前引用的参考文献[7]中考虑的变形矢量)。
[0174]
·
手工制作的几何模式:例如例如先前
引用的参考文献[3]中考虑的几何模式。
[0175]
现在讨论第二3d建模对象的确定。
[0176]
第二3d建模对象的确定包括计算轨迹。轨迹在第一3d建模对象和第二3d建模对象之间,该第二3d建模对象遵守变形约束,即,这是第一3d建模对象的满足(例如,用户定义的)变形约束的变形。轨迹是过渡3d建模对象的轨迹。每个过渡3d建模对象是第一3d建模对象的过渡变形,即,比第二3d建模对象更少地遵守变形约束,但是比先前的过渡3d建模对象更多地遵守变形约束。通过将变形基础函数应用于过渡3d建模对象的结果的线性组合,每个过渡3d建模对象被变形为另一个3d建模对象。换言之,沿着轨迹,每个过渡3d建模对象通过被变换成应用于过渡3d建模对象的变形基础函数的矢量的线性组合而变形。线性组合是过渡3d建模对象的局部合理的线性变形。换言之,轨迹是第一3d建模对象按变形基础函数的连续应用所产生的矢量的连续线性组合而连续变形的轨迹。在该方面,在本公开中认为,该轨迹使从第一3d建模对象开始的每个过渡3d建模对象按应用于过渡3d建模对象的变形基础函数矢量的线性组合而变形,此变形最终产生第二3d建模对象。
[0177]
轨迹减少了损失。损失可以是用户定义的,即,由用户定义的,例如出于捕获对由用户提供/定义的变形约束的不遵守的目的。损失惩罚了变形的过渡3d建模对象不遵守变形约束的程度。换言之,损失是过渡3d建模对象的函数,当过渡3d建模对象倾向于遵守变形约束时,该函数倾向于具有较低的值,而当3d建模对象倾向于不遵守变形约束时,该函数倾向于具有较高的值。例如,变形约束可以是表示第一3d建模对象的变形的3d形状/草图,并且损失可以惩罚该草图和过渡3d建模对象之间的距离。轨迹减少了损失,即,沿着轨迹,应用于过渡3d建模对象的损失的值减小了(不一定严格)。换言之,沿着轨迹,过渡3d建模对象越来越多地遵守变形约束,直到达到最遵守变形约束的第二3d建模对象为止。例如,3d建模对象倾向于接近损失的最小值。
[0178]
损失是任何3d损失n是第一3d建模对象的顶点数或点数,这惩罚了不满足变形约束(例如,用户的意图)的形状。如先前所讨论的,用户可以例如绘制表示第一3d建模对象的变形形状(即,变形约束)的3d草图s,并且在这种情况下,损失l(x)可以是3d草图的每个点与其在x上的最接近的顶点之间的距离之和:
[0179][0180]
其中,x是损失的3d建模对象输入,其中,d是3d建模对象之间的任何距离(例如,倒角距离或地动距离),并且其中,ρ是用于强制一些约束的(可选的,即,λ可以等于0)附加的正则化项。例如,ρ(x)可以强制对称:
[0181]
ρ(x)=d(x,x
symmetrized
)。
[0182]
轨迹可以对应于以下类型的积分公式:
[0183][0184]
其中:
[0185]
οx(0)是第一3d建模对象,
[0186]
οx(.)对应于过渡3d建模对象,
[0187]
οv1(x(.)),...,v
b
(x(.))对应于将变形基础函数应用于过渡3d建模对象的结果,v1(.),...,v
b
(.)为变形基础函数(每个v
i
定义函数的坐标,该坐标是变形矢量函数,即,其将变形基础函数的输入作为输入并且输出此输入的单个变形矢量),以及
[0188]
ο对应于线性组合,α1(.),...,α
b
(.)是线性组合的系数。
[0189]
所谓“轨迹对应于积分公式”,在此意味着计算出的轨迹倾向于被x(t)捕获。确定方法可以精确地计算此轨迹,或者,可替代地,确定方法可以例如通过近似x(t)(例如通过将其离散化,例如通过任何已知的离散化方法)来计算轨迹。
[0190]
事实上,该计算可以包括通过计算朝着第二3d建模对象收敛的中间3d建模对象的序列并减少损失来离散化轨迹。这意味着序列既收敛又减少了损失,即,损失沿着序列减小了(不一定严格)。离散化可以使用任何已知的离散化方法(例如,用于离散化完整轨迹的任何合适的方法)。离散化是以这种方式执行的:序列收敛,其极限形成第二3d建模对象,并减少了损失。
[0191]
显著地,序列的计算可以包括:从第一3d建模对象开始,进行以下迭代:
[0192]
·
将变形基础函数应用于在先前迭代时计算出的中间3d建模对象,应用产生矢量(即,形成矢量的基础,每个矢量都是中间3d建模对象的变形方向);
[0193]
·
在先前迭代时各自按所产生的矢量的相应线性组合计算出的中间3d建模对象的候选变形(即,可能的线性变形)之中,确定使损失最小化的候选变形;以及
[0194]
·
选择被应用于当前中间3d建模对象的所确定的候选变形作为下一个中间建模对象。
[0195]
换言之,如刚刚描述的序列的计算迭代地计算中间3d建模对象,每个中间3d建模对象使由应用于先前计算的中间3d建模对象的变形基础函数输出的变形矢量的可能线性组合的集合之中的损失最小化。损失的最小化可以通过任何已知的最小化方法(例如,任何已知的约束或非约束的最小化方法)来执行。
[0196]
使损失最小化的候选变形的确定(即,在候选变形之中)可以探索相应的线性组合的系数的候选集合,并且在所探索的候选集合之中操作选择。在这种情况下,所选择的候选系数集合与所确定的候选变形相对应。换言之,在计算期间在给定的迭代时执行的损失的每次最小化,在可能的系数集合之中确定了线性组合系数的集合,该线性组合系数的集合使得由应用于先前计算的中间3d建模对象的变形基础函数输出的变形矢量的具有这些系数的线性组合使损失最小化。此线性组合形成所选择的下一个中间3d建模对象。这是迭代执行计算的高效方式。
[0197]
可以在系数的每个候选集合的范数(例如,l1范数或l2范数)小于预定义值的约束下,执行使损失最小化的候选变形的确定。这意味着,在损失的每次最小化时,在所确定的系数集合必须具有小于预定义值的范数的约束下执行最小化。预定义值可以是收敛速度和结果合理性之间的权衡参数。这允许所选择的线性组合的系数保持足够小,以这样的方式:
[0198]
·
离散化产生了第一3d建模对象的合理的非线性变形,以及
[0199]
·
最小化被强制仅选择变形矢量,这些变形矢量当被线性组合时,使中间3d建模对象变形得更接近最大程度地使损失最小化的3d建模对象。这允许优化仅关注于最有意义
的变形,而不是使整个中间3d建模对象全局变形,其可能会到达距第一3d建模对象太远的优化模型。
[0200]
范数可以在示例中是l1

范数,其在每次迭代时产生稀疏的所选择的线性组合系数集合。每个最小化可以通过任何已知的方法来执行,例如任何已知的约束的优化方法或任何已知的非约束的优化方法,例如通过将约束转化为在这种非约束的方法中使用的附加惩罚项。
[0201]
在示例中,第二3d建模对象的确定通过用序列近似轨迹来迭代地计算轨迹(也被称为“路径”)x(t),如下所示:
[0202]

[0203][0204]
其中α
i,j
较小。对于每个时间步长n,第二3d建模对象的确定通过求解可微约束优化来计算幅度的集合{α
i,n
}
i=1,

,b
,其中,第二3d建模对象的确定最小化
[0205][0206]
在约束(例如,范数可以是l1或l2范数)下,确保{α
i,n
}
i=1..b
保持足够小:
[0207]
·
以使离散化有意义(获得合理的非线性变形,而不是大的非合理线性变形)
[0208]
·
并且还强制优化仅选择使x
n
更接近目标的变形模式(即,最大程度地减少损失l的3d建模对象),并且因此仅关注于最有意义的变形,而不是使整个形状全局地变形,其将达到距初始3d模型x0太远的优化模型。
[0209]
γ是预定义值,在这里是在收敛速度和结果合理性之间的权衡参数(例如,就与包括第一3d建模对象的3d形状流形的偏差而言)。例如,如果将变形基础归一化,则γ可以小于形状的对角线的
[0210]
现在讨论确定方法的实施方式。
[0211]
此实施方式涉及3d建模和3d编辑的领域。此实施方式可能对诸如虚拟现实和增强现实(更一般地,任何种类的沉浸式体验)、视频游戏、制造和3d打印、建模之类的领域是有用的。此实施方式提供了一种改进的解决方案,用于利用线性变形基础函数(也被称为线性变形场)来推断3d建模对象相对于用户约束的最佳非线性变形。这种变形基础函数可以从任何方法获得,例如利用几何分析或使用机器学习技术。例如,变形基础函数可以是可根据学习方法学习的神经网络,例如已经通过学习方法学习(例如,根据先前讨论的学习方法的
实施方式)。给定此变形基础函数,此实施方式以大而合理的方式使输入3d建模对象(即,第一3d建模对象)变形,以便达到适于用户约束的第二3d建模对象(例如,3d草图)。出于说明目的,此实施方式的3d建模对象被称为“3d网格”,但是它们也可以是3d点云,并且可以用3d点云而不是3d网格同样地执行此实施方式。
[0212]
在此实施方式中,局部变形基础被视为合理的3d建模对象的流形上的切线空间。此实施方式在此流形上寻求最佳3d形状,以满足由用户约束定义的要求。因此,此实施方式搜索最佳速度矢量,即,从原始网格到匹配用户约束的优化编辑网格的流形上的最佳路径的方向导数。可以对此速度进行“积分”以取回对应的路径。为这样做,此实施方式迭代地计算此路径。在每个时间步长处,此实施方式发现变形,从而使路径更接近目标,作为流形上当前位置处的变形基础的矢量的线性组合,并且沿着该矢量迈出了一步。
[0213]
此实施方式可以利用手工制作的变形基础。此实施方式产生大的合理变形。此实施方式最佳地将小的线性变形转化成大的非线性变形。
[0214]
令为用户想要编辑的初始网格的n个顶点。在此实施方式中,变形基础函数由从到的b个平滑函数v1,

,v
b
构成,这些函数定义了变形基础,其中:
[0215]
·
输出归一化变形矢量,对于任何该矢量允许以合理的方式使输入3d建模对象x局部变形,
[0216]
·
可选地,或更一般地,v
i
函数是不相关的,并且表示独立的变形模式。这提高了确定方法的效率。
[0217]
这些函数可以被线性组合以推断输入3d建模对象x的局部合理变形。换言之,是表示输入x的变形的合理的3d建模对象(例如,3d网格或3d点云),其中,{α
i
}
i=1,

,b
是足够小以确保变形保持局部的权重的任何集合。
[0218]
如先前所讨论的,变形基础的变形矢量v
i
可以是以下任何组合:
[0219]
·
由可根据学习方法学习的神经网络(例如,根据学习方法学习的神经网络)输出的线性变形基础的矢量。在这种情况下,的线性变形基础的矢量。在这种情况下,其中,g
w
(f
w
(.),.)是神经网络。例如,f
w
是被配置为将3d建模对象作为输入并输出表示输入3d建模对象的潜在矢量的编码器,而g
w
是深度前馈神经网络,其被配置为将由编码器输出的潜在矢量作为输入并且输出由潜在矢量表示的3d建模对象的变形基础。
[0220]
·
几何和/或物理光谱模式:通过一定量的光谱分解而计算出的特征矢量,例如输入形状的拉普拉斯算子(例如,先前引用的参考文献[12]中考虑的那些拉普拉斯算子)或刚度矩阵(例如,先前引用的参考文献[3]中考虑的刚度矩阵),最终具有增加的力(例如,阻尼力)。
[0221]
·
利用共享对应关系应用于输入形状的数据集的pca的主要分量,从而产生不相关的变形矢量(例如,先前引用的参考文献[7]中考虑的变形矢量)。
[0222]
·
手工制作的几何模式:例如例如先前引用的参考文献[3]中考虑的几何模式。
[0223]
损失是任何用户定义的3d损失n是第一3d建模对象的顶点数或点数,如先前所讨论的,这惩罚不满足用户意图的形状。如先前所讨论的,用户可以例如绘制表示第一3d建模对象的变形形状(即,变形约束)的3d草图s,并且在这种情况下,损失l(x)可以是3d草图的每个点与其在x上最接近的顶点之间的距离之和:
[0224][0225]
其中,x是损失的3d建模对象输入,其中,d是3d建模对象之间的任何距离(例如,倒角距离或地动距离),并且其中,ρ是用于强制一些约束的(可选的,即,λ可以等于0)附加正则化项。例如,ρ(x)可以强制对称:
[0226]
ρ(x)=d(x,x
symmetrized
)。
[0227]
线性局部变形矢量{v
i
(x)}
i=1,

,b
可以被看作是x处的切线空间的基础,即,它们可以用于定义从x0到最佳第二3d建模对象x

的路径的方向导数。根据变形基础的矢量v
i
中的一个,此实施方式可以导出轨迹的集合:
[0228][0229]
·
x(t+dt)=x(t)+α
i
v
i
(x(t))dt
[0230]
·
α
i
dt小是局部变形,并且因此是合理的
[0231]
·
α
i
定义轨迹的速度。
[0232]
通过归纳为b个变形矢量,此实施方式可以计算以下类型的合理轨迹集合之中的轨迹:
[0233][0234]
图3示出了合理形状的流形30、其基础在三个不同位置31、32、33处的切线空间、以及从原始网格/第一3d建模对象34到优化网格/第二3d建模对象35(其是原始网格34的非线性变形)的路径39的方向导数。出于比较的目的,36示出了由用于使34变形的线性轨迹方法产生的网格。图3进一步示出了变形约束37。
[0235]
此实施方式寻求函数的集合使得使得
[0236]
·
当t

+∞时收敛(通过设置总是可能),
[0237]
·
收敛到最小化的网格。
[0238]
此实施方式为确定第二3d建模对象执行了一种使轨迹离散化的算法,以通过用如下序列近似来迭代地计算路径x(t):
[0239]

[0240][0241]
其中α
i,j
较小。
[0242]
对于每个时间步长n,该算法通过求解可微约束优化来计算幅度的集合{α
i,n
}
i=1,

,b
,其中,算法最小化
[0243][0244]
在约束(例如,范数可以是l1或l2范数)下,以确保{α
i,n
}
i=1..b
保持足够小:
[0245]
·
以使离散化有意义(获得合理的非线性变形,而不是大的非合理线性变形)
[0246]
·
并且还强制优化仅选择使x
n
更接近目标的变形模式(即,最大程度地使损失l最小化的第二3d建模对象),并且因此仅关注于最有意义的变形,而不是使整个形状全局变形,其将到达距初始3d模型x0太远的优化模型。
[0247]
γ是收敛速度和结果合理性(就与3d形状流形的偏差而言)之间的权衡参数。例如,如果将变形基础归一化,则γ可以小于形状的对角线的
[0248]
此目标的梯度可以被容易地如下导出:
[0249][0250]
由于优化确保因此保证收敛。应当注意的是,此约束优化问题可以用专用算法来解决。可替代地,可以将约束转化成使用非约束优化方法的附加惩罚项。
[0251]
图4示出了通过使用此实施方式获得的结果的示例。在此实施方式中,用户定义了第一3d建模对象/3d网格40上的变形约束,如下所示:用户通过绘制草图42来选择第一3d建模对象/3d网格的零件,并且通过绘制另一个草图44来定义变形约束。在此示例中,损失是最接近草图42的网格顶点与其在草图44中的对应点之间的距离的平方和。对应点被计算为其草图中的曲线横坐标与草图42中的网格顶点的曲线横坐标最接近的点。使此损失最小化高效地将由草图42选择的网格的零件映射到另一个草图44上。出于比较的目的,图4示出了通过该方法确定的第二3d建模对象/3d网格46,以及表示通过线性回归获得的第一3d建模对象40的变形的另一个3d建模对象48。
[0252]
该确定方法可以在若干种应用中使用。所谓“应用”,意味着一种计算机实现的方
法,其包括确定方法的步骤,并且可以包括进一步的步骤。
[0253]
确定方法的应用的第一示例是3d编辑。3d编辑可以包括以下内容(例如,其迭代):
[0254]

根据确定方法提供第一3d建模对象;
[0255]

根据确定方法提供变形基础函数(其对于所有迭代可以是相同的);
[0256]

根据确定方法提供所提供的第一3d建模对象的变形约束;以及
[0257]

根据确定方法确定遵守变形约束的第二3d建模对象,所确定的第二3d建模对象形成例如下一个第一3d建模对象,即,下一次迭代的第一3d建模对象。
[0258]
应用学习方法的第二个示例是形状匹配。形状匹配包括提供两个3d网格e1和e2,一个网格e1形成所提供的第一3d建模对象,另一个网格e2形成所提供的变形约束。两个网格可以彼此接近,或者可替代地,彼此远离。形状匹配然后包括根据确定方法确定第二3d建模对象,第二3d建模对象是3d网格,该3d网格是与第二3d网格e2匹配或倾向于与其匹配的第一3d网格e1的变形。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1