CN118051964A - 利用渐进式布料模拟的改善建模界面 - Google Patents
利用渐进式布料模拟的改善建模界面 Download PDFInfo
- Publication number
- CN118051964A CN118051964A CN202311113649.XA CN202311113649A CN118051964A CN 118051964 A CN118051964 A CN 118051964A CN 202311113649 A CN202311113649 A CN 202311113649A CN 118051964 A CN118051964 A CN 118051964A
- Authority
- CN
- China
- Prior art keywords
- mesh
- resolution
- simulation
- preview
- cloth
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
- G06T17/205—Re-meshing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/08—Volume rendering
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2113/00—Details relating to the application field
- G06F2113/12—Cloth
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/24—Indexing scheme for image data processing or generation, in general involving graphical user interfaces [GUIs]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/16—Cloth
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/36—Level of detail
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2219/00—Indexing scheme for manipulating 3D models or images for computer graphics
- G06T2219/20—Indexing scheme for editing of 3D models
- G06T2219/2004—Aligning objects, relative positioning of parts
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Architecture (AREA)
- Processing Or Creating Images (AREA)
Abstract
本公开涉及利用渐进式布料模拟的改善建模界面。一种系统访问包括三维(3D)对象和对布料对象建模的网格对象的虚拟场景。该系统执行优化模拟以对布料对象在3D对象上的褶皱进行建模。对于网格分辨率序列中的每个网格分辨率,执行细化模拟包括:确定最小化网格分辨率序列的最细网格分辨率的代理能量函数的网格模型的配置。该系统生成在细化模拟期间经由用户界面显示的可编辑预览对象,该可编辑预览对象包括以最粗级别网格分辨率的网格对象。该系统接收对可编辑预览对象的修改并显示修改的可编辑预览对象。细化模拟中的网格对象的最细级别网格分辨率的配置在几何上与修改的可编辑预览对象的配置一致。
Description
技术领域
本公开总体涉及基于物理的布料褶皱建模技术。更具体地,但不限于,本公开涉及对用于模拟布料褶皱的建模界面的改善。
背景技术
常规的建模系统可以基于布料材料和对象的已知物理属性和相互作用来对对象上的布料褶皱(例如,包括褶皱和折叠)进行建模。
发明内容
本公开描述了用于生成可编辑预览对象的技术,其在用于生成覆盖虚拟布料对象的渐进式布料模拟中使用。一种场景建模系统访问包括三维(3D)虚拟对象和对虚拟布料对象建模的网格对象的虚拟场景。场景建模系统对网格对象执行细化模拟,以对在3D虚拟对象上的虚拟布料对象的褶皱进行建模。对于网格对象的网格分辨率序列中的每一个,执行细化模拟包括:确定网格分辨率序列的最细网格分辨率的代理(proxy)能量函数;确定最小化代理能量函数的网格模型的配置。场景建模系统生成用于经由用户界面显示的可编辑预览对象,可编辑预览对象包括在网格分辨率序列的最粗级别网格分辨率处的网格对象,并且在执行细化模拟期间经由用户界面显示可编辑预览对象。场景建模系统经由用户界面接收对可编辑预览对象的修改。场景建模系统通过用户界面显示修改的可编辑预览对象。由细化模拟中的网格对象的最细化模拟生成的最细化网格的配置在几何上与修改的可编辑预览对象的配置一致。
本文描述了各种实施例,包括方法、系统、存储可由一个或多个处理设备执行的程序、代码或指令的非暂态计算机可读存储介质等。提及这些说明性实施例不是为了限制或定义本公开,而是为了提供帮助理解本公开的示例。在详细描述中讨论了其他实施例,并且在此提供了进一步的描述。
附图说明
当参考附图阅读下面的具体实施方式时,更好地理解本公开的特征、实施例和优点。
图1描绘了根据本文公开的某些实施例,用于生成可编辑预览对象的计算环境的示例,该可编辑预览对象在用于生成覆盖虚拟布料对象的渐进式布料模拟中使用。
图2描述了根据本文公开的某些实施例,用于生成可编辑预览对象的方法,该可编辑预览对象在用于生成覆盖虚拟布料对象的渐进式布料模拟中使用。
图3描述了根据本文公开的某些实施例,用于进行细化模拟并生成用于图2的渐进式布料模拟的预览对象的方法。
图4描述了根据本文公开的某些实施例,用于使用预览模拟和可编辑预览对象来提供对渐进布料模拟的用户控制的方法。
图5示出了根据本文描述的某些实施例,在细化模拟中生成的最细级别的细化网格上使用预览对象改变材料属性的效果。
图6示出了根据本文描述的某些实施例,本文描述的渐进式布料模拟结果与常规布料模拟方法之间的比较。
图7示出了根据本文描述的某些实施例,本文描述的渐进式布料模拟的结果与常规布料模拟方法之间的另一比较。
图8描绘了根据本文公开的某些实施例,执行本文描述的某些操作的计算系统的示例。
图9描绘了根据本文公开的某些实施例,执行本文描述的某些操作的云计算系统的示例。
具体实施方式
在下面的描述中,出于解释的目的,为了提供对某些实施例的透彻理解,提出了具体细节。然而,显而易见的是,可以在没有这些具体细节的情况下实施各种实施例。这些数字和描述并不是为了限制。本文中使用的词语“示例性”或“示例”意为“作为示例、实例或说明”。本文中描述为“示例性”或“示例”的任何实施例或设计不一定被解释为优选于或优于其他实施例或设计。
在基于在对象上褶皱的布料的已知物理属性和相互作用(例如薄壳力学)来对布料褶皱进行建模的常规布料建模系统中,在实现物理上逼真的布料模拟(保真度)和计算效率的模拟(速度)之间存在折衷。当模拟极端规模的布料网格(包括在短时间段(例如,不到一秒)内按时间步进的数百万个顶点)时,可以优选高速方法。然而,常规的高速方法达到的速度需要简化和限制模型中的假设,以确保计算保持在预定义的限制/预算内。引入这些假设显著降低了使用高速方法建模的布料材料的材料属性、几何图形和接触行为的保真度和表达范围,从而导致交叉点、不规则的非物理几何图形、不可控的不稳定性以及无法准确表示常见材料(例如棉花斜纹)等形式的不可接受的建模错误。常规的高保真方法,诸如余维增量势接触(Codimensional Incremental Potential Contact C-IPC)布料模型,不会做出这些简化和限制的假设,因此可以模拟比高速方法输出的布料更逼真的布料褶皱,并且还可以模拟比高速方法更多类型的材料。然而,与常规的高速方法相比,这些常规的高保真方法需要更多的时间来生成结果,并且需要更多的计算资源来生成输出。因此,无论是高保真还是高速常规方法,都不能提供物理上真实且在可接受的计算成本内的结果。
常规的建模系统试图在高保真方法中的速度和计算资源的损失与高速模拟中的真实感的损失之间架起桥梁。例如,一些常规的建模系统使用高速方法作为预览视觉化(预览)以探索场景变化(例如,几何、材料、边界条件),然后使用从高速方法确定的参数作为高保真方法的输入。常规的非线性多层(NML)优化方法(例如,敏感高级(SC)方法)分层且连续地尝试通过从粗模拟开始并以最终的高分辨率结果网格结束来改善结果网格。但是,这些常规的渐进式布料模拟方法不能确保递增网格分辨率时的一致性。例如,可能引入任意且同样正确的跨分辨率和不可接受的伪像(例如,扭结kinks)的“折叠跳跃(fold jumps)”,并将其前向传播到更细化的分辨率和最终的高分辨率结果网格。因此,在这些常规NML方法中,最终的高保真输出可能与由用户修改的粗网格有很大不同,并且将具有伪像,这降低了用户界面在这些常规NML方法中的有用性。
本文描述的某些实施例通过提供预览模拟器来解决常规布料建模系统的局限性,该预览模拟器的输出对于任何褶皱,在增加分辨率方面,在各级别上具有一致的折叠几何形状而被渐进改善。预览模拟器使用与相应的最终、收敛的细化配置一致的粗分辨率网格,在任何配置中提供对模拟布料的褶皱的高效且准确的预览。本文描述的预览模拟器使得能够渐进且一致地改善解决方案,从粗网格预览开始并以收敛的且因此精确的细化网格结果结束。本文描述的改善的渐进式布料模拟方法使用针对网格的每个分辨率的预览模拟器来预测将由相应的融合的高分辨率和高保真度模拟生成的粗的折叠和褶皱,使得能够比常规的渐进式布料模拟方法更可预测的布料褶皱建模,常规的渐进式布料模拟方法不提供跨分辨率的一致性并且在分辨率之间引入折叠跳跃和其他伪像。因此,这种改善的渐进式布料模拟还通过生成与用户对粗网格模型的改变的视图基本一致的输出网格来改善建模界面。
此外,本文描述的改善的渐进式布料模拟方法提供预览模拟器,其可以以任何网格级分辨率中断渐进式模拟,以使用户能够更新参数(例如,改变虚拟布料的材料、通过使粗分辨率网格变形或直接拉动虚拟布料对象以将其布置在场景中来改变虚拟布料的空间配置),然后利用应用的改变的参数来恢复对粗网格的细化。与常规系统相比,允许以任何分辨率中断模拟降低了实现期望结果所需的计算成本,常规系统仅在模拟完成之后才能进行编辑,并且在用户对网格对象进行一系列编辑时增加了计算资源的使用。
提供以下非限制性示例以介绍某些实施例。在该示例中,场景建模系统访问包括三维(3D)虚拟对象以及虚拟布料对象的3D虚拟空间。3D虚拟对象可以是桌子、水果篮或布料可以在其上被褶皱的其他对象。3D虚拟空间可以表示诸如房间或室外空间的环境。例如,场景建模系统访问包括在3D虚拟空间内显示的3D水果篮对象的3D虚拟空间。3D虚拟对象可以包括定义的尺寸、轮廓或定义3D虚拟空间内的3D虚拟对象占据的体积的其他信息。虚拟布料对象表示一维薄的壳体(shell)材料。虚拟布料对象可以包括布料或类布料材料、毛毡、纸、塑料或聚合物片、或在一维上薄的其他壳体材料。例如,虚拟布料对象可以是桌布、毯子、衬衫、洗碗巾或其他布料对象。虚拟布料对象与参数相关联。参数可以定义布料的材料(例如,棉、毛、丝、亚克力或其他材料)、布料的几何形状(例如,正方形、矩形)、布料在虚拟空间中相对于3D对象的位置、或布料的其他特性。在一些情况下,场景建模系统响应于接收用户输入来访问包括3D虚拟对象和虚拟布料对象的3D虚拟空间。例如,在用户的用户计算设备(例如,移动设备)上执行的建模应用与场景建模系统相关联并与其通信(例如,经由网络)。在该示例中,用户访问建模应用,在用户计算设备的用户界面上选择一个或多个对象以请求访问3D虚拟对象或生成新的3D虚拟对象(例如,水果篮)和新的布料对象(例如,在篮子中的水果上褶皱的装饰性毛巾),场景建模系统响应于接收到用户选择而访问包括3D对象和虚拟布料对象的3D虚拟场景,并且场景建模系统经由用户计算设备的用户界面提供包括3D虚拟对象和虚拟布料对象的3D虚拟场景用于显示。在一些情况下,虚拟布料对象位于3D对象的上方。例如,餐巾对象位于水果碗对象的上方,并且餐巾没有褶皱或折叠。
场景建模系统模拟虚拟布料对象在3D对象上的褶皱。例如,对于位于水果碗对象上方的餐巾,场景建模系统从其在虚拟空间中的当前位置确定餐巾在水果碗上的褶皱。模拟褶皱包括基于布料对象的参数并且在表示虚拟布料对象的网格对象的递增网格分辨率序列的每一个处确定网格对象的配置。递增网格分辨率的序列可以包括最粗网格分辨率、一个或多个可选的中间网格分辨率和最细网格分辨率。网格对象可以包括形成相邻三角形网格的节点。随着网格对象分辨率的增加,网格对象的三角形数量也会增加。例如,与最终的高分辨率结果网格相比,粗分辨率网格包含的三角形数量较少(分辨率较低)。网格对象的配置是网格对象的节点在虚拟空间内的几何排列,其中节点形成网格对象的三角形的角。场景建模系统可以定义包括从一个网格分辨率级别映射到下一个(更细化)网格分辨率级别的映射函数(例如,延长运算符)的三角形网格分层结构。在一些情况下,三角形网格层次是嵌套的三角形网格层次。场景建模系统可以在网格对象的细化期间,在褶皱的模拟期间,并且通过代理能量函数在每个网格分辨率级别确定网格对象的配置,使得所确定的配置最小化定义网格对象的最细网格分辨率的代理能量函数。场景建模系统确定每个分辨率级别的代理能量函数,并在网格对象的细化期间最小化每个级别的代理能量函数。在一些情况下,预定代理能量函数基于已知布料对象相互作用的组合,已知布料对象相互作用包括膜相互作用、弯曲相互作用、接触屏障(contact barrier)相互作用、摩擦相互作用、应变限制相互作用、用户对虚拟布料对象的拉动和拖动、碰撞几何图形的用户变换、以及由虚拟布料对象的参数定义的布料材料的其他相互作用。例如,棉花材料与其自身及其环境的相互作用不同于羊毛材料的相应相互作用。
在褶皱的模拟期间,场景建模系统可以显示由虚拟布料对象的最粗级别分辨率网格表示的预览对象。在虚拟布料对象的褶皱的模拟期间的任何点上,用户可以修改预览对象和/或其环境,该模拟涉及以越来越细化的网格分辨率细化网格对象。例如,用户可以通过移动网格对象的一个或多个节点、通过改变与虚拟布料对象相关联的属性(例如,将材料从羊毛改变为棉)、改变由褶皱模拟建模的虚拟布料对象的多个物理交互、改变虚拟布料对象的位置或对预览对象的其他修改来修改预览对象。修改预览对象的环境可以包括改变与预览对象接触的几何图形的位置和方向。场景建模系统可以接收具有将用户改变应用于预览对象并随后修改预览对象的请求的输入。场景建模系统从修改的预览对象开始褶皱模拟,修改的预览对象是具有最粗级别分辨率的网格对象。在一些情况下,用户可以等待直到完成褶皱的模拟之后才修改预览对象。在一些情况下,用户可以在模拟期间的任何时刻通过新的编辑安全地中断褶皱的模拟。当没有接收到对预览对象的更多改变并且完成了对最近修改的预览对象的褶皱的模拟时,场景建模系统可以基于模拟的最细级别分辨率网格对象来显示覆盖在3D对象上的虚拟布料对象。
场景建模系统使用以最细网格分辨率确定的网格对象的配置,经由用户界面显示覆盖在3D对象上的虚拟布料对象。例如,场景建模系统显示在水果碗对象上褶皱的餐巾对象,其中该餐巾对象在虚拟空间中的配置和位置对应于网格对象的配置和位置。例如,场景建模系统基于网格对象在最细网格分辨率下的配置来显示具有对应于网格对象的表面轮廓的折叠、褶皱和其他轮廓的布料对象。在一些情况下,用户可以通过选择用户界面的一个或多个对象来在布料对象的视图和网格对象之间交替。
本文描述的实施例特别提供了一种界面,以使得能够修改将在视觉上类似于网格对象的最细网格分辨率的预览对象,从而显著改善了与常规建模界面相比的建模界面的功能。如前所述,在常规建模界面中,处于最粗分辨率级别的修改的网格模型可能与所修改的网格模型的最细网格分辨率不一致。本文描述的实施例的可编辑预览对象优于常规系统中的可编辑网格模型,这是因为用户对其几何形状的修改与网格对象的最细网格分辨率的几何形状一致,而在常规建模界面中,伪像和其他误差被传播到更细化的分辨率和最终的高分辨率结果网格,导致可能不类似于初始编辑的网格对象并且通常具有显著视觉伪像的最细网格分辨率。因为网格对象的最终分辨率与本文描述的实施例中对预览对象所做的修改基本一致,所以与常规建模界面相比,可以减少对建模界面的多个输入(例如,对网格对象执行的后续编辑操作)以实现虚拟布料对象的期望褶皱,这可能产生与用户对粗级别网格所做的编辑在几何上不一致的结果网格(例如,引入折叠和其他伪像),并且因此需要用户进一步编辑以实现目标褶皱。
用于提供用于生成覆盖虚拟布料对象的渐进布料模拟的示例操作环境
现在参考附图,图1描绘了计算环境100生成可编辑预览对象的示例,该可编辑预览对象在用于生成覆盖虚拟布料对象103的渐进式布料模拟中使用。计算环境100包括场景建模系统110,场景建模系统110可以包括执行预览模拟器子系统112和细化模拟器子系统118的一个或多个处理设备。在某些实施例中,预览模拟器子系统112和细化模拟器子系统118中的每一个都是连接到网络130的网络服务器或其他计算设备。预览模拟器子系统112访问或以其他方式接收3D对象104和虚拟布料对象101。例如,预览模拟器子系统112从场景建模系统110的数据存储单元111或场景建模系统110可访问的数据存储单元111访问3D对象104和虚拟布料对象101。在某些示例中,3D对象104和虚拟布料对象101在3D虚拟空间中被表示,其中虚拟布料对象101相对于3D对象104定位(例如,位于其上方)。在某些示例中,3D对象104和/或虚拟布料对象101由用户使用建模应用121生成。虚拟布料对象101与参数102相关联。参数102可以定义布料的材料(例如,棉、毛、丝、亚克力或其他材料)、布料的几何形状(例如,正方形、矩形)、虚拟布料对象101在虚拟空间中相对于3D对象104的位置、或虚拟布料对象101的其他特性。在一些情况下,用户可以经由用户计算设备120的用户界面123来配置参数102。例如,用户可以选择一个或多个用户界面123对象来选择材料(例如,棉、毛、丝、亚克力、牛仔布等)。和/或改变虚拟空间内的虚拟布料对象101的几何形状/位置。
场景建模系统110生成覆盖虚拟布料对象103。覆盖虚拟布料对象103在3D对象104上褶皱。场景建模系统110使用网格对象108生成覆盖虚拟布料对象103。在一些示例中,预览模拟器子系统112经由网络130从建模应用121接收3D对象104和虚拟布料对象101以及表示虚拟布料对象101的网格对象108。在一些情况下,场景建模系统110为3D对象104生成网格对象108。网格对象108包括布置在虚拟空间中的节点(顶点)以及形成网格对象的三角形的角。在一些情况下,表示虚拟布料对象101的网格对象是具有粗网格分辨率(例如,如图1所示的分辨率1)的网格对象108。示例网格分辨率为网格对象108定义了预定义数量的三角形,或者为网格对象108定义了预定义数量的节点,这导致了预定义数量的三角形。
生成覆盖虚拟布料对象103包括执行网格对象108的细化模拟。执行细化模拟包括由细化模拟器子系统118基于虚拟布料对象101的参数102并且在表示虚拟布料对象101的网格对象108的递增网格分辨率序列(例如如图1所示的分辨率1、分辨率2、…分辨率n)中的每一个处确定网格对象108的配置。例如,粗网格分辨率(例如分辨率0)包括网格对象的预定义数量的三角形(或节点)。网格对象108在每个网格分辨率序列的配置最小化最细网格分辨率(例如,分辨率n)的预定代理能量函数。细化模拟器子系统118在每个网格分辨率级别确定网格对象108的最细级别网格分辨率(例如,n个网格分辨率序列的分辨率n)的代理能量函数,然后确定网格对象108在下一个网格级别分辨率的配置,该配置最小化代理能量函数。在该示例中,所确定的配置是处于下一网格分辨率级别(例如,分辨率级别1或小于n的其他值l)的细化网格对象108-lR。在细化模拟期间,预览模拟器子系统112在预览模拟中生成粗网格预览108-0P。粗网格预览108-0P被显示,并且可以通过用户界面123进行修改。粗网格预览108-0P可以被修改以在细化模拟期间的任何点生成修改的粗网格预览108-0M。修改粗网格预览108-0P可以包括改变粗网格预览108-0P中的节点/顶点的配置或改变虚拟布料对象101的参数102(例如,将正被建模的材料从布料改变为羊毛)。在图1所示的示例中,修改粗网格预览108-0P以在已经执行了细化模拟的若干网格分辨率之后生成修改的粗网格预览108-0M。如图1所示,在生成修改的粗网格预览108-0M之后,场景建模系统110使用修改的网格预览108-0M作为起始网格来重新开始细化模拟。在本文描述的示例实施例中,通过接收对粗网格预览108-0P的修改而生成的修改的粗网格预览108-0M的配置与经由细化模拟器子系统118生成的最细化网格对象108-nR的配置一致。关于执行细化模拟和生成粗网格预览对象的更多细节在图3中描述。场景建模系统110基于细化的最细分辨率网格对象108-nR生成覆盖的布料对象103。场景建模系统110可以经由用户计算设备120的用户界面123在虚拟空间中显示覆盖在3D对象104上的覆盖布料对象103,其中基于细化的最细分辨率网格对象108-nR确定覆盖布料对象103的几何形状。
场景建模系统110包括数据存储单元111。示例数据存储单元111可由场景建模系统110访问,并且存储用于场景建模系统110的数据。在一些情况下,数据存储单元111存储3D虚拟对象104、虚拟布料对象101、与虚拟布料对象101相关联的参数102、基于虚拟布料对象101生成的网格对象108、以及由场景建模系统110生成的覆盖布料对象103。
示例用户计算设备120包括建模应用121、用户界面123和数据存储单元125。在某些实施例中,用户计算设备120是智能电话设备、个人计算机(PC)、平板设备或其他用户计算设备120。在一些实施例中,用户计算设备120经由网络130与场景建模系统110通信。
在一些实施例中,建模应用121与场景建模系统110相关联,并且用户将建模应用121下载到用户计算设备120上。例如,用户使用用户计算设备120访问场景建模系统110的应用商店或网站,并请求将建模应用121下载到用户计算设备120上。建模应用121在用户计算设备120上操作,并且使得用户计算设备120的用户能够检索3D对象104和虚拟布料对象101。建模应用121使用户能够经由用户界面123与场景建模系统110交互。建模应用121可以与用户界面123通信以接收来自用户的一个或多个输入。建模应用121可以指示用户界面123以递增网格分辨率来显示3D对象104、显示虚拟布料对象101、显示网格对象108、显示粗网格预览108-0P以及显示递增网格分辨率的细化网格对象(例如,对于l的一个或多个值的108-lR,108-nR)。在一些实施例中,建模应用121与场景建模系统110的预览模拟器子系统112、细化模拟器子系统118或数据存储单元111中的一个或多个通信。
在某些实施例中,建模应用121包括预览模拟器子系统112和细化模拟器子系统118,并且执行本文描述为由子系统112和118执行的操作。例如,在某些实施例中,用户计算设备120的建模应用121可以为虚拟布料对象101生成网格对象108,并且基于虚拟布料对象101的参数102以及在表示虚拟布料对象101的网格对象108的网格分辨率序列(例如,对于l的一个或多个值的分辨率l,以及最细分辨率n)的每一个处生成网格对象108的配置。在图1中,由细化的中间网格对象108-lR表示在每个网格分辨率l处确定的配置。如图1中描绘的细化中间网格对象108-lR左侧的箭头所示,可以针对多个网格分辨率执行细化模拟。尽管图1中描绘了三个箭头,但细化模拟器子系统118可以将网格细化成比所描绘的三个分辨率更多或更少的网格分辨率。例如,细化模拟器子系统118可以在细化模拟中对网格执行一次、二次、五次、十次、二十次或其他次数的细化。此外,如图1所示,在推进网格对象108的一个或多个网格分辨率之后,可以通过修改粗网格预览108-0P来中断细化模拟,然后使用修改的粗网格预览108-M在最粗网格分辨率级别重新开始。尽管在图1中将细化模拟描绘为被中断一次并且响应于接收到对粗网格预览108-0P的修改而重新开始,但是在一些情况下,使用反映对粗网格预览108-0P的最新修改的修改的粗网格预览108,可以多次中断细化模拟并重新开始多次。
数据存储单元125对于用户计算设备120是可访问的,并且存储用于用户计算设备120的数据。在一些情况下,数据存储单元125存储3D虚拟对象104、虚拟布料对象101、与虚拟布料对象101相关联的参数102、基于虚拟布料对象101生成的网格对象108、以及由场景建模系统110生成(或由应用121生成)的覆盖布料对象103。在一些情况下,场景建模系统110可以通过网络130访问数据存储单元125。例如,场景建模系统110可以经由网络130访问存储在数据存储单元125中的数据。
用户界面123可以包括触摸屏显示界面,具有单独输入设备(例如鼠标)的显示设备(例如显示器),或者可以从用户接收一个或多个输入并向用户显示信息或提供其他输出的其他用户界面123。例如,用户界面123可以显示用户选择的3D对象104和虚拟布料对象101,以及显示与虚拟布料对象101相关联的网格对象108。在一些情况下,用户界面123显示覆盖虚拟布料对象101的网格对象108。在一些情况下,用户界面123从用户接收一个或多个输入,以定义虚拟布料对象101的参数102(或将参数102改变为修改的参数107)。在一个示例中,用户使用一个或多个用户界面123对象来定义参数102,诸如虚拟布料对象101的材料。例如,用户从棉花、羊毛和丝绸中选择棉花作为参数102。在另一示例中,用户修改定义虚拟布料对象101在虚拟空间内的位置的参数102。在又一示例中,用户可以使用用户界面123选择并拖动表示虚拟布料对象101的初始网格对象108的一个或多个节点(顶点),以改变虚拟空间中的虚拟布料对象101的配置。在一些情况下,用户界面123显示被定义和/或修改的参数102的视觉指示。例如,用户界面123可以将虚拟布料对象101的外观修改为对应于所选材料。(例如,羊毛花呢、人字形图案)。在一些情况下,用户界面123显示粗网格预览108-0P对象,并且显示一个或多个细化网格对象(例如,针对l的一个或多个值的108-lR,以及108-nR)。在一些情况下,用户界面123响应于用户界面123接收到对粗网格预览108-0P的编辑而显示修改的粗网格预览108-0M。
如图1所示,场景建模系统110可以显示由预览模拟器子系统112生成的粗网格预览对象108-0P,并且可以向用户提供对渐进布料模拟的控制。生成粗网格预览108-0P,使得响应于对粗网格预览108-0P的编辑而生成的修改的粗网格预览108-0M的配置与将在基于修改的粗网格预览108-0M的细化模拟中产生的经细化的最细分辨率网格对象108-nR的配置一致。一致的配置意味着修改的粗网格预览108-0M的配置的任何折叠、褶皱、缩进或其他几何特征与细化的最细分辨率网格对象108-nR的配置的对应特征一致。如图1所示,场景建模系统110可以使用户能够在任何中间网格预览之后(例如,在图1中描述的示例中,在生成第二细化中间网格对象108-lR之后)暂停105细化模拟的进度。在暂停细化模拟的同时,在一些情况下,用户可以执行参数102的修改105,以生成用于虚拟布料对象101的修改参数107。例如,修改参数102可以包括改变虚拟布料对象101的材料(例如,从棉花到羊毛)、改变虚拟布料对象101在虚拟空间内的位置、以及改变虚拟布料对象101的配置(例如,通过修改针对虚拟布料对象101生成的原始网格对象108)。如果用户将参数102改变为修改的参数107或以其他方式改变粗网格预览108-0P的配置,则场景建模系统110基于所述改变生成修改的粗网格预览108-0M,然后使用修改的粗网格预览108-0M重新开始细化模拟。例如,细化模拟器子系统118基于虚拟布料对象101的修改的参数107并且在递增网格分辨率序列的每一个处生成网格对象108的配置,直到确定细化的最细分辨率网格对象108-lR。在一些情况下,用户界面123可以在确定细化中间网格对象108-lR和细化最细分辨率网格对象108-nR时显示它们中的一个或多个。如果用户不改变参数102或粗网格预览108-0P的配置,则用户界面123显示下一个细化的中间网格对象108-lR,或者如果在细化模拟中已达到最终网格分辨率,则用户界面123定义细化的最细分辨率网格对象108-nR。
包括预览模拟器子系统112和细化模拟器子系统118的场景建模系统110可以使用由一个或多个处理设备(例如,处理器、核)、硬件或其组合执行的软件(例如,代码、指令、程序)来实现。该软件可以存储在非暂态存储介质上(例如,存储器组件上)。图1中描绘的计算环境100仅是示例,并不旨在不适当地限制所要求保护的实施例的范围。本领域的普通技术人员将认识到许多可能的变化、替代和修改。例如,在一些实现中,场景建模系统110可以使用比图1中所示的系统或子系统更多或更少的系统或子系统来实现,可以组合两个或更多个子系统,或者可以具有不同的系统或子系统的配置或布置。
用于生成覆盖虚拟布料对象的渐进式布料模拟的计算机实现操作的示例
在本文描述的实施例中,场景建模系统110可以以具有存储在矢量中的n个节点的高分辨率三角网格的模拟为目标。场景建模系统110提供可控制的、有表现力(expressive)的和渐进式的建模,该建模在整个真实世界材料参数102的范围内,在任何配置中,获得虚拟布料对象101褶皱几何图形的高质量、细化分辨率的模拟。例如,高质量的模拟是收敛的、非穿透(non-interpenetrating)的(不穿透虚拟场景中的其他对象)和无伪像的。场景建模系统110还利用粗分辨率预览对象网格提供对模拟的虚拟布料对象101(例如,覆盖虚拟布料对象103)的预览,其中编辑的粗分辨率预览对象网格的配置与对应的最终收敛的细级别模拟配置一致。此外,场景建模系统110允许从粗网格预览对象开始并以收敛的细网格几何图形结束的结果网格的渐进式分辨率改善。图2、图3和图4提供了关于这些特征的更多细节。
图2描绘了根据本文公开的某些实施例,用于生成可编辑预览对象的方法的示例,该可编辑预览对象在用于生成覆盖虚拟布料对象103的渐进式布料模拟中使用。一个或多个计算设备(例如,场景建模系统110或其中包含的各个子系统)实现图2中描述的操作。出于说明性目的,参考附图中描述的某些示例来描述方法200。然而,其他实现也是可能的。
在本文描述的某些实施例中,场景建模系统110与用户计算设备120分开,并且经由网络130与用户计算设备120通信。然而,在一些实施例中,场景建模系统110是用户计算设备120的组件,并且本文描述的由场景建模系统110(或其一个或多个子系统112或118)执行的操作由用户计算设备120的建模应用121执行。在一些实施例中,场景建模系统110与用户计算设备120分开,但是本文描述的由场景建模系统110(或其一个或多个子系统112和118)执行的一个或多个操作由用户计算设备120的建模应用121执行。
在框210,方法200涉及由场景建模系统110访问包括三维(3D)对象104和虚拟布料对象101的虚拟场景。3D对象104可以是汽车、人脸、建筑物、衣服、植物或其他对象。虚拟布料对象101可以是餐巾、桌布、毯子或其他虚拟布料对象101。在一些情况下,3D对象104可以显示在3D虚拟空间中。在一些情况下,3D虚拟空间表示诸如房间或室外空间的环境。3D对象104和虚拟布料对象101可以各自包括定义的尺寸、轮廓或定义3D对象104和虚拟布料对象101在3D虚拟空间内占据的体积的其他信息。在一些情况下,场景建模系统响应于接收用户输入来访问包括3D对象104和虚拟布料对象101的3D虚拟空间。例如,用户访问在用户计算设备120上执行的建模应用121(或网络浏览器应用),在用户计算设备的用户界面123上选择一个或多个对象以请求访问3D对象104和虚拟布料对象101或生成新的3D对象104和新的虚拟布料对象101。场景建模系统110接收用户的输入并响应于接收到用户选择而访问3D对象104和虚拟布料对象101,并且场景建模系统110提供3D对象104和虚拟布料对象101以用于经由用户计算设备120的用户界面123进行显示。在一些情况下,用户可以使用用户界面123在虚拟空间内定位和/或重新定位虚拟布料对象101和/或3D虚拟对象104。例如,用户可以将虚拟布料对象101放置在3D对象104之上,并请求场景建模系统110对虚拟布料对象101在3D对象104上的褶皱进行建模。
在框220,方法200涉及由场景建模系统110执行细化模拟以对虚拟布料对象101在3D对象104上的褶皱进行建模,其中执行细化模拟包括在表示虚拟布料对象101的网格对象108的递增网格分辨率序列的每一个处确定网格对象108的配置,其中网格对象108在网格分辨率序列的每一个处的配置最小化为最细级别网格分辨率确定的代理能量函数。在一些情况下,场景建模系统110接收表示虚拟布料对象101的网格对象108。在其他情况下,场景建模系统110为虚拟布料对象101生成网格对象108。
在某些实施例中,场景建模系统110为递增网格分辨率的序列构建嵌套三角形网格层次结构,该嵌套三角形网格层次结构包括从一个网格分辨率级别映射到下一个(更细化)网格分辨率级别的映射函数(例如延长运算符)。按下标l∈[0,L]递增索引的嵌套三角网格层次,其中xl和分别是级别l的网格中nl个节点的变形位置和静止位置的向量,其中相应的三角剖分在中索引。与最粗网格分辨率对应的节点(顶点)的变形位置由x0表示,而与收敛的高质量模拟输出的最细网格分辨率对应的目标网格中的节点位置由xL表示。对于嵌套的三角形网格分层结构,场景建模系统110引入将从级别l到l+1的节点细化为的运算符的线性延长(例如,满列秩),而使用最小二乘(从级别l到l+1的映射节点)确定的对应的线性投影运算符是
对于每个模拟网格(在网格分辨率序列中的每一个),场景建模系统110确定用其自身和/或其环境对虚拟布料对象101的物理属性建模的势能。势能可以包括膜相互作用势能(Ψ)、弯曲相互作用势能(Φ)、接触势能(B)、摩擦相互作用势能(D),以及在一些情况下,应变限制势能(S)。在一些情况下,场景建模系统110使用neo-Hookean膜和离散铰链弯曲模型来表示壳体弹性,以及用于接触、摩擦和应变限制交互的C-IPC屏障(barrier)。场景建模系统110模拟摩擦接触中的壳的平衡以表示虚拟布料对象101,其中离散壳模型的稳定平衡是总势能的局部最小化,
其中x和表示最细级别的量xL和其中El是势能的总和,El=Ψl+Φl+Bl+Dl+Sl,其中u收集可由用户或建模应用121改变的材料和边界条件参数。场景建模系统110可以为满足约束的每个级别l的空间离散化确定具有物理网格几何形状的收敛且高质量的平衡解。例如,场景建模系统110可以使用来自C-IPC模型的牛顿递减范数。渐进模拟应在参数102(例如,材料特性)和/或边界条件的较大变化范围内获得这些收敛解。
在框230,方法200涉及构建包括网格对象的最粗分辨率的可编辑预览对象以经由用户界面123显示,所生成的可编辑预览对象使得经由细化模拟生成的网格对象的最细级别网格分辨率的配置与可编辑预览对象的配置以及对可编辑预览对象的配置的任何修改一致。在一些实施例中,可编辑预览对象(例如,粗网格预览108-0P对象)经由用户界面123显示并且可以经由用户编辑。编辑包括对与网格对象108相关联的参数102的一个或多个改变,例如,对粗网格预览108-P对象的配置的改变。改变配置可以包括改变粗网格预览108-0P对象中的一个或多个节点/顶点的位置。参数102还可以包括由粗网格预览108-0P建模的虚拟布料对象101的材料,在细化模拟中建模虚拟布料对象101与其自身以及与其环境的一个或多个物理交互(包括与3D虚拟对象104的交互)。在一些情况下,参数102可以包括材料属性、边界条件(狄利克雷特Dirichlet和碰撞几何)、外力和处置(handles)。粗网格预览108-0P对象可以是交互式用户界面123工具,以允许通过操纵、创建和删除处置和碰撞几何图形以及更新材料参数来交互控制虚拟场景。在一些实施例中,粗网格预览108-0P对象包括变换窗口小部件(widgets),以控制碰撞器和处置,并支持旋转、缩放(均匀和非均匀)和平移以操纵虚拟布料对象101的褶皱和设置。在一些实施例中,粗网格预览108-P包括对应于材料(例如,棉、重羊毛、轻羊毛、羊毛粗花呢、真丝以及可建模的任何其他材料类别)的下拉预设的菜单以及定制调整材料参数以细化褶皱或应用替代材料的选项。
在经由用户界面123接收到对粗网格预览108-0P对象的每次编辑后,预览模拟器子系统112使用渐进预览模拟106生成修改的粗网格预览108-0M。每次用户编辑网格预览对象(初始粗网格预览108-0P对象或一个或多个后续修改的粗网格预览108-0M对象)时,场景建模系统110回复到缓存的粗解决方案,根据用户所做的编辑改变参数102,并重新开始渐进模拟。在粗网格预览108-0P对象上执行的处置和几何变换被立即应用到模拟,作为边界条件约束和惩罚能量的目标,并且通过使包括碰撞几何和布料模拟域的底层预览模拟器渐进朝向目标递增地满足。因此,粗网格预览108-0P对象允许对虚拟布料对象101和碰撞器进行不受约束的实时编辑,同时还保证虚拟布料对象101的褶皱的最终状态在所有渐进式细化级别都是无交集的,以确保高质量输出。
因此,本文描述的实施例中,场景建模系统110提供两个模拟:细化模拟109和预览模拟106。在细化模拟109中,细化模拟器子系统118针对固定的一组条件ut执行解(网格对象108的节点/顶点的配置)从网格分辨率级别l到网格分辨率级别l+1的渐进空间改善。在预览模拟106中,预览模拟子系统112在可能变化的一组条件u上在网格分辨率级别l上执行解的准静态推进,从时间步长t到t+1,直到达到可在其上执行细化模拟109的平衡预览配置。改善模拟109确保在时间t给出的对于固定条件ut的收敛的细化级别解具有一致性地渐进改善。预览模拟106继续对在时变参数102中编码的条件ut→ut+1的持续变化进行互补的前向探索。
在某些实施例中,在给定网格对象108,xt,的当前非平衡配置的情况下,场景建模系统110可以通过使用隐式欧拉法对梯度流进行时间步进来步入稳定状态。应用大的时间步长h(例如,h∈[0.05,0.5s])来增强隐式欧拉的数值耗散,这相当于通过最小化更新的增量势来计算从时间步长t到t+1的前向准静态位置更新,其可以表示为:
其中xt表示最后一步的模拟形状,并且ut+1通过在模拟步骤中将网格对象108的配置移出平衡来收集驱动前向改变的时变场景参数。对于不变的u,可以重复时间步进,直到xt+1=xt,从而达到新的平衡。在本示例中,节点向量上的上标t索引准静态时间戳。
在本文描述的某些实施例中,场景建模系统110提供单向非线性多分辨率解算器,该解算器在每个步骤t处提供顺序改善的自洽预览模拟解决方案的层级,其中表示网格模型108的最粗网格分辨率,表示网格模型108的中间网格分辨率,并且表示网格对象108在最细网格分辨率之前的网格分辨率。最终的、最细的网格分辨率解是底层布料模型的收敛解,此外,在最粗0和最细L之间的分辨率的所有级别l处(l∈[0,L]),每个单独的解独立地为前向模拟提供稳定的解。
在图3和图4中描述了用于使用场景建模系统110提供模拟虚拟布料对象101在3D对象104上的褶皱的渐进式布料模拟的进一步细节。
在框240,方法200涉及基于对可编辑预览对象的编辑,使用在最细网格分辨率的细化模拟中确定的网格对象108的配置,经由用户界面123显示覆盖在3D对象104上的虚拟布料对象。例如,场景建模系统110显示在3D对象104上褶皱的覆盖虚拟布料对象103,该虚拟布料对象103具有对应于细化的最细分辨率网格对象108-nR的表面的轮廓的折叠、褶皱和其他轮廓。在一些情况下,用户可以通过选择用户界面的一个或多个对象来在布料对象的视图和细化的最细分辨率网格对象108-nR之间交替。
图3描绘了根据本文公开的某些实施例的用于在图2的渐进式布料模拟中对网格分辨率序列中的每一个进行细化模拟和预览模拟的方法的示例。一个或多个计算设备(例如,场景建模系统110或其中包含的各个子系统)实现图3中描述的操作。出于说明性目的,参考附图中描述的某些示例来描述方法300。然而,其他实现也是可能的。
在本文描述的某些实施例中,场景建模系统110与用户计算设备120分开,并且经由网络130与用户计算设备120通信。然而,在一些实施例中,场景建模系统110是用户计算设备120的组件,并且本文描述的由场景建模系统110(或其一个或多个子系统112或118)执行的操作由用户计算设备120的建模应用121执行。在一些实施例中,场景建模系统110与用户计算设备120分开,但是本文描述的由场景建模系统110(或其一个或多个子系统112和118)执行的一个或多个操作由用户计算设备120的建模应用121执行。在某些实施例中,方法300是用于实现图2的框220的方法。
在框310,方法300涉及由细化模拟器子系统118在当前网格分辨率级别确定网格对象108的最细级别分辨率的代理能量函数。在每个级别l<L(其中L是最细的网格分辨率),细化模拟器子系统118构造混合分辨率目标函数,
Fl(xl)=Cl(xl)+G(Plxl) (3)
其中该函数是网格的最细级别分辨率(L)的代理能量。在算式(3)中,xl表示网格对象108在当前网格分辨率下的节点/顶点的空间配置,Cl(xl)表示基于屏障的势能,并且G(Plxl)表示壳体膜和弯曲势能。例如,细化模拟器子系统118从最粗网格分辨率级别l=0开始,并确定最粗网格分辨率级别的代理能量函数(算式3)。基于屏障的势能Cl(xl)可以在下式收集:
Cl(xl)=Bl(xl)+Dl(xl+Sl(xl) (4)
其中Bl(xl)表示接触屏障相互作用,Dl(xl)表示摩擦相互作用,以及Sl(xl)表示应变限制相互作用。壳体膜和弯曲势能可表示为:
G(Plxl)=Ψ(Plxl)+Φ(Plxl) (5)
其中Ψ(Plxl)表示膜势能,并且Φ(Plxl)表示弯曲势能,在最细网格分辨率级别(L)下评估,使用重复延伸到最细尺度,因此,细化模拟器子系统118对当前网格分辨率级别(l)的几何形状以及壳体膜和弯曲势能实施接触和应变限制可行性。细化模拟器子系统118还可以确定当前网格分辨率级别(l)下的惯性能K为:
以促进在细化期间跨准静态时间步长(有效步长h)的连续性和跨分辨率的空间一致性。自由参数yl根据当前时间步长和模拟模式而不同。
在框320,方法300涉及执行细化模拟以确定网格对象在最小化在框310中确定的最细级别代理能量函数的下一级别网格分辨率下的配置。为了从当前网格分辨率级别l-1前进到下一级别l(在1和L-1之间,其中L是最细的网格分辨率级别),在固定时间步长t+1,细化模拟器子系统118访问由给出的参数ut+1的先前网格分辨率级别的均衡解(网格对象108的配置)。细化模拟器子系统118求解代理能量的局部最小化(平衡):
在某些实施例中,为了求解由算式(7)表示的局部极小值,细化模拟器子系统118构造定制的牛顿型下降法。然而,并不是所有的最小值都是同等可接受的,并且牛顿解的初始化对于渐进提高每个网格分辨率级别的优化是至关重要的。初始化有两个关键且相互竞争的要求。首先,壳体的非凸性和接触势意味着每个级别的能量支持许多相等的物理有效最小值(例如,考虑布料折叠的周期移动)。进而,连续的牛顿迭代下降到包含其初始化器的盆地中的局部最小值。其次,为了得到可行的(不相交的且满足应变极限的)极小值,必须有相应可行的初始值,否则理想的选择可能不能满足这一要求。因此,在一些实施例中,细化模拟器子系统118将每个新级别的最小化偏置为接近上一级别的延长解然而,尽管延长解可能是将最小化过程偏向l>0的一致性的理想选择,而所有最粗变形(网格分辨率级别0)在假设网格模型108的开始最粗配置是可行的情况下,在细化开始时仍然是可行的。
在某些实施例中,细化模拟器子系统118在预览模拟的第一个时间步长(例如,图1中描绘的粗网格预览108-0P)开始于可行的初始状态。所有后续的时间步骤必须始终保持可行,并且,由于采用了基于屏障的方法,牛顿求解器中的所有迭代也将保持可行性。对于大于最粗级别(l>0)的网格分辨率,代理能量函数Fl的所有后续优化也会使用对的安全延长来初始化其牛顿求解。在给定级别l-1的解的情况下,使用延长解作为目标来初始化级别l代理能量的下一解(如算式(3)所示)。然而,即使延长解从级别l-1可行点映射,也不能保证延长解将满足下一级别l的不相交条件。为了构建邻近的可行初始化器,细化模拟器子系统118在级别l确定确保可行的安全起点然后沿着搜索以使用连续冲突检测来找到最接近无约束延长的可行点。为了计算安全开始,细化模拟器子系统118应用重心上采样以匹配下一级别的网格连通性。非相交约束保留在此安全启动计算中,因为该计算是纯粹的拓扑更新,不会影响载体几何图形。
在一些情况下,使用算式7直接应用投影牛顿方法来求解代理能量的每个优化将需要在来自弯曲和膜能量的n×n全局海森(Hessian)贡献的每次迭代处进行计算。再结合它随后减少到这将进一步导致评估、组装和线性求解成本与原始细化模型求解的成本相当。此外,等待这种潜在代价高昂的每网格分辨率级别优化的最终结果,而没有输出的中间预览,意味着在细化期间可能浪费大量的时间和计算资源,而这些时间和计算资源可能会被用于新的参数探索。为了在每个级别的细化期间提供用于预览的中间且稳定的更新(并因此提供改变参数的机会),网格细化子系统118通过近似求解由代理能量和惯性能量之和(fl+Kl)形成的增量势来应用准静态步进。为了求解每个这样的代理步骤,网格细化子系统118通过用未修改的粗模型的增量势(El+Kl)的投影海森对代理和惯性能量的梯度进行预条件来应用不精确的牛顿解。这一过程使用相应的二阶信息对所有屏障梯度进行缩放,同时使用稀疏、粗糙的薄膜和弯曲的海森来近似其精细对应的梯度的二阶信息。这一过程导致了快速的牛顿式收敛,接近于用牛顿迭代直接求解粗网格优化的过程。与标准的粗网格时间步解相比,求解代理能量的开销就是易于并行化的细化膜能量和弯曲能量的梯度和能量评估。不需要精确地求解每个单独的代理步骤。在一些情况下,每个代理步骤求解的单个迭代既可以快速收敛到平衡,也可以在优化期间提供稳定的、易于中断的中间预览。
在框330,方法300涉及由细化模拟器子系统118确定是否已达到最终网格分辨率。例如,最细级别网格分辨率可以是预定分辨率n,如图1所示。
如果细化模拟器子系统118确定尚未达到最终网格分辨率,则方法300前进到框340。
在框340,方法300涉及由细化模拟器子系统118生成下一网格分辨率级别的网格对象108。例如,从最粗网格分辨率级别,网格分辨率级别前进到更细化的中间网格分辨率级别。提高网格分辨率级别包括增加网格对象108中的三角形的数量。在某些实施例中,细化模拟器子系统118根据嵌套的三角形网格层次来生成下一分辨率级别的网格对象108。例如,嵌套三角形网格层次通过下标l∈[0,L]来索引,其中xl和分别是级别l处的网格中nl个节点的变形位置和静止位置的矢量,相应的三角剖分以索引。与最粗网格分辨率对应的节点(顶点)的变形位置由x0表示,而与收敛的高质量模拟输出的最细网格分辨率对应的目标网格中的节点位置由xL表示。对于嵌套的三角形网格分层结构,场景建模系统110引入将从级别l到l+1的节点细化为的运算符的线性延长(例如,满列秩),同时使用最小二乘确定相应的线性投影运算符。
方法300从框340返回到框310。例如,方法300涉及重复框310、320、330和340,直到网格对象108的配置被确定为最小化为最细级别网格分辨率确定的代理能量函数。
图4描述了根据本文公开的某些实施例的使用预览模拟106和可编辑预览对象来提供对渐进布料模拟的用户控制的方法。一个或多个计算设备(例如,场景建模系统110或其中包含的各个子系统)实现图4中描述的操作。出于说明性目的,参考附图中描述的某些示例来描述方法400。然而,其他实现也是可能的。
在本文描述的某些实施例中,场景建模系统110与用户计算设备120分开,并且经由网络130与用户计算设备120通信。然而,在一些实施例中,场景建模系统110是用户计算设备120的组件,并且本文描述的由场景建模系统110(或其一个或多个子系统112或118)执行的操作由用户计算设备120的建模应用121执行。在一些实施例中,场景建模系统110与用户计算设备120分开,但是本文描述的由场景建模系统110(或其一个或多个子系统112和118)执行的一个或多个操作由用户计算设备120的建模应用121执行。
在某些实施例中,方法400可以与方法300(细化模拟109)一起执行,并且通过提供可编辑预览对象(例如,图1中描绘的粗级别网格预览108-0P对象)来提供对细化模拟109的一定程度的用户控制。用户可以通过更新包括虚拟布料对象101的材料属性、可编辑预览对象的节点的配置、物理交互或其他参数102的参数102来对可编辑预览对象进行改变。当场景建模系统110接收到对参数102的修改时,预览模拟器子系统112可以场景建模系统110可以中断当前细化模拟109并执行预览模拟106以生成修改的网格预览108-0M,该修改的网格预览108-0M具有在最粗网格分辨率级别的配置与可以使用后续细化仿真109产生的细化最细分辨率网格对象108-nR的配置一致。场景建模系统110然后可以使用修改的网格预览108-0M对象开始后续的细化模拟109。
在框410,方法400涉及在细化模拟109期间由预览模拟器子系统112经由用户界面123显示可编辑预览对象。例如,可编辑预览对象是最粗级网格预览108-0P对象,并且根据本文描述的方法300执行细化模拟109。在某些实施例中,基于表示最粗级网格分辨率的网格对象108来生成最粗级网格预览108-0P对象,虚拟布料对象101。最粗级别网格预览108-0P对象具有被确定为最小化网格对象108的最细级别网格分辨率的代理能量函数的配置(例如,在图3的框310中确定的),并且该配置使用嵌套的三角形分层结构来映射(例如,如图2的框220中所描述的)。
在框420,方法400涉及由预览模拟器子系统112确定用户是否已经使用可编辑预览对象改变了参数102。例如,预览模拟器子系统112经由用户界面123提供使用户能够改变参数102的一个或多个菜单或其他用户界面对象,该参数102可以包括表示虚拟布料对象101的网格对象108中的节点/顶点的配置、虚拟布料对象的材料、虚拟布料对象101与其自身及其环境(包括与3D虚拟对象104)的物理交互、以及其他参数102。
如果预览模拟器子系统112没有接收到参数102的改变,则方法400前进到框425。
在框425,细化模拟器子系统119继续执行当前细化模拟109。
从框425,该方法返回到框420。例如,在框420和425,场景建模系统110继续监测对可编辑预览对象的编辑(例如,对参数102的编辑),同时细化模拟109继续进行。
在一些实施例中,参数102可以包括包括狄利克雷特边界条件的硬位置约束。应用时,狄利克雷特边界条件(BC)指定位置约束顶点/节点的子集。每个顶点具有目标位置在每个步骤的求解的第一牛顿迭代中,场景建模系统110通过将中的所有有界顶点带到它们的指定目标来检查整个步骤。使用步长过滤,场景建模系统110确定朝向目标的最大可能可行大小的步长,并将其应用于更新所有有界顶点。场景建模系统110确定对目标的简单的、自适应的二次惩罚:
其中mk是顶点k的集中质量。当当前牛顿迭代接近收敛(通过梯度度量的范数)且当前目标不满足时,惩罚刚度κB自适应地增加2倍。备选地,如果当前迭代满足时间步长的目标,则场景建模系统110将边界顶点固定到它们的目标位置,从目标丢弃P,并继续牛顿迭代直到收敛。
在一些实施例中,参数102可以包括软位置约束。例如,场景建模系统110可以探索网格对象108在时间步进变形序列上的物理排列和放置。与前面描述的硬边界条件不同,场景建模系统110可以将处置软绑定到边界条件(BC),这允许对时变BC进行脚本化和交互探索。在一些情况下,处置的应用应用了每时间步长目标位置的序列或在线流。在一些情况下,解析每时间步长的目标位置的过程类似于硬BC的过程,然而,惩罚刚度不是适应惩罚刚度,而是固定为绑定材料的杨氏模数。
在一些实施例中,参数102可以包括碰撞几何图形。布料模型与时变的碰撞几何体的交互为处理布料褶皱提供了一种直观而有效的方法。碰撞几何是每一步具有完全规定的顶点运动的网格,并在移动时使用算式(5)中描述的相同的惩罚能量P,而在不移动时使用硬位置约束来固定其位置,而不需要膜和弯曲能量。
在一些实施例中,参数102包括添加嵌套笼。虽然可以直接处理碰撞几何体,但嵌套笼也可以与主模拟网格一起使用和细化。嵌套笼的嵌套属性允许从以前的嵌套碰撞几何体安全地交换每个新的优化嵌套碰撞几何体,同时保留安全的初始化。
在一些实施例中,参数102包括材料参数,使得可以探索材料变化。场景建模系统110可以使膜和弯曲能量中的布料材料模数(杨氏和泊松两者)、材料厚度(其提供弯曲刚度的直接变化)、密度和接触模型中的摩擦系数对于改变面到面粘和滑动行为的变化能够实现每一步的直接、平滑的变化。
在一些实施例中,参数102包括诸如重力和充气的外力和体力,并且这些力可以被添加和修改。
返回到框430,如果预览模拟器子系统112接收到参数102的改变,则方法400前进到框440。例如,如果用户改变虚拟布料对象101的参数102或改变可编辑查看对象中的节点配置,则预览模拟器子系统112将执行预览模拟106。例如,原始参数102表示轻羊毛材料,而修改的参数107表示重羊毛材料。在另一示例中,原始参数102指示节点的第一配置,而修改的参数107指示在几何上不同于第一配置的节点的第二配置。在另一示例中,原始参数102指示将对四个特定物理交互进行建模,并且修改的参数107将第五物理交互添加到原始参数102。
在框440,预览模拟器子系统112暂停当前细化模拟109,并基于修改的参数107执行预览模拟106,以生成修改的最粗级别预览对象108-0P,其中,修改的最粗级别预览对象108-0P的配置最小化网格对象108的最细级网格分辨率的代理能量函数。预览模拟器子系统112可以通过从相同网格分辨率级别的先前可行状态开始,在当前网格分辨率级别l<L执行从当前时间步长t到下一时间步长t+1的预览时间步长。在一些情况下,从先前的时间步长求解中检索先前的可行状态,或者从在最后一次细化模拟109开始时高速缓存的解中检索先前的可行状态。预览模拟器子系统112利用在每个时间步长求解开始时应用的参数u(102)中的更新,执行朝着代理能量的平衡的准静态时间步进。对于渐进预览模拟106,预览模拟器子系统112以最粗级别(l=0)对时间步长进行预览,然后利用每个步长的(可能已更新的)材料和边界条件参数ut+1从预览解顺序地移动到预览模拟子系统112继续该过程,直到在某个时间t达到平衡预览配置其对应于可向用户显示的修改的粗网格预览108-0M。
方法400从框440前进到图3的框310。例如,细化模拟器子系统118使用修改的网格预览108-0M对象作为起点来执行细化模拟109。例如,在使用预览模拟106达到块430的均衡解之后,根据图3的方法300,使用修改的网格预览108-M0对象作为起点,细化模拟器子系统118触发后续的细化模拟109以跨增加的分辨率级别l∈[1,L]顺序求解。在每个网格分辨率级别的解决方案处,细化子系统118经由安全延长将相应的解决方案传递到下一个网格分辨率级别。在一些实施例中,可以通过改变参数102经由用户交互来中断后续细化模拟109。如果用户在后续细化模拟109期间改变参数102,则可以执行后续预览模拟106以生成后续修改的网格预览108-0M对象。然而,如果用户满意并且在随后的细化模拟109期间没有进一步改变参数102(使用修改的网格预览108-0M对象),则细化模拟器子系统118最终达到最细网格分辨率级别L。细化模拟器子系统118生成细化最细分辨率网格对象108-nR,其经由细化级别增量势的准静态步进最小化目标最细级别总能量E。在收敛时,场景建模系统达到一致的细化最细分辨率网格对象108-nR其满足参数102(ut)在最细网格分辨率级别L的平衡
在一些实施例中,为了最小化屏障能量,场景建模系统110在对屏障执行基于能量的评估之前,应用接近检测方法来计算约束集,该约束集为比预定阈值更近的所有表面到表面基元对定义非零屏障能量。此外,场景建模系统110可以应用步长过滤,以经由连续碰撞检测和应变评估来沿着将确保保持应变限制和不相交条件的规定节点位移向量找到最大可能的可行大小步长。
在本文描述的实施例中,预览和细化时间步长的最小化器xl是具有隐式欧拉方法的稳定前向积分。例如,每个解决方案的最佳性提供:
它是一阶系统的隐式欧拉修正。这一观点还将膜能力和弯曲能力解释为以延拓算符为基础的降阶模型。带有yl=xl的步长是从上一次配置更新的前向准静态时间步长。初始细化步骤,其中是隐式欧拉步,从网格分辨率级别l-1更新到级别l。在一些情况下,隐式欧拉方法的使用,以及大时间步长h的应用,确保了稳定的、强耗散的步骤,从而快速地将每一步拉向平衡解。在某些实施例中,场景建模系统110使用非常小的数字(在一些情况下,单个)进行每一步迭代并且保持稳定性和快速收敛到平衡,同时在细化的每个网格分辨率级别处通过用户界面123在演变解决方案的每次更新时提供即时反馈。通过使用本文描述的方法,场景建模系统110保证势能的降低(通过线搜索),保持不相交和应变限制(通过步长过滤),而惯性能提供二次衰减,保持跨步骤的一致性。在一些情况下,与每一步应用的迭代次数无关,当应用的步骤在其第一次迭代开始时收敛到容差时,就实现了收敛到平衡。
图5示出了根据本文描述的某些实施例,在细化模拟中生成的最细级别的细化网格上使用预览对象改变材料属性的效果。例如,场景建模系统显示网格对象108的粗网格预览108-0P,并经由粗网格预览108-0P接收对参数102的修改。在图5所示的示例中,场景建模系统110接收对材料(1x弯曲、0.1x弯曲、0.01x弯曲、丝绸、牛仔布和羊毛,其中x弯曲材料是相同材料的不同厚度)的修改。图5示出了在每一列中从上到下进行的细化模拟109,该细化模拟109从与每个所选参数(级别0)相关联的修改的粗网格预览108-0M开始,通过中间网格分辨率(级别1、级别2),直到以最细网格分辨率(级别3)获得细化的最细分辨率网格对象108-nR为止。如图5所示,每种所选材料都表现出不同的褶皱行为。
图6示出了根据本文描述的某些实施例的本文描述的渐进式布料模拟的结果与常规布料模拟方法之间的比较600。图6在图6的左半部示出了在三个网格分辨率1.5K、25K和400K下对常规模拟模型Marvelous Designer(MD)和Vellum的改善。如图6所示,使用涉及粗网格的渐进分辨率的常规模拟模型进行设计可能会导致不希望看到的和不可预测的结果。例如,MD和Vellum常规模型都在低网格分辨率下产生许多不希望的褶皱伪像,这在本文描述的渐进式布料模拟(PCS)的粗级别(级别0)网格中是不存在的,因为本文描述的PCS使用细比例(scale)布料力。此外,尝试增加粗设计的分辨率会导致在常规布料模拟模型中出现不可预测的结果。例如,如图6所示,MD和Vellum常规模型在分辨率上表现出显著不同的折叠,以及伪像,诸如交点和在Vellum中不一致的材料拉伸,以及MD中的爆炸不稳定性。相反,本文描述的渐进式布料模拟(PCS)实现了跨越各种网格分辨率级别(级别1、级别2、级别3)的高保真细化布料模拟,其与交互式粗网格(级别0网格,其是粗网格预览108-0P对象)一致并且没有伪像。
图7示出了根据本文描述的某些实施例,本文描述的渐进式布料模拟的结果与常规布料模拟方法之间的另一比较。如图7所示,常规的布料模拟模型,例如SensitiveCouture(SC)模型,其结果显示在图7的上半部分,跨网格分辨率级别级别1、级别2和级别3,来自在级别0处的起始粗网格预览对象108-0P,可能在网格分辨率级别上遭受不一致的折叠。例如,在常规SC模型中,网格分辨率级别0和1上的皱折角在网格分辨率级别2和3中分成不同的折叠。
相反,本文描述的PCS方法(其结果被描绘在图7的下半部分中)确保多级一致性,使得在级别1、2和3上以忠实和可预测的方式渐进细化级别0处的原始粗比例折叠。此外,PCS避免了粗和细化结果中的锁定伪像,同时获得一致的更大规模的折叠几何图形,与SC相比,其细化具有更细化细节的褶皱和更柔软的折叠。
用于实现某些实施例的计算环境的示例
可以使用任何适合的计算机系统或计算机系统组来执行本文描述的操作。例如,图8描绘了计算机系统800的示例。所描述的计算机系统800的示例包括通信地耦合到一个或多个存储器组件804的处理设备802。处理设备802执行存储在存储器组件804中的计算机可执行程序代码、访问存储在存储器组件804中的信息或两者。计算机可执行程序代码的执行使得处理设备执行本文描述的操作。处理设备802的示例包括微处理器、专用集成电路(“ASIC”)、现场可编程门阵列(“FPGA”)或任何其他适合的处理设备。处理设备802可以包括任何数量的处理设备,包括单个处理设备。
存储器组件804包括任何适合的非暂态计算机可读介质,用于存储程序代码806、程序数据808或两者。计算机可读介质可以包括能够向处理设备提供计算机可读指令或其他程序代码的任何电、光、磁或其他存储设备。计算机可读介质的非限制性示例包括磁盘、存储器芯片、ROM、RAM、ASIC、光存储、磁带或其他磁存储、或处理设备可以从其读取指令的任何其他介质。指令可以包括由编译器或解释器从以任何适合的计算机编程语言编写的代码生成的处理器专用指令,该适合的计算机编程语言包括例如C、C++、C#、Visual Basic、Java、Python、Perl、JavaScript和ActionScript。在各种示例中,存储器组件504可以是易失性存储器、非易失性存储器或其组合。
计算机系统800执行程序代码806,该程序代码806将处理设备802配置为执行本文描述的一个或多个操作。在各种实施例中,程序代码806的示例包括图1的场景建模系统110(包括预览模拟器子系统112和细化模拟器子系统118),其可以包括执行本文描述的一个或多个操作的任何其他合适的系统或子系统(例如,一个或多个神经网络、编码器、注意力传播子系统和分割子系统)。程序代码806可以驻留在存储器组件804或任何适当的计算机可读介质中,并且可以由处理设备802或任何其他适当的处理器执行。
处理设备802是能够执行程序代码806的集成电路设备。程序代码806可以用于执行操作系统、应用系统或子系统或两者。当由处理设备802执行时,指令使处理设备802执行程序代码806的操作。当由处理设备802执行时,指令可能与由指令操作的数据一起存储在系统存储器中。系统存储器可以是易失性存储器存储类型,例如随机存取存储器(RAM)类型。系统存储器有时被称为动态RAM(DRAM),尽管不需要使用基于DRAM的技术来实现。此外,系统存储器可以使用诸如闪存的非易失性存储器类型来实现。
在一些实施例中,一个或多个存储器组件804存储包括本文描述的一个或多个数据集的程序数据808。在一些实施例中,一个或多个数据集存储在相同的存储器组件(例如,存储器组件804之一)中。在附加或替换实施例中,本文描述的程序、数据集、模型和功能中的一个或多个被存储在可经由数据网络访问的不同存储器组件804中。计算机系统800中还包括一个或多个总线810。总线810通信地耦合计算机系统800中的相应计算机系统的一个或多个组件。
在一些实施例中,计算机系统800还包括网络接口设备812。网络接口设备812包括适合于建立到一个或多个数据网络的有线或无线数据连接的任何设备或设备组。网络接口设备812的非限制性示例包括以太网网络适配器、调制解调器等。计算机系统800能够使用网络接口设备812经由数据网络与一个或多个其他计算设备通信。
计算机系统800还可以包括多个外部或内部设备、输入设备814、演示设备816或其他输入或输出设备。例如,计算机系统800被示为具有一个或多个输入/输出(“I/O”)接口818。I/O接口818可以从输入设备接收输入或向输出设备提供输出。输入设备814可以包括适合于接收控制或影响处理设备802的操作的视觉、听觉或其他适当输入的任何设备或设备组。输入设备814的非限制性示例包括触摸屏、鼠标、键盘、麦克风、单独的移动计算设备等。呈现设备816可以包括适合于提供视觉、听觉或其他合适的感觉输出的任何设备或设备组。演示设备816的非限制性示例包括触摸屏、显示器、扬声器、单独的移动计算设备等。
尽管图8将输入设备814和呈现设备816描绘为计算机系统800的本地,但是其他实现也是可能的。例如,在一些实施例中,输入设备814和呈现设备816中的一个或多个可以包括使用本文描述的一个或多个数据网络经由网络接口设备812与计算系统800通信的远程客户端计算设备。
各实施例可以包括实施本文描述和图示的功能的计算机程序,其中该计算机程序在计算机系统中实现,该计算机系统包括存储在机器可读介质中的指令和执行指令以执行适用操作的处理设备。然而,应当清楚的是,在计算机编程中可以有许多不同的实现实施例的方式,并且实施例不应被解释为限于任何一组计算机程序指令。此外,熟练的程序员将能够基于所附的流程图和应用文本中的相关联的描述来编写这样的计算机程序来实现所公开的实施例的实施例。因此,对于充分理解如何制作和使用实施例,不认为有必要公开特定的程序代码指令集。此外,本领域技术人员将认识到,本文描述的实施例的一个或多个方面可以由硬件、软件或其组合来执行,如可以在一个或多个计算机系统中实现的。此外,对由计算机执行的动作的任何引用不应被解释为由单个计算机执行,因为可能有不止一台计算机执行该动作。
本文描述的示例实施例可以与执行前面描述的方法和处理功能的计算机硬件和软件一起使用。本文描述的系统、方法和过程可以在可编程计算机、计算机可执行软件或数字电路中实现。该软件可以存储在计算机可读介质上。例如,计算机可读介质可以包括软盘、RAM、ROM、硬盘、可移动介质、闪存、记忆棒、光学介质、磁光介质、CD-ROM等。数字电路可以包括集成电路、门阵列、构建块逻辑、现场可编程门阵列(FPGA)等。
在一些实施例中,由计算机系统800提供的功能可以由云服务提供商作为云服务来提供。例如,图9描绘了云计算机系统900的示例,该云计算机系统900提供用于执行渐进布料模拟以生成覆盖布料对象103的服务,该覆盖布料对象103可由跨数据网络906使用用户设备904A、904B和904C的多个用户订户使用。云计算机系统900执行处理以提供渐进布料模拟的服务,以生成覆盖布料对象103。云计算机系统900可以包括一个或多个远程服务器计算机908。
远程服务器计算机908包括用于存储由云计算机系统900用于提供云服务的程序代码910(例如,图1的预览模拟器子系统112和细化模拟器子系统118)和/或程序数据912的任何适合的非暂态计算机可读介质。计算机可读介质可以包括能够向处理设备提供可执行指令或其他程序代码的任何电、光、磁或其他存储设备。计算机可读介质的非限制性示例包括磁盘、存储器芯片、ROM、RAM、ASIC、光存储、磁带或其他磁存储、或处理设备可以从其读取指令的任何其他介质。指令可以包括由编译器或解释器从以任何合适的计算机编程语言编写的代码生成的处理器专用指令,所述合适的计算机编程语言包括例如C、C++、C#、VisualBasic、Java、Python、Perl、JavaScript和ActionScript。在各种示例中,服务器计算机908可以包括易失性存储器、非易失性存储器或其组合。
一个或多个服务器计算机908执行程序代码910,该程序代码910配置服务器计算机908的一个或多个处理设备以执行执行渐进布料模拟以生成覆盖布料对象103的一个或多个操作。如图9中的实施例所示,为渐进式布料模拟提供服务以生成覆盖布料对象103的一个或多个服务器可以实现预览模拟器子系统112和细化模拟子系统118。执行本文描述的一个或多个操作的任何其他合适的系统或子系统(例如,用于配置交互式用户界面的一个或多个开发系统)也可以由云计算机系统900实现。
在某些实施例中,云计算机系统900可以通过执行程序代码和/或使用程序数据912来实现服务,所述程序数据912可以驻留在服务器计算机908的存储器组件或任何合适的计算机可读介质中,并且可以由服务器计算机908的处理设备或任何其他合适的处理设备执行。
在一些实施例中,程序数据912包括本文描述的一个或多个数据集和模型。在一些实施例中,数据集、模型和功能中的一个或多个存储在相同的存储器组件中。在附加或替换实施例中,本文描述的程序、数据集、模型和功能中的一个或多个被存储在可经由数据网络906访问的不同存储器组件中。
云计算机系统900还包括能够往返于云计算机系统900的通信的网络接口设备614。在某些实施例中,网络接口设备914包括适合于建立到数据网络906的有线或无线数据连接的任何设备或设备组。网络接口设备914的非限制性示例包括以太网网络适配器、调制解调器等。用于渐进布料模拟以生成覆盖布料对象103的服务能够使用网络接口设备914经由数据网络906与用户设备904A、904B和904C通信。
在先前呈现的实施例中描述的示例性系统、方法和动作是说明性的,并且在备选实施例中,某些动作可以以不同的顺序、彼此并行、完全省略和/或在不同示例性实施例之间组合来执行,和/或可以执行某些附加动作,而不背离各种实施例的范围和精神。因此,这样的替代实施例被包括在要求保护的实施例的范围内。
尽管上面已经详细描述了具体实施例,但是该描述仅仅是为了说明的目的。因此,应当认识到,除非另有明确说明,否则上述许多方面都不是作为要求或基本要素的意图。除了上述那些之外,本领域的普通技术人员可以在不背离以下权利要求中定义的实施例的精神和范围的情况下,对所公开的示例实施例的各方面进行修改以及对应于这些方面的等同组件或动作,而不背离以下权利要求中定义的实施例的精神和范围,权利要求的范围将被给予最广泛的解释,以便包括这样的修改和等同结构。
一般考虑事项
这里阐述了许多具体细节,以提供对所要求保护的主题的透彻理解。然而,本领域技术人员将理解,可以在没有这些具体细节的情况下实践所要求保护的主题。在其他情况下,未详细描述本领域技术人员已知的方法、装置或系统,以避免混淆所要求保护的主题。
除非另有特别说明,否则应当理解,在整个说明书中,使用诸如“处理”、“计算”、“运算”、“确定”和“标识”等术语的讨论指的是计算设备的动作或过程,该计算设备诸如一个或多个计算机或类似的电子计算设备或设备,其操纵或变换在计算平台的存储器、寄存器或其他信息存储设备、传输设备或显示设备内表示为物理电子或磁量的数据。
本文讨论的一个或多个系统不限于任何特定的硬件架构或配置。计算设备可以包括提供以一个或多个输入为条件的结果的组件的任何适当布置。适合的计算设备包括基于多用途微处理器的计算机系统,该计算机系统从通用计算设备到实现本主题的一个或多个实施例的专用计算设备访问对计算机系统进行编程或配置的存储软件。可以使用任何适合的编程、脚本或其他类型的语言或语言的组合来在将用于编程或配置计算设备的软件中实现在此包含的教导。
本文公开的方法的实施例可以在这些计算设备的操作中执行。上述示例中呈现的块的顺序可以变化--例如,块可以被重新排序、组合和/或分解成子块。某些块或进程可以并行执行。
这里使用的“适于”或“被配置为”是指一种开放和包容的语言,它不排除适应或配置成执行附加任务或步骤的设备。在设备、系统、组件或模块被描述为被配置为执行某些操作或功能的情况下,这种配置可以例如通过设计电子电路来执行操作,通过编程可编程电子电路(诸如微处理器)来执行操作,例如通过执行计算机指令或代码,或者被编程以执行存储在非易失性存储介质上的代码或指令的处理器或核心,或其任何组合来完成。进程可以使用各种技术进行通信,包括但不限于用于进程间通信的常规技术,并且不同的进程对可以使用不同的技术,或者同一对进程可以在不同的时间使用不同的技术。
此外,“基于”的使用意味着开放和包容,即“基于”一个或多个所记载的条件或值的过程、步骤、计算或其他行动在实践中可基于所记载的条件或值之外的附加条件或值。本文中包含的标题、列表和编号只是为了便于解释,并不是为了限制。
虽然已经针对本主题的具体实施例详细描述了本主题,但是应当理解,本领域的技术人员一旦理解了前述内容,就可以容易地产生对这些实施例的更改、变型和等同。因此,应当理解,本公开是为了举例而不是限制的目的而提出的,并且不排除包括本领域普通技术人员显而易见的对本主题的修改、变化和/或添加。
Claims (19)
1.一种由一个或多个计算设备执行的方法,所述一个或多个计算设备与场景建模系统相关联,所述方法包括:
访问包括三维3D虚拟对象和对虚拟布料对象建模的网格对象的虚拟场景;
对所述网格对象执行细化模拟以对所述虚拟布料对象在所述3D虚拟对象上的褶皱进行建模,其中对于所述网格对象的网格分辨率序列中的每个网格分辨率,执行所述细化模拟包括:
确定所述网格分辨率序列的最细网格分辨率的代理能量函数:
确定最小化所述代理能量函数的网格模型的配置;
生成用于经由用户界面显示的可编辑预览对象,所述可编辑预览对象包括在所述网格分辨率序列的最粗级别网格分辨率处的所述网格对象;以及
经由所述用户界面在所述细化模拟的执行期间显示所述可编辑预览对象;
经由所述用户界面接收对所述可编辑预览对象的修改;以及
经由所述用户界面显示所修改的所述可编辑预览对象,其中所述细化模拟中的所述网格对象的最细级别网格分辨率的配置在几何上与所修改的所述可编辑预览对象的配置一致。
2.根据权利要求1所述的方法,其中对所述可编辑预览对象的修改包括对所述参数的修改,并且还包括:
基于所修改的所述参数执行预览模拟以生成所修改的所述可编辑预览对象。
3.根据权利要求2所述的方法,其中所述参数包括所述网格对象的节点的几何配置,其中对所述参数的所述修改包括对所述位置参数中的节点的至少一个位置的修改。
4.根据权利要求2所述的方法,其中所述参数包括指定所述虚拟布料对象的材料属性的材料参数,其中对所述参数的所述修改包括至少对所述材料属性中的至少一个材料属性的修改。
5.根据权利要求4所述的方法,其中所述材料属性包括所述虚拟布料对象的材料和所述虚拟布料对象的厚度。
6.根据权利要求1所述的方法,还包括经由所述用户界面显示在所述细化模拟中确定的所述网格对象的最细级别网格分辨率。
7.根据权利要求1所述的方法,其中执行所述细化模拟还包括:
生成嵌套网格分层结构,所述嵌套网格分层结构包括延长函数,所述延长函数针对所述网格对象从所述网格分辨率序列中的每个网格分辨率映射到所述序列中的后续网格分辨率。
8.根据权利要求1所述的方法,其中所述代理能量函数对接触屏障势能、摩擦势能、应变限制势能、膜势能和弯曲势能中的一个或多个进行建模。
9.根据权利要求1所述的方法,其中所述网格细化模拟是使用所修改的所述可编辑预览对象作为所述网格分辨率序列中的最粗网格分辨率来执行的。
10.一种系统,包括:
存储器组件;以及
处理设备,被耦合到所述存储器组件,所述处理设备执行操作,所述操作包括:
对网格对象执行细化模拟以对虚拟布料对象在3D虚拟对象上的褶皱进行建模,其中对于所述网格对象的网格分辨率序列中的每个网格分辨率,执行所述细化模拟包括:
确定所述网格分辨率序列的最细网格分辨率的代理能量函数:
确定最小化所述代理能量函数的网格模型的配置;
生成用于经由用户界面显示的可编辑预览对象,所述可编辑预览对象包括在所述网格分辨率序列的最粗级别网格分辨率处的所述网格对象;以及
经由所述用户界面在所述细化模拟的执行期间显示所述可编辑预览对象;
经由所述用户界面接收对所述可编辑预览对象的形状的修改;以及
经由所述用户界面从所述细化模拟输出所述网格对象的最细级别网格分辨率,其中所修改的所述可编辑预览对象的所述形状在几何上与所述网格对象的所述最细级别网格分辨率的形状一致。
11.根据权利要求1所述的系统,其中对所述可编辑预览对象的所述修改还包括对与所述虚拟布料对象相关联的材料属性的修改,所述操作还包括:
基于所修改的所述材料属性执行预览模拟,以生成修改的所述可编辑预览对象。
12.根据权利要求11所述的系统,其中所述材料属性包括所述虚拟布料对象的材料和所述虚拟布料对象的厚度。
13.根据权利要求11所述的系统,其中所述形状包括所述可编辑预览对象的节点的几何配置,其中对所述形状的所述修改包括对所述可编辑预览对象中的节点的至少一个位置的修改。
14.根据权利要求11所述的系统,其中对所述可编辑预览对象的所述修改还包括对与所述虚拟布料对象相关联的物理属性的修改,所述物理属性包括接触屏障势能、摩擦势能、应变限制势能、膜势能和弯曲势能中的一个或多个。
15.根据权利要求11所述的系统,其中执行所述细化模拟还包括:
生成嵌套网格分层结构,所述嵌套网格分层结构包括延长函数,所述延长函数针对所述网格对象从所述网格分辨率序列中的每个网格分辨率映射到所述序列中的后续网格分辨率。
16.一种存储可执行指令的非暂态计算机可读介质,所述可执行指令在由处理设备执行时,使所述处理设备执行操作,所述操作包括:
对网格对象执行细化模拟以对虚拟布料对象在3D虚拟对象上的褶皱进行建模,其中所述网格对象对所述虚拟布料对象的一个或多个材料属性进行建模,其中对于所述网格对象的网格分辨率序列中的每个网格分辨率,执行所述细化模拟包括:
确定所述网格分辨率序列的最细网格分辨率的代理能量函数;
确定最小化所述代理能量函数的所述网格模型的配置;
在所述细化模拟的执行期间,生成用于经由用户界面显示的可编辑预览对象,所述可编辑预览对象包括在所述网格分辨率序列的最粗级别网格分辨率处的所述网格对象;
经由所述用户界面接收对所述可编辑预览对象的修改,其中所述修改包括改变所述材料属性;
基于所修改的所述材料属性执行预览模拟以生成修改的所述可编辑预览对象,其中所修改的所述可编辑预览对象的配置不同于所述可编辑预览对象的配置;以及
经由所述用户界面显示所修改的所述可编辑预览对象,其中所述细化模拟中的所述网格对象的最细级别网格分辨率的配置在几何上与所修改的所述可编辑预览对象的配置一致。
17.根据权利要求16所述的非暂态计算机可读介质,其中对所述可编辑预览对象的所述修改还包括对所述可编辑预览对象的形状的修改,其中对所述形状的所述修改包括所述可编辑预览对象中的至少一个节点的位置改变,其中所述预览模拟还基于所修改的所述形状而被执行。
18.根据权利要求16所述的非暂态计算机可读介质,其中对所述可编辑预览对象的所述修改还包括对与所述虚拟布料对象相关联的物理属性的修改,所述物理属性包括接触屏障势能、摩擦势能、应变限制势能、膜势能和弯曲势能中的一个或多个,其中所述预览模拟还基于所修改的所述材料属性而被执行。
19.根据权利要求16所述的非暂态计算机可读介质,其中执行所述细化模拟还包括:
生成嵌套网格分层结构,所述嵌套网格分层结构包括延长函数,所述延长函数针对所述网格对象从所述网格分辨率序列中的每个网格分辨率映射到所述序列中的后续网格分辨率。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/989,239 | 2022-11-17 | ||
| US17/989,239 US12412342B2 (en) | 2022-11-17 | 2022-11-17 | Modeling interfaces with progressive cloth simulation |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN118051964A true CN118051964A (zh) | 2024-05-17 |
Family
ID=88412765
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202311113649.XA Pending CN118051964A (zh) | 2022-11-17 | 2023-08-31 | 利用渐进式布料模拟的改善建模界面 |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US12412342B2 (zh) |
| CN (1) | CN118051964A (zh) |
| AU (1) | AU2023226756A1 (zh) |
| DE (1) | DE102023124975A1 (zh) |
| GB (1) | GB2624502B (zh) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20250054257A1 (en) * | 2023-08-10 | 2025-02-13 | Roblox Corporation | Automatic fitting and tailoring for stylized avatars |
| US20250111604A1 (en) * | 2023-09-29 | 2025-04-03 | Meta Platforms Technologies, Llc | Optimizing level of detail generation in virtual environments |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7664302B2 (en) * | 2003-07-18 | 2010-02-16 | Hologic, Inc. | Simultaneous grayscale and geometric registration of images |
| EP2048622A4 (en) * | 2006-08-03 | 2014-08-27 | Shima Seiki Mfg | DEVICE AND METHOD THEREFOR FOR APPAREL SIMULATION AND PROGRAM |
| US10546433B2 (en) * | 2017-08-03 | 2020-01-28 | The University Of North Carolina At Chapel Hill | Methods, systems, and computer readable media for modeling garments using single view images |
| WO2019090150A1 (en) * | 2017-11-02 | 2019-05-09 | Measur3D, Inc. | Clothing model generation and display system |
| US11869163B1 (en) * | 2021-09-17 | 2024-01-09 | Amazon Technologies, Inc. | Virtual garment draping using machine learning |
| US11861774B2 (en) * | 2022-05-19 | 2024-01-02 | Digital Domain Virtual Human (Us), Inc. | Methods for cloth simulation for animation |
-
2022
- 2022-11-17 US US17/989,239 patent/US12412342B2/en active Active
-
2023
- 2023-08-31 CN CN202311113649.XA patent/CN118051964A/zh active Pending
- 2023-09-08 AU AU2023226756A patent/AU2023226756A1/en active Pending
- 2023-09-08 GB GB2313741.7A patent/GB2624502B/en active Active
- 2023-09-15 DE DE102023124975.4A patent/DE102023124975A1/de active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| GB2624502B (en) | 2025-08-06 |
| GB202313741D0 (en) | 2023-10-25 |
| DE102023124975A1 (de) | 2024-05-23 |
| US12412342B2 (en) | 2025-09-09 |
| AU2023226756A1 (en) | 2024-06-06 |
| US20240169672A1 (en) | 2024-05-23 |
| GB2624502A (en) | 2024-05-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Fuge et al. | Conceptual design and modification of freeform surfaces using dual shape representations in augmented reality environments | |
| Gilles et al. | Frame-based elastic models | |
| Xian et al. | A scalable galerkin multigrid method for real-time simulation of deformable objects | |
| Skouras et al. | Computational design of actuated deformable characters | |
| CN118051964A (zh) | 利用渐进式布料模拟的改善建模界面 | |
| CN108074284A (zh) | 使用多个输入网格生成有效的风格化的网格形变 | |
| WO2012061834A1 (en) | Methods, systems, and media for interactive garment modeling and editing | |
| Michalik et al. | Sketch-and constraint-based design of B-spline surfaces | |
| Dewaele et al. | Interactive global and local deformations for virtual clay | |
| Lee et al. | A skinned tetrahedral mesh for hair animation and hair-water interaction | |
| Lee et al. | Modeling virtual object behavior within virtual environment | |
| CN114327395A (zh) | 网页设计方法、装置、计算机设备、存储介质和产品 | |
| Rumman et al. | Position based skinning of skeleton-driven deformable characters | |
| Nobel-Jørgensen et al. | 3D interactive topology optimization on hand-held devices | |
| CN114373053A (zh) | 基于物理学的操纵 | |
| Åkesson et al. | Using 3D direct manipulation for real-time structural design exploration | |
| CN116266383A (zh) | 使用与具有模板骨骼的模板模型的相关关系对三维模型进行变形 | |
| CN115908664B (zh) | 人机交互的动画生成方法、装置、计算机设备、存储介质 | |
| Kil et al. | 3D warp brush modeling | |
| Li | Interactive Structural Topology Optimisation Considering Subjective Preferences | |
| Ticona et al. | Phys-sketch: Sketching 3D dynamic objects in immersive virtual reality | |
| de Vries et al. | Interactive 3D Modeling in the Inception Phase of Architectural Design. | |
| Perles et al. | Interactive virtual tools for manipulating NURBS surfaces in a virtual environment | |
| CN107292942B (zh) | 一种权值c2连续的线性混合形状编辑方法 | |
| Larico | Towards interactive simulation of soft, rigid and viscous objects in immersive virtual reality |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination |