正文:
Abstract:
Micro-appearance models(微观外观模型)为布料渲染带来了前所未有的保真度和细节。但是,这些模型忽略了织物力学:当一块布料与周围环境相互作用时,其纱线和纤维排列通常会因为外部接触和张力而发生变化。由于织物的微观结构的细微变化会极大地影响其宏观外观,因此由机械驱动的织物外观变化一直是有待captured的现象。
我们介绍了一种基于力学的模型,该模型以基于物理的方式适应了布纱线的微观结构。我们的技术在两个不同的物理尺度上起作用:使用基于物理的单根纱线模拟,我们可以捕获纱线水平结构在外力作用下的重新排列。 这些纱线结构被进一步丰富,以获得外观驱动纤维级的细节。
通过新的模拟参数拟合算法,增强的程序纱线模型以及定制设计的回归神经网络,可以实现跨规模的浓缩。(这句翻译不是很好)
The cross-scale enrichment is made practical through a new parameter fitting algorithm for simulation, an augmented procedural yarn model coupled with a custom-design regression neural network. We train the network using a dataset generated by joint simulations at both the yarn and the fiber levels.
我们使用通过联合仿真在纱线和纤维水平上生成的数据集来训练网络。通过几个示例,我们证明了我们的模型能够以机械上合理的方式合成逼真的布料外观。
索引词-服装外观,布料力学
关于什么是Micro-appearance models:这些外观模型是一种称为微外观模型的方法的实例,该方法将材料的微观几何结构的显式模型与简单的光散射模型结合在一起。
1 INTRODUCTION
材料的微观结构深刻影响其宏观外观是一种普遍现象。有鉴于此,计算机图形学通过对微结构进行建模(例如[9],[10],[16],[23]),在捕获逼真的对象外观方面取得了重大进展。由于其在虚拟意义上的绝对突出,布料的外观也已通过微观建模。(Motivated by its utter prominence in virtual senses, cloth appearance has also been modeled microscopically. )通过考虑织物的微观几何结构(即纤维和纱线的排列),最新的微观外观模型[20],[33],[35]可以产生具有惊人丰富性和细节的布料效果图 )。
我们认为,布的微观结构不仅应在几何上建模,而且应在机械上建模。这是因为织物的组成纤维和纱线的外观驱动排列绝不是固定的。例如,一块织物的简单拉伸可能会使其纱线变细,使该织物更透明并改变其光泽度(参见图2)。即使没有外部变形,布料的各个纱线之间的相互作用也会改变纱线的形状,并导致出现特定的纹理图案[8],[18]。机械响应(小尺寸长丝结构及其材料特性之间的相互作用)在织物外观中起着重要作用。
从这个角度出发,我们引入了一种布料外观模型,该模型结合了布料微观结构的机械响应,可以更好地捕获布料外观及其在外力作用下的变化。
一个看似简单的想法是依靠基于物理的模拟来重新配置纱线和纤维的结构。 但是,执行此想法需要解决重大的计算难题。一方面,已经表明,纤维的结构(即,各个长丝如何形成纱线)和纱线的结构(即,各个纱线如何交织)都有助于织物外观[6], [20],[27],[33],[35]。另一方面,尽管存在基于物理的模型来模拟布料的单个纱线[8],[19],但是模拟单个纤维是很棘手的,因为即使对于相当大的布料,也必须包含无数的纤维。
我们通过bi-scale(找了一篇论文有关这个名词的)方法应对这一挑战:我们仅在纱线水平上模拟布料,并在后处理过程中以机械感知的方式合成纤维级细节。纤维的合成可以通过使用从模拟纱线状态得出的空间变化参数来扩展程序纱线模型[27],[35]来实现。这些参数用于使程序生成的纤维变形,从而反映出织物的机械响应。由于纤维变形参数和模拟的纱线水平状态之间的关系非常复杂,因此我们利用定制设计的回归神经网络来学习这种关系。
我们的回归网络的训练数据集是通过在纱线级别(其中将布料纱线建模为单条曲线)和纤维级别(其中纱线被描述为纤维曲线束)运行基于物理的模拟生成的。为了使训练模拟易于处理,我们设计了神经网络,使它们仅涉及很小的纱线部分。此外,为了确保两个级别的模拟之间的一致性,我们开发了一种新的参数拟合算法,该算法使用纤维级别的参数自动确定纱线级别的(均质)材料属性。
在运行时,我们的方法在纱线水平上模拟织物的微观结构。然后,它利用程序纱线建模与预先训练的回归网络相结合,生成织物的纤维级几何形状,并使它们适应模拟的纱线状态。通过这种方式,我们能够生产出多种多样且在物理上看起来合理的织物外观(图1)。
图1:我们引入了一种首创的技术,不仅可以在微观上而且在机械上对布料的外观进行建模。
(a)我们的技术通过利用一种新颖的参数均化过程来模拟纱线水平上的纤维变形,以使在纱线上模拟的纱线中心线与纤维水平相匹配
(b)通过在模拟纱线中心线周围程序生成纤维并变形 基于纱线水平外力的那些纤维,我们的方法综合了与参考纤维水平模拟非常匹配的纤维微结构。
(c)纤维级微几何形状的精确复制至关重要,因为它们会极大地影响织物的整体外观
-------------------------------------------------------------------------------------------------------------------------------------
据我们所知,这是第一个对布料(或任何材料,如果重要)的外观进行建模的机械感知技术:现有方法提供纤维级细节的现有技术要么依赖于测量到的纤维几何形状,但几乎无法对其进行动画处理[20],[33],或使用程序生成的纤维,而其纤维和纱线力学完全被忽略[24],[27],[35]。我们的技术也独立于基础的布料模拟方法:尽管我们选择使用最新的离线方法以实现最大的准确性,但也可以轻松使用其他纱线级模拟方法。 我们的主要技术贡献包括:
• A parameter homogenization technique that fits yarn-level mechanical parameters so that yarn centerlines match between fiber-level and yarn-level simulations.
• A custom-design regression neural network that learns the mapping from simulated yarn-level states to fiberdeforming parameters.
•一种参数均质技术,适合纱线级机械参数,以便纱线中心线在纤维级和纱线级模拟之间匹配。
•定制设计的回归神经网络,可学习从模拟的纱线水平状态到纤维变形参数的映射。
我们通过比较纤维级仿真和照片来验证我们的方法(图13和16)。为了演示我们方法的使用,我们将其应用于几种在各种机械变形下的织物,并显示它们的外观响应于与环境相互作用的变化(图1、17和18)。
2 RELATED WORK
Cloth appearance models:几十年来,建模和复制布料的外观一直是计算机图形学的活跃研究领域。传统上,将布料建模为2D薄片,并使用通用或专用的表面反射率模型描述其外观,[2], [30], [31][1], [15], [26]。当从几乎看不到单独的布纱的距离观看时,这些型号可提供足够的质量来再现布的外观。另一方面,它们缺乏保真度和细节来产生逼真的特写效果,也缺乏捕捉织物通常具有特征性微观结构的各种视觉效果(例如强纹理和掠角高光grazing-angle highlights)的通用性。
注释:grazing-angle highlights:
When dealing with a beam that is nearly parallel to a surface, it is sometimes more useful to refer to the angle between the beam and the surface, rather than that between the beam and the surface normal, in other words 90° minus the angle of incidence. This small angle is called a glancing angle or grazing angle. Incidence at grazing angles is called "grazing incidence". Glancing angle is the angle formed by the incident ray or the reflected ray and the plane(surface).
图2.真实面料的外观变化由外部拉伸驱动。 拉伸一块真正的布料时,其内部纱线和纤维结构可能会发生巨大变化,从而导致整体外观发生显着变化。 在此示例中,我们显示了静止和拉伸状态下尼龙织物的照片。
-------------------------------------------------------------------------------------------------------------------------------------
最近,引入了一系列微外观模型来模拟织物外观[6],[20],[21],[24],[27],[32],[33],[34],[35 ]。与早期的方法不同,这些技术使用高分辨率的体积或纤维网格明确地模拟织物的纤维级微观结构。由于这些微观结构在很大程度上影响了织物的整体外观,因此微观外观模型具有空前的细节和通用性,可以捕捉各种织物的外观。
不幸的是,这些模型在机械上是不可知的:许多模型依赖于测量的微观结构,而这些微观结构根本不能在机械上变形[20], [21], [33], [34];其他人则使用专门的程序来完全忽略纤维力学[24],[27],[32],[35],从而导致整体外观不准确(例如,见图2)。 简而言之,在对动画布料建模时,这些模型受到很大限制。
Cloth and yarn simulation:计算机图形学也已有很长的模拟布料和纱线的历史。在调查[29]中可以找到一个彻底的回顾。通常,一块布被建模为2D表面,并用三角形或四边形网格离散[3],[13]。 由于真实的布料是由一组纤维束(或纱线)织成的,因此一种更可靠的方法是直接对那些纱线进行建模。 这种模型的第一个由Kaldor等人[18]提出,后来在[19]中得到了提高。
在纱线水平上进行仿真的主要挑战是解决接触的高昂成本。为了解决这个问题,Cirio等人[8] 引入了滑动约束来有效地处理纱线间的接触。我们的工作建立在拉格朗日/欧拉解决接触问题的方法上[17]。扩展物质点法[28],该方法将纱线表示为嵌入在背景欧拉网格中的折线,并通过将其建模为体积变形来解决碰撞。在同一框架中,此方法还可以模拟薄壳,但是忽略弯曲和扭曲力。 最近针对基于网格的薄壳解决了这一限制[14]。
尽管有这些进步,但由于需要过多数量的纤维,因此在大型织物中模拟单个纤维仍然很困难。而江等[17] 在示例中,如果设法模拟每根纱线的多个“线”,则线的数量仍然比真实纱线中典型的纤维数量小得多。在这项工作中,我们回避完全模拟纤维的挑战。我们的仿真仍然在纱线级别执行,但是我们设计了一个深度神经网络来“上采样”纱线级别的仿真结果以获得纤维级别的详细信息。
Cloth rendering vs. simulation:从历史上看,布料外观建模和基于物理的模拟研究在很大程度上并行进行,这可能是因为传统上从不同的物理角度(光学与机械)考虑了这两类研究。尽管通常通过逼真的渲染来演示布料模拟结果,但很少(甚至根本没有)布料外观模型受益于基于物理的模拟。 在这项工作中,我们证明了两种看似分离的模型可以协同工作,从而产生了改进的布料外观模型。
3 METHOD OVERVIEW
织物的结构在多个尺度上都是复杂的。 总体而言,织物由数千条线或纱线组成,并通过编织和针织等制造技术进行组合。 每条纱线依次由数十至数百微米半径的细丝或纤维组成。 由于布料的纱线和纤维排列会显着影响其整体外观,因此我们的目标是捕获布料对纤维水平的机械响应。
为此,我们利用基于物理的模拟来捕获织物的纱线和纤维层级力学。不幸的是,模拟整个织物中所有纤维的动力学通常是困难的。 取而代之的是,我们建议在运行时在纱线级别进行模拟,然后以一种机械感知的方式在模拟纱线周围生成纤维,以完成外观模型。
为了使能够以机械方式感知(mechanics-aware)的纤维结构生成,我们的方法包括三个主要部分:
• Training.:在我们的训练阶段,我们在一系列条件下在纱线和纤维水平上模拟单根纱线。对于每对模拟结果,我们将模拟纤维曲线与程序生成的曲线进行比较(以模拟纱线中心线为指导?什么意思)。两者之间的差异是通过定制设计的回归网络学习的,该网络将模拟的纱线水平状态(即机械力)映射到补偿差异的(discrepancy-compensating)纤维变形。
• Material parameter homogenization.(材料参数均质化):训练步骤要求在纱线和纤维水平模拟之间保持一致。 因此,考虑到单个纤维的材料特性,我们确定它们在纱线水平上的对应关系,以确保在两个水平下模拟的纱线中心线之间的一致性(在相同的初始条件下)。这是通过使用纤维级模拟拟合(或均化)纱线级材料参数来实现的。
• Runtime.:在运行时,我们仅在纱线水平上模拟全织物的动力学。 通过仿真确定单个纱线的中心线和沿着它们的力,我们可以按照这些中心线程序生成纤维,并使用经过训练的回归网络进一步调整纤维,以使它们对纱线水平的力(例如拉伸和压缩)做出适当的响应。
图3还总结了上述传递路径。在以下各节中,我们将在§4中详细介绍我们的训练阶段,在§5中详细说明参数拟合,并在§6中详细介绍运行时阶段。
Fig. 3. Method overview. (top):在预处理阶段,我们的方法包括两个子步骤:均匀化用于纱线级模拟的材料参数(左)和训练回归神经网络(右)。
(下图)在运行时,我们捕获织物中纱线级结构的重排,并通过神经网络将其丰富化为纤维级几何形状。 然后,纤维级的几何形状确定织物的宏观外观。
4 TRAINING PHASE
我们训练阶段的目标是获取纱线水平变形与相应的纤维重构之间的映射。该映射将在运行时用于以机械感知的方式程序生成纤维结构。为了学习映射,我们在纱线和纤维水平上模拟了在几种预定配置下的单一纱线。这些训练模拟是在相同的条件下设置的,以在两个级别上提供一致的动力。
我们将在§5中详细说明我们的仿真模型和参数选择。 在本节中,我们集中于我们的主要训练阶段。
4.1 Background: Procedural Modeling of Fiber Geometry
为了生成具有纤维级细节的布料模型,最近在图形设计中引入了一种源自纺织品设计的程序方法[27],[35]。这种方法将一组纱线中心线作为输入,并独立地合成每根纱线周围的纤维曲线。
对于中心线跟随z轴的纱线,每种构成纤维j均建模为圆形螺旋:
其中rj,a和θj分别控制螺旋线hj的半径,螺距和初始相位。在构建程序纱线时,半径rj是独立概率分布。
所有纤维都共享的两个参数:
为了更好地模拟纤维的迁移,可以扩展公式(1)以使螺旋半径rj随z变化。该想法的典型实现是使rj(z)在两个预定义的最小值和最大值之间以正弦模式变化。另外,现实世界中的纱线通常包含多个子股或股线。 在这种情况下,可以使用公式(1、2)描述每个层。然后,通过围绕共同的中心线加捻所有组成层来形成纱线。有关纤维迁移和多层纱线建模的更多详细信息,请参见先前的工作[27],[35]。
最后,给定一条由一维曲线表示的中心线α,该曲线由弧长z设置为法线nα(z)和双法线bα(z),通过变形每根纤维hj到hja,可以使以z轴为中心的直纱变形为follow该centerline:
分别表示x,y方向的分量:
4.2 Learning How Fibers Deform
公式(1-3)中概述的程序模型未捕获由于纱线的机械响应(例如,与其他纱线和物体接触或拉伸)而引起的变形。为了解决该问题,我们使用在空间上变化的横截面仿射变换(cross-sectional affifine transformation)T来扩充程序纱线模型。具体来说,T将每个fiber hj转换为:
反过来,可以像使用公式(3)一样使其变形后跟随任意纱线中心线。基于此公式,对织物纤维微结构的力学感知建模归结为找到合适的横截面变换T。然而,这是具有挑战性的,因为布纤维通常基于其材料特性和几何布置以复杂的方式对机械力作出反应。
我们旨在仅使用在纱线水平上模拟的结果来获得横截面变换T。在这些模拟过程中,纱线被表示为多段线,其中每个段都与描述局部体积变形的变形梯度F相关联。我们在§5中提供了有关基于物理模拟的布料纱线和纤维的更多详细信息。
相反,我们利用定制设计的回归神经网络来基于纱线级变形梯度F来推断横截面变换T。我们这里的目标是学习变形梯度F和横截面变形T之间的映射,以便后者可以通过等式(4)用于使程序生成的纤维变形。由于不同类型的纱线(例如棉与丝绸)通常表现出独特的纤维结构,这些结构会导致纱线对外力的反应不同,因此我们分别学习了每种纱线的映射。
4.2.1 Training data generation
我们通过在纤维和纱线水平上对单根纱线进行一系列模拟来生成训练数据。为了确保训练数据集涵盖由机械力驱动的各种纱线和纤维变形,我们将训练模拟配置为包括由几个刚性圆柱体压缩的单根纱线。我们在模拟中使用多个圆柱体排列(图5如下),并收集结果作为我们的训练数据集。
fig5:Simulation for training:我们模拟了一系列配置下纱线的变形。 特别是,我们使用四个常见模式[34],每个模式使用六个不同的圆柱间距。 请参阅补充材料以获取完整的配置集。
Training simulations:对于每种模拟配置,如图6-a所示,我们使用第4.1节中描述的程序方法来生成直纱线的组成纤维,作为模拟的初始状态。 然后,我们准静态地将几个刚性圆柱体移向纱线,并模拟纤维的机械响应。 我们在每个时间步骤后记录所有纤维曲线的形状。
fig6:Computing cross-sectional fiber deformations:我们在纤维(a)和纱线(b)级别上模拟一根纱线。在纱线水平上,我们沿着模拟的中心线依次生成纤维(由于§5中所述的参数均质化,因此与纤维级别模拟一致)。对于沿两条纱线的每个横截面(从纱线水平和纤维水平模拟),我们计算横截面平面上纤维的交点,以获得每根纱线的二维点云。 最后,我们在两个点云之间执行2D形状匹配,并获得所需的纤维变形矩阵T。通过使程序生成的纤维变形,得到的纤维微结构(c)与纤维级模拟的结果紧密匹配。
在纱线级别,我们模拟了纱线中心线对相同的准静态移动圆柱体的反应(图6-b)。由于我们的参数均一化步骤(将在§5中进行详细介绍),模拟的纱线中心线与纤维级模拟的中心线非常吻合。在每个时间步骤之后,我们记录纱线中心线以及法线和法线方向(使用模拟的捻角计算)以及沿纱线的变形梯度。使用记录的中心线和法线,我们使用等式(1-3)在模拟中心线之后生成纤维曲线,而不会变形。
Shape matching:给定两个级别的模拟结果,我们现在沿着纱线中心线计算T(z),以补偿模拟的纤维曲线与程序生成的曲线之间的差异。我们在纱线折线的边缘中心离散T(z)。在每个边缘中心,我们定义一个垂直于沿中心线的切线方向的横截面。 然后,我们计算横截面和纤维曲线之间的交点(图6-ab)。令Pfiber和Pyarn分别表示使用模拟纤维曲线和程序生成的横截面纤维位置。然后,所需的横截面变形T应使Pyarn弯曲以尽可能接近Pfiber。 这可以表述为2D中的形状匹配问题[25]。通过等式(4)应用计算出的变形T,程序生成的纤维可以与完全模拟的纤维紧密匹配(图6-c)。
4.2.2 Our regression network
接下来,我们训练回归神经网络,以学习在纱线水平模拟的变形梯度与横截面纤维位置的横截面变换之间的关系。 在运行时,将使用网络来估计后者,而无需求助于光纤级仿真。
Input and output:沿着纱线的任何横截面的变形T大部分取决于作用在横截面周围较小区域的外力,因此,当我们的回归网络估算横截面的T时,它将模拟变形梯度作为输入 换句话说,我们的网络就像是沿着纱线中心线的(非线性)一维滤波器。
Transforming training data to local frames:由于模拟的纱线曲线可以在不影响其内部结构的情况下旋转,因此我们希望回归网络的输入和输出具有旋转不变性。但是,我们的变形梯度确实会在旋转下发生变化,因为它们有效地将纱线多段线的各个部分从其规范的材料空间(切线方向与x轴对齐)转换为世界空间。该观察结果表明,我们应该将模拟的变形梯度转换为局部参考框架,以确保旋转不变性。
考虑横截面的局部邻域(图7),我们通过指定邻域中每个横截面的切线t,法线n和双法线b来定义局部参照系。切线t自然遵循纱线中心线的切线。 为了确定法线n,我们在中心横截面上使用主法线n0。令t0为该位置的切线,b0:= n0×t0。然后,(t0,n0,b0)在中心横截面定义参考1的局部框架(坐标系?)。 以此框架为参考,我们如下确定邻域其余截面的局部框架。 对于切线方向为t0的横截面,我们将其法线和双法线设置为:
其中S表示将t0与t0对齐的最小旋转。 作为一种极端情况,当中心截面的主法线消失时,我们找到一个主法线不消失的最近邻居,并在那里生成参考坐标系(t0, n0, b0)。当我们以最小化旋转的方式定义法线方向时,局部参照系在任意邻域内沿中心线平滑地变化。
接下来,我们使用以下命令将变形梯度转换为局部坐标系:
其中F是纱线水平模拟提供的原始变形梯度。 然后,附近的所有F个局部矩阵一起用作回归网络的输入。
Fig. 7.Input and output:我们的神经网络将纱线水平模拟在横截面附近的小邻域窗口中给出的变形梯度作为输入,并估算该横截面处的横截面变形。最后,由于等式(5)给出的法线和双法线方向通常与纱线中心线给出的方向不同,因此我们还需要将每个横截面的形状匹配结果T转换为新定义的局部坐标系。然后,邻域局部的横截面变形为:
这也是我们回归网络的预期输出。
Loss function for training:
loss function:
其中{Flocal},表示第i个横截面附近的局部变形梯度,Tlocal是该横截面所需的纤维变形,N()表示网络输出(以变形梯度作为输入),H为 一个常数矩阵,其中包含每个纤维中心在所有横截面上的平均二维位置,而|| * ||表示矩阵的2范数。
直观地,该损失函数涉及一个参数损失项,该项捕获网络预测与所需输出之间的差异。此外,为了规范化网络,我们引入了一个额外的规范化项,加权项是λ> 0。由于H矩阵由一组纤维的横截面位置组成,因此N {Flocal} H和TlocalH分别使用网络预测和所需的输出来给出转换后的纤维位置。然后,正规化项将捕获这两个转换后的2D点云之间的差异。
Data augmentation:为了进一步提高回归网络的鲁棒性,我们将训练数据增加了四倍。给定邻域中的一组局部坐标系{(tk, nk, bk)}(其中k表示邻域中的每个横截面),我们为每个k计算另外三组由(tk, -nk, -bk)、(-tk, nk, -bk)和(-tk, -nk, bk)给出的参考系。然后,对于每组框架(坐标系),我们通过等式(6、7)计算相应的局部变形梯度Flocal和纤维变形Tlocal并将它们包括在训练数据集中。 在实践中,我们发现此数据增强步骤大大提高了回归网络的稳定性。
Network implementation:我们的回归网络由三个完全连接的隐藏层组成,每个隐藏层具有256个内部节点(请参见图8)。 我们使用带有Tensorflow [12]的基于Python的Keras库[7]来实现此网络。我们将扩充后的数据分为一个训练集(85%)和一个验证集(15%),并使用Adam方法[22]优化网络权重。
Fig. 8. Network architecture.我们的回归神经网络包含三个完全连接的隐藏层,每个隐藏层具有256个节点(以绿色显示)。该网络充当沿纱线中心线的一维非线性滤波器,并将模拟的变形梯度F转换为横截面纤维变形T(请参见图7)。
5 SIMULATION MODEL
本节介绍了用于纱线和纤维级仿真的数值模型。该仿真模型有两个目的:一是生成用于丰富纤维级几何结构的深层神经网络的训练数据(第4.2节),二是在运行时执行纱线级仿真,以提供训练后的深层神经网络的输入(第6章) )。
为此,仿真模型不仅需要捕获纱线水平和纤维水平的动力学,而且仿真纱线的动力学在两个尺度上也必须保持一致。这带来了从纤维级模拟拟合(或均化)纱线级材料参数的问题。虽然已经提出了几种模型来模拟纱线,但它们都没有解决参数均一化的问题,这是本节重点介绍的问题。
5.1 Unifified Simulation at Yarn and Fiber Level
我们采用弹性杆模型[5]和基于[17]的混合拉格朗日/欧拉方法,在统一框架下对纱线和纤维层面的纺织品进行了模拟。我们会参考他们的论文以获取更多详细信息,同时在这里简要回顾用于描述参数均一化的关键组件。
Internal force:
Fig. 9. Yarn/fiber discretization.在纱线级模拟中,每根纱线都由连接在一条折线上的一系列粒子表示。在纤维层模拟中,将每根纤维表示为一条折线,将一组纤维加捻成一根纱线。
在光纤级仿真中,每条光纤都表示为多段线; 在纱线级仿真中,折线代表纱线。在这两种情况下,我们都使用弹性杆模型[5]计算内力。 内力由三种类型的弹性能量贡献,即拉伸,弯曲和扭曲能量。 按照[5]中的表示法(总结于图9),离散拉伸定义为:
其中|ei|为(拉伸)边长,|e¯i|为相应的静止长度,k为拉伸系数。此外,还给出了离散弯曲和扭转能量:
li是例子i的静止长度,定义为:
标量mi是在粒子i处的折线的扭曲角,而κbi是其曲率双法线。具体公式参考[5]。最后,α和β分别是弯曲系数和扭曲系数。 参数α,β以及k(在等式(9)中)与材料有关。它们在纤维级和纱线级仿真中是不同的:纱线级仿真中的值是纤维级仿真中的“均质化”版本。
External force:纤维(或纱线)在外力(如碰撞力和摩擦力)作用下会变形。然而,在计算上无法解决碰撞和摩擦问题,特别是在纤维级模拟中,其中纱线被明确地建模为大量纤维。因此,我们采用拉格朗日/欧拉混合方法[17],该方法按体积处理纤维(或纱线)的变形。
在这种方法中,将碰撞力建模为纤维(或纱线)体积的压缩阻力,而将摩擦力视为纤维(或纱线)体积的剪切阻力。为了在离散化设置中对这些力进行建模,每个边缘ei都与一个弹性变形梯度Fi相关联,该梯度描述了ei附近的纤维(或纱线)体积的局部变形。
Particularly, the local material directions Di = [D1 D2 D3] of ei at the rest state is deformed into FiDi, the deformed material directions.应用QR分解QR = FiDi会产生正交法线方向Q和矩阵R.后者可以进一步分解为三个分量(即R = R3R2R1),如下所示:
R1表示沿曲线(是纤维或纱线)的切线方向的拉伸,R2表示沿曲线的切线,R3表示横截面变形。类似于[17],我们使用两个二次能量函数g(R2)和h(R3)对碰撞和摩擦力产生的能量进行建模。 它们的具体形式将在§5.2中简短描述。与[17]不同,我们忽略了拉伸分量R1,因为在上述弹性杆模型中已经考虑了拉伸能量,并且[17]的方法没有考虑曲线的弯曲和扭曲力。
使用这些能量定义,可以通过获取相对于折线的粒子位置的能量导数来计算内力和外力。这些力的完整推导在[5]和[17]中有详细介绍。 在我们的仿真中,我们使用显式辛欧拉(时间步长为2×10-5)来随时间推移推进曲线的状态。
Remark:外力的体积观为我们提供了另一个优势。在每个边缘ei处的变形梯度Fi封装了由于外力引起的局部变形(例如拉伸,旋转和剪切)。因此,在纱线级仿真中,Fi提供了有关形成纱线的纤维应如何变形的简明线索。 自然地,Fi将被馈入到深度神经网络中,以估计纤维级的几何形状,如第4.2节所述。
5.2 Parameter Homogenization
我们在纤维级和纱线级仿真中都使用了上述力模型。 为了确保在两个级别上均一的纱线动力学,我们必须在公式(9)和(10)以及能量函数g(R2)和h(R3)中设置适当的材料参数。在纤维级模拟中,将根据纤维(如丝绸和棉线)的物理特性来设置材料参数。在纱级模拟中,我们需要设置参数,使模拟的纱线曲线在相同的初始条件下,与纤维级模拟中相应纤维束的中心线紧密匹配(图10)。
Fig. 10. Centerline of a fiber bundle.在纤维级别模拟一根纱线,蓝色显示单个纤维。 纱线的中心线以红色突出显示。 我们拟合纱线水平参数,以使由纱线水平模拟产生的纱线曲线与纤维水平模拟的中心线紧密匹配。
5.2.1 Fitting parameters of internal forces
我们首先在纱线水平仿真中确定方程(9)和(10)中的弹性杆参数(k,α和β)。 由于这些参数彼此独立,因此我们以相似的方式分别拟合它们的值。为了拟合k,我们在纤维级模拟中将纤维束准静态拉伸一小段距离Δx,并评估纤维束末端的集体拉伸力f*s。
同时,在纱线水平模拟中,我们将等长的纱线准静态拉伸Δx。我们搜索k,以使纱线末端的拉伸力fs匹配f * s。由于fs与k成正比,因此可以通过二进制搜索快速找到k的值(图11-a)。在实践中,我们发现k对Δx的选择不敏感,因此我们以不同的Δx值多次重复此拟合过程,然后取平均值。如图11-b和-c所示,可以类似的方式获得弯曲和扭曲系数(α和β)。
Fig. 11. Fitting elastic rod parameters.
(a)固定一根纱线的一端,在纤维水平(顶部)和纱线水平(底部)模拟中将其拉伸∆x。拉伸系数k在二分搜索(二元搜索)中找到,以匹配得到的拉伸力fs*和fs。
(b)固定纱线的一端和中点,我们准静态地移动另一端,以在纤维水平(上面)和纱线水平(下面)模拟中将纱线弯曲相同的量。 在二元搜索中找到弯曲系数α,以匹配最终产生的弯曲力fb *和fb。
(c)(c)同样,在纤维水平(顶部)和纱线水平(底部)模拟中,我们固定纱线的一端,并在另一端加捻角θ。 在二元搜索中获得扭曲系数β,以匹配所产生的转矩τ∗和τ。
5.2.2 Fitting parameters of external forces
如第5.1节所述,外力由两个均具有二次形式的能量函数g(R2)和h(R3)确定。在纤维级仿真中,
类似[17]。这里,rij是等式(11)中定义的矩阵元素。 γ,μ和λ是根据特定纤维类型设置的参数。 在纱线级仿真中,我们使用:
其中参数ai和bi(i = 1,2,3)是我们需要拟合的。
拟合这些纱线水平参数并非易事。 与弹性杆参数不同,参数ai和bi通过g(R2)和h(R3)的非线性导数与外力相关。 它们与力的关系不能分离,也不与力成比例。因此,二进制搜索没有用。 在选择ai和bi时,我们需要确保能量函数g(R2)和h(R3)为正半定值(在凸优化中称为圆锥约束)。此外,在纤维水平模拟中,变形梯度(以及因此的R2和R3)是在纤维的每个有限元ei上定义的,而在纱线水平模拟中,它们是在纱线的元素中定义的。从纤维水平模拟估算纱线水平变形梯度时需要谨慎。
我们的参数均一化基于一个关键的观察。 考虑由纤维级模拟产生的纱线。其中心线是在正确拟合材料参数时应生成的纱线水平模拟。由于在上一步中已经确定了纱线水平模拟的弹性杆参数,因此已知纱线水平模拟中的预期内力。通常,仅了解内力不够推断出纱线水平的外力。但是,如果纱线处于静态平衡状态(static equilibrium),则内力必须由外力平衡。 这意味着预期的外力也是已知的。根据这一观察,我们使用纤维级仿真来获得纱线在碰撞下的静态平衡状态,从而计算出纱线级仿真所需的外力。
根据这一观察,我们使用纤维级仿真来获得纱线在碰撞下的静态平衡状态,从而计算出纱线级仿真所需的外力。 然后,我们估计纱线水平的变形梯度,然后将其用于拟合等式(12)中的参数ai和bi(i = 1,2,3)。
Estimating deformation gradients:
现在我们描述如何从纤维水平的模拟结果估计纱线水平的变形梯度。 如图12所示,请考虑一小段纱线。在纤维级模拟中,此段由分布在一组纤维上的一组纤维粒子组成。令{x′j}表示这些粒子在静止状态的位置,{xj}为其在变形状态下的对应位置。同一段的纱线水平变形梯度F应该能够将{xj} nj = 1转换为{xj} nj = 1。
这再次是形状匹配问题[25],[36],与我们在第4.2.1节中遇到的问题类似。 F是通过解决最小二乘问题获得的,
其中t是消除平移差异的向量,与F共同优化。
Fig. 12. Estimating deformation gradient.考虑一小段纱线(在红色框中突出显示)。我们在右侧可视化横截面纤维分布。 在纤维级模拟中,纤维分布会严重变形(右下)。我们估计了一个“均质的”变形梯度(即3×3转换矩阵),该变形梯度会转换其余材料空间中的纤维以使其与变形的纤维尽可能接近。
Fitting ai and bi:外力通过g(R2)和h(R3)相对于变形梯度F的导数与ai和bi有关,因为R2和R3是使用F计算的。一旦估计了纱线水平的外力和变形梯度,我们就可以拟合参数ai和bi。 拟合过程的完整说明涉及拉格朗日/欧拉方法的详细推导[17]。在不中断展示流程的情况下,我们将其推迟到附录中,这是一个六维半定二次线性规划问题。(a six-dimensional semidefinite-quadratic-linear programming problem.)
6 RUN-TIME PHASE
完成预处理阶段后,我们现在可以生成具有纤维级细节的动画(动态)布料模型。
Our runtime pipeline takes the following inputs:
我们的运行时管道接受以下输入:
•在参数拟合步骤(第5节)中获得的纱线级材料参数;
•通过等式(1)和(2)进行纤维程序生成的参数;
•预训练神经网络,它沿着纱线中心线将纱线级变形梯度映射到纤维级变形(第4节)。
•用于执行纱线水平模拟的织物的初始条件。
我们的系统在运行时的输出是动画纤维曲线的集合。
我们的纱线水平模拟输出了纱线中心线的形状和排列,以及沿纱线的变形梯度和法线方向。有了这些信息,我们首先在不变形的情况下利用模拟的纱线中心线和法线生成纤维曲线。
如图2所示,忽略纤维力学会导致宏观外观不准确。因此,我们使用由神经网络估计的变形矩阵T更新横截面纤维位置。具体而言,我们将神经网络作为一维过滤器应用于织物的每根纱线。对于每个横截面窗口,我们首先将模拟的变形梯度转换为相应的局部参考系(第4.2.2节),并将其输入到神经网络以估计横截面变形矩阵Tlocal。通过等式(7)的逆,该矩阵Tlocal被变换回T,后者又被用来变换等式(4)中的光纤曲线。 最后,准备好纤维级几何结构以渲染织物。
7 RESULTS
为了生成训练数据集,我们在纤维和纱线水平上模拟一根纱线。 表1列出了用于纤维级模拟的材料参数。
尽管我们使用相同的纤维级参数集,但拟合的纱线级参数集可能会有所不同,因为纱线级参数还取决于纱线中特定的纤维结构。在运行时,仅需要纱线级仿真。 原则上,我们的技术独立于基础的基于纱线的仿真方法。在实践中,我们使用姜[17]引入的各向异性弹塑性模型,因为它具有很高的物理精度。我们的训练纤维和纱线级模拟在一个工作站上运行8天(对于所有配置)。在获得训练数据集之后,我们的回归神经网络在30分钟内进行训练。
为了渲染我们的机械感知的布料模型,我们通过程序生成所有的纤维并使用回归网络预测的横截面变换来变形来完全实现它们。我们的方法可以与以前的实现最小化技术[24]相结合,以获得更好的渲染性能。
7.1 Validation and Evaluation
Single-yarn results:通过与照片和纤维水平的参考模拟进行比较,我们验证了我们方法的准确性。在图13中,我们显示了使用先前工作中拟合的程序参数对三种类型的纱线(人造丝,棉和聚酯纤维)进行的实验结果[35]。我们直接或通过许多3D打印的圆筒拉伸所有这些纱线。我们直接或通过许多3D打印的圆筒拉伸所有这些纱线。 两种情况都与我们的训练模拟有很大不同。
我们的方法能够准确估计纱线的纤维级微结构的变形(图13-c),而使用忽略纤维力学的先前方法(图13-d)无法精确捕获这种变形。如图所示,精确估计纤维的微观几何形状对于大规模生产织物外观至关重要。 请参阅随附的视频以获取相应的动画。
该实验还验证了我们的参数均化算法。 图13的(b1)列是使用纤维水平模拟生成的,而(c1)列是使用具有拟合参数的纱线水平模拟生成的。显然,由具有合适材料参数的纱线水平模拟得出的纱线中心线能够与纤维水平模拟得到的纱线中心线紧密匹配。
Fig. 13. Generated models for single yarns.通过将结果(c)与照片(a)和使用三种类型的纱线(聚酯,棉和人造丝)的参考纤维水平模拟(b)进行比较,我们证明了该方法的有效性。
(d)列显示了程序生成的纱线,其纤维力学被忽略。
顶部图像(1)显示了来自各个纱线的详细的纤维微结构。
底部图像(2和3)使用顶部结果的平铺版本,以演示这些结构的差异如何影响宏观外观。
Alternative regression models:为了了解纱线级模拟变形梯度与所需的纤维中心变形之间的映射关系,由于这种映射关系的复杂性,我们选择使用回归神经网络。图14展示了一些更简单的回归模型的性能,其中包括线性和多项式回归以及高斯过程。 经过相同的数据训练,我们的回归网络表现得更加稳定,并提供具有卓越视觉质量的结果。
Fig. 14. Alternative regression methods诸如线性和多项式回归以及高斯过程,很难捕获模拟的纱线级变形梯度与纤维中心所需的横截面变换之间的复杂关系。
Multi-yarn results:
图15显示了参考(通过纤维级模拟获得)和我们的结果之间的比较。因为显式地模拟单个光纤在大规模上是很棘手的,所以我们用4×4根纱线对一个小补丁进行了仿真,并将得到的光纤几何形状平铺为参考(即,直接在光纤级别上进行仿真)和我们的方法(即, 丰富纱线级模拟)以提供宏观比较。
如图所示,我们的结果在微观和宏观尺度上都类似于reference,而以前的方法未能捕捉到纱线的稀疏效果(图15-c)。
Fig. 15. Generated models for a small textile.我们模拟了八种纤维(四种水平纤维和四种垂直纤维)的动力学,如图所示。我们通过纱线水平模拟和纤维变形神经网络生成的结果与在纤维水平完全模拟的参考非常匹配。
最后,我们在结果和照片之间进行了定性比较(图16)。在本实验中,我们拍摄了处于静止和拉伸状态的真实针织物的照片。此外,我们在物理样本之后创建了一个虚拟模型,并调整了光学参数以匹配静止状态下的外观(图16-a1和b1)。 然后,我们在纱线水平上模拟此模型的拉伸,并将我们的技术应用于拉伸的模型。我们的方法(图16-b2)成功地预测了由纱线和纤维变形引起的颜色变化。 请参阅随附的视频,以获取此比较的动画版本。
Fig. 16. Qualitative validation of our technique.我们比较了在静止状态(a1)和拉伸状态(a2)下由尼龙制成的真实针织物的照片。对于具有类似静态外观(b1)的虚拟模型,我们的方法可以预测织物拉伸时(b2)外观的变化。 现有方法忽略了纱线和纤维的机械响应,因此无法捕获这种现象(c1,c2)。
7.2 Simulated Results
现在,我们通过大量实验证明了我们技术的有效性。 有关详细的统计信息和性能数字,请参见表2。
TABLE 2 Simulation and processing time statistics.在图13中,光纤级仿真仅用于生成参考。
最右边一栏中的数字表示通过评估我们的回归网络在程序上生成纤维曲线并使它们变形所花费的总时间。在具有四个Intel Xeon E5-2620 v3 CPU的工作站上收集时序统计信息,每个CPU具有六个内核,每个内核以2.40GHz运行。
我们的技术可以独立地应用于整幅织物的单根纱线。图17显示了全针织纺织品的渲染结果。图17-a示出了具有向外滑动的罗纹针脚花纹的针织物,使得整个织物变得更加透明。在图17-b中,我们显示了一个刚硬的球体被推向另一个具有相同图案的针织物。球体施加的接触力会在织物的整个表面上发生变化,从而在空间上产生纱线和纤维变形。我们的模型能够以令人信服的方式重现这种效果。在图17-c中,我们显示了由Wu和Yuksel [32]仿制的针织手套的拉伸。该手套中的纱线和纤维的机械响应会极大地改变其宏观外观:由于纤维排列得更好,手套不仅变得更加透明,而且看起来也更加光亮。我们的技术成功捕获了这种复杂的外观变化,而无需模拟单个布料纤维。
Fig. 17. Generated models for knitted fabrics.我们的技术还可以捕获由于针织面料对外力的机械响应而导致的外观变化。 (1)其余形状的织物; (2)用我们的技术建模的变形织物; (3)变形的织物,其纱线中心线相同,但忽略了纤维水平的变形。 (a),(b)和(c)中的针织物分别由棉,聚酯和人造丝构成。
除针织面料外,通过编织制成的面料在我们的日常生活中也很普遍。尽管机织织物与针织物相比通常具有更高的刚性(即,更不易变形),但我们的技术设法捕捉到其力学驱动的外观变化。图18-a包含一种小的机织织物,其编织图案产生了花朵图案。在水平拉伸后,沿着拉伸方向的纬纱比垂直于拉伸方向的经纱更细。这将导致整个织物显得较少的红色和较多的白色。我们的技术成功地捕获了这种效果(图18-a2)。在图18-b中,我们显示了具有2×2斜纹图案的织物。
在图18-b中,我们显示了具有2×2斜纹图案的织物。该织物被推到具有胶囊形状的静态物体上,这导致绿色纱线比黄色纱线拉伸更多。纤维排列的这种变化会影响织物的整体外观,使接触胶囊的区域更加发黄。我们的技术成功地捕获了这种外观变化。
最后,在图18-c中,我们显示了提花织物在水平和垂直方向上都被拉伸,从而导致复杂的纱线和纤维变形。我们的模型设法产生由这些变形引起的空间变化的外观变化(图18-c2),如果忽略纤维级变形(图18-c3),则几乎不存在这种变化。
8 DISCUSSION AND CONCLUSION
Limitations and future work:
由于我们的技术没有明确模拟纤维,因此无法捕获涉及复杂纤维级行为的视觉上显着的影响。例如,刷一根纱线会拉掉它的许多纤维,使纱线变得更毛糙。捕获此类效果可能需要对单个光纤进行显式仿真。 尽管目前很棘手,但这个问题仍然值得将来研究。当纱线数量较大时,即使在纱线级模拟中也会出现相同的计算问题。我们的管道并不严重依赖于我们选择使用的特定仿真模型。因此,更有效的纱线级模拟方法可能对我们的管道有益
此外,由于在我们的纱线级仿真中纱线没有明确的“边界”,因此可以使用体积弹性能解决碰撞。然而,两条纱线曲线可能彼此非常靠近,从而导致纤维相交。 虽然如何以高效和有效的方式解决长丝结构的碰撞始终是一个长期的挑战,但改进我们的技术以减少纤维的交点是未来研究的有趣话题。
最后,以前我们的方法所使用的程序模型主要是针对简单纱线进行测试的[27],[35]。 概括模型和我们的方法以支持更大范围的纱线(例如人造纱线和新颖纱线)可以使将来的应用受益。
Conclusion:
最后,我们方法所使用的程序模型之前主要针对简单纱[27]、[35]进行了测试。将模型和我们的方法一般化,以支持更广泛的纱线(例如人工的和新奇的纱线),这将有利于未来的应用。
我们引入了第一个力学感知的布料外观模型,该模型能够捕获由外力引起的布料纱线和纤维的重排,而无需明确模拟单个纤维。我们技术的核心是扩展的建模过程,该过程可以合成布料纤维,并仅基于纱线级别的模拟信息对其进行重新排列。我们利用定制设计回归神经网络,该神经网络将表示为变形梯度的模拟力映射到纤维中心的横截面仿射变换。为了训练该网络,我们在纱线和纤维水平上都使用单根纱线的训练模拟,并采用新颖的参数拟合步骤来确保两个尺度上的一致性。 用我们的技术得出的结果表明,在微观和宏观尺度上,布的外观都是合理的。