文摘

在本文中,我们提出一个有效和简单rigid-fluid耦合方案与科学编程算法particle-based流体模拟和三维可视化。我们的方法样品表面的刚体与流体边界粒子相互作用。它包含两个过程,即表面采样和采样放松,保证均匀分布的粒子以更少的迭代。此外,我们提出一个rigid-fluid耦合方案整合个人时间步进rigid-fluid耦合,而获得一个明显的加速效果相比以前的方法。实验结果证明我们的方法的有效性。

1。介绍

基于物理的流体模拟是一个受欢迎的问题在计算机图形学和虚拟现实而具有巨大的研究和应用需求在人类——计算机三维可视化和交互。更现实的模拟效果和更高的效率是主要的目标;因此,合理、高效和科学编程算法设计和实现需要动画。两个主要方案用于动画液体:基于网格的欧拉方法和particle-based拉格朗日方法。欧拉法特别适用于模拟大量液体,而被限制时间和计算时间步小规模的特性。相比之下,拉格朗日方法适用于捕捉小规模如浪花和液滴的影响。在各种particle-based方法,平滑粒子流体动力学(SPH)是最受欢迎的方法,模拟流体由于计算简单和效率。

在现实中,rigid-fluid交互广泛存在于许多场景。因此,有趣的流体行为一旦出现刚性对象添加到流体模拟。而particle-based流体之间的相互作用和刚性对象似乎简单,仍然有几个问题没有很好的解决。首先,必须抽样粒子以刚体与particle-based体液,但只有少数刚性边界采样方法可直接用于rigid-fluid耦合模拟。另一方面,rigid-fluid耦合的计算费用是相当大的。来处理不断增加的要求更详细的液体和效率高,我们提出严格的抽样和个人时间步进rigid-fluid耦合和设计一个实用和容易rigid-fluid动画仿真方案与我们的科学编程算法。

Desbrun Gascuel介绍SPH模拟变形对象的计算机图形学(1]。SPH流行在计算机图形学中各种流体现象。莫纳亨解决与SPH模拟自由表面流2),作为SPH流体模拟的基础。穆勒et al。3]提出了利用气体状态方程与表面张力和粘度流体仿真,也使压缩问题。贝克尔和Teschner [4]提出WCSPH用人泰特方程降低压缩性。这显著增加现实的影响但效率是受时间限制的一步。不可压缩性费用计算时间,许多改进算法解决提高效率。Solenthaler和Pajarola5]提出PCISPH使用预示校正方案来确定粒子的压力和大时间步WCSPH显著提高效率比较。另一个类似的方法确保由迭代过程不可压缩性LPSPH [6]。后来,Ihmsen等人一个更有效的方法解决IISPH [7]。它精心构造压力泊松方程,解决了线性系统使用放松的雅可比,这有很大的改善以及收敛速度和稳定性特别适合大规模的场景。最近,一个有前途的敏感的SPH方法提出了本德和Koschier8]。它结合了两种压力解决执行低体积压缩和divergence-free速度场和允许大的时间步长,产量相当大的性能提升。

此外,自适应方法,空间分辨率或时间离散化,是提升效率的另一种方式。他们分配计算资源的地区复杂流动行为。空间自适应方法(9- - - - - -11)自适应采样粒子和雇佣更少的粒子产生相似的细节。大颗粒分为小颗粒如果需要高分辨率的,反之亦然。然而,困难存在于繁殖数量当精炼粒子,和邻居搜索通常是瓶颈。另一种自适应空间离散化,可以自适应时域采样。在全球范围内自适应时间步进方法(1,12,13)使用一个时间步长调整每一步考虑所有粒子的CFL条件。虽然每个粒子当前的最小时间步长,这不是最有效的方式。局部自适应时间步进方法(9,14,15使用不同的时间步骤粒子。Desbrun和Cani建议每个粒子计算力量取决于当前的个人时间步(9]。他等。16]采用这种想法并实现稳定的僵硬的流体仿真。它更新位置、速度和密度为活性粒子活性粒子和篡改。在本文中,我们将其集成rigid-fluid耦合,以减少计算时间。

边界处理的SPH流体仿真,基于距离的处罚方法普遍采用(17- - - - - -19]。尽管如此,这些方法需要大惩罚部队限制时间步长,使粒子坚持缺乏流体边界的邻居。冷冻或幽灵粒子基础模型是用来解决粘颗粒的问题(20.]。为了避免渗透,多一层冷冻粒子的使用(21),或渗透粒子的位置应该纠正13]。然而,处理双向互动是麻烦的,因为升高密度边界附近另一阶段影响粒子的阶段。出于这个原因,缺乏流体邻居,鬼SPH [22]解决了这些问题使用一层狭窄的幽灵粒子和Akinci等人采用边界粒子正确计算流体密度(23]。因为鬼SPH更费时,我们使用Akinci的边界处理方法简单,容易实现。

rigid-fluid耦合,提出了几种方法。在[24),流体表现为刚性球体与刚体切换的冲动。在[25,26),压力边界考虑的双向fluid-rigid耦合。然后,哦,等人提出了一个impulse-based方案的双向耦合SPH流体与刚体(27]。贝克尔等人提出了直接迫使rigid-fluid耦合(28雇佣了一个预示校正方案执行特定的值粒子位置和速度。Akinci等人提出了一个momentum-conserving双向耦合方法基于水动力的力量使用边界粒子样本表面的刚体(23]。我们提出一个rigid-fluid耦合方案通过整合个人时间步进Akinci的边界处理方法,获得一个明显的加速29日]。

刚体抽样包括particle-based方法和polygonization-based方法。土耳其人击退了粒子表面得到均匀的样品(30.同时简化多边形化通过减少多边形的数量(31日]。却和Heckbert雇佣当地的斥力使粒子均匀传播(32]。Nehab和Shilane33)提出了分层抽样点的算法。库克解决磁盘泊松分布的随机抽样与蓝噪声(34]。蓝色抽样有能力生成随机点和均匀分布的采样点集。因此,以下抽样方法总是蓝色的噪声特性。Corsini等人用蓝色三角形网格采样噪声属性(35]。邓巴和汉弗莱(36)修改泊松磁盘示例使用空间数据结构。布赖森(37)简化邓巴与拒绝抽样的方法和扩展到更高的维度。然后,Schechter [22修改布赖森的鬼魂SPH方法和使用。灵感来自于Schechter的方法,我们解决采样方法提高了SPH方程更高效和容易实现。

3所示。Particle-Based流体仿真框架

在particle-based流体模拟中,粒子上的力是来自navier - stokes方程。质量守恒定律和动量都写成 在哪里 是速度, 是密度, 的压力, 是粘度系数, 是外部的力场。

SPH的作品获得近似表达流体流体动力学方程的数值解的粒子。场变量的SPH的表示 在位置 被定义为 在哪里 分别代表粒子的质量和密度 是平滑的内核, 是平滑半径。

它可以很容易地来自基本的SPH取代流体密度方程 到(2),也就是说, 因此,粒子的压力 和粘滞力 可以写成 在本文中,我们使用泰特方程(4]计算的压力;也就是说, ,在那里 是流体的密度, 刚度参数, 声速。我们使用方程(23)来计算粘性力。

4所示。边界处理Particle-Based液体

在rigid-fluid互动,有三种类型的力在粒子:流体粒子和边界粒子之间的力量 ,流体粒子之间的力量 ,边界粒子之间的力量 ,如图1。在我们的模拟中,我们样本刚体获得边界粒子部分中描述5。此外,对于rigid-fluid交互的边界处理方法,我们实现我们的模拟工作的基础上23]。下面将简要介绍边界处理在这一节中。

考虑的影响边界粒子,流体粒子的密度公式(3)需要引入加权求和的影响边界粒子(23),也就是说, 在哪里 表示流体粒子 和边界粒子 ,分别。第一个求和计算相邻流体粒子的影响,而第二个求和计算相邻边界粒子的影响。这个公式可以克服边界缺陷SPH流体模拟的问题在某种程度上。

由于使用边界粒子质量(5),流体粒子的密度是不正确的或不稳定的边界粒子密度时设置不合理或分布不均。因此,考虑边界粒子流体粒子的贡献由边界粒子的体积 在哪里 表示剩余的液体密度和 边界区域的体积的估算值相应的边界粒子。应用 取代边界粒子质量能保证稳定。

因此,(5)可以写成 最重要的流体粒子和边界粒子之间的相互作用是压力。边界粒子所产生的压力加速流体粒子可以计算 在哪里 需要 。当 、边界粒子和流体粒子相互吸引;然后,我们可以调整参数 ( ),实现不同的吸附效果,我们选择 在我们的实验。

模拟流体和容器壁之间的摩擦或刚体和流体之间的相互作用,我们需要计算边界粒子与流体粒子的摩擦。由人工粘性摩擦力计算;也就是说, 在哪里 ,

的(8)和(9列出),流体粒子的力量,我们可以得到边界粒子的力量使用牛顿第三定律。流体粒子边界粒子所产生的力量 在哪里 表示流体边界粒子的邻居 。的反作用力(8)和(9)。

对于一个刚体,总力和扭矩需要计算。这可以分别写成 在哪里 是边界粒子的位置在哪里吗 表示一个刚体的质量中心。总力和转矩将传播到物理引擎来处理刚体的运动。

5。刚性边界采样

刚体在rigid-fluid耦合抽样是第一个问题,我们必须处理。我们提出一个刚体抽样算法是泊松的扩展磁盘法和抽样法(22]rigid-fluid耦合。

刚性对象抽样,边界粒子用于样品表面的刚体,有几个优点。首先,使用粒子允许我们得到一个刚性模型,可以处理不同形状复杂的几何结构。另一方面,使用边界粒子成功减轻粘工件,使抽样制服。

有两个组件在我们抽样:表面采样和表面放松。如图2刚性物体的表面,它首先样本图像,然后改善初始抽样与表面放松。为了实现第一个程序,它需要快速投影点的表面。因此,水平集方法来表达表面几何 分别表示外部和内部的对象 表示刚性物体表面。

签署后,获得的表面几何距离函数,我们使用表面采样方法(22)(见算法1),首先,搜索种子点表面上通过检查每个网格单元与表面相交;细节如下:预测随机点从细胞表面和停止时,点满足泊松磁盘标准、运营 尝试在一个单元中;当获得种子样本,继续样本大小的迈出一步 从之前的样品在一个随机的切线方向 ;然后投射到表面并再次检查泊松磁盘准则。参数选为

输入:水平集 ,半径 ,数 ,不断
输出:样本集
(1)所有网格细胞 修改标志
(2)每一个
(3)生成随机点
(4)项目 表面的
(5)如果 在满足泊松磁盘标准 然后
(6)
(7)打破
(8)如果没有被发现 然后
(9)继续
(10)新样品被发现
(11)生成随机的切线方向 表面的
(12)
(13)项目 表面的
(14)如果 在满足泊松磁盘标准 然后
(15)
(16)

为了优化采样点的位置,减少噪音,并得到一组均匀分布的采样点,我们需要进一步提高采样集表面放松一步。灵感来自于松弛算法(22)和SPH插值法、表面松弛算法在算法2。与采用随机测试方法(22),我们迫使粒子根据密度梯度。这确保了粒子运动稀疏的地方,以确保均匀分布的粒子。

输入:样本集 ,水平集 ,半径 ,数 ,不断
输出:放松的样本集
(1)每一个
(2)每一个
(3)计算密度 ,平均密度
(4)计算密度梯度
(5)
(6)
(7)如果 或来自表面样本
(8)项目 表面的
(9)如果 在满足泊松磁盘标准
(10)

它始于最初的粒子算法的种子1通过密度梯度并试图重新定位每个样本。下一个计算密度 和密度梯度 每个表面的粒子密度和雇佣了偏差 和平均密度 作为一个系数调整距离 。然后,它使用 调整粒子的位置。表面表面样本候选人预计将再次和保留满足泊松磁盘标准。参数t是迭代和f是距离系数。根据SPH梯度公式,粒子的密度梯度可以写成 的基础上签署的距离 ,它是相当方便的计算步骤 。如果 ,这意味着 不是表面上。而对于预测粒子表面,我们计算了距离场梯度 。投影公式 我们所做的实验在二维与松弛算法(22]。我们在一个随机生成100点 广场如图3。红点表示,它不满足条件的泊松磁盘。

4图显示了放松的结果3;第一行是我们的方法,第二行是方法(22]。列(一个)显示分布的点后放松两个算法和红点意味着它不满足泊松磁盘条件。每个算法迭代100次,分别列(b)说明点的数量不满足泊松磁盘每次迭代条件。很明显,我们的方法可以得到更好的效果,轻微的脑震荡。比较的方法22),优化的效果基本上是相同的经过30次的迭代使用我们的方法虽然快泊松磁盘方法的最优结果。此外,我们的方法更有效。在MATLAB环境中,所有的参数都是一样的(所22];我们的方法以2.44691秒而松弛法(22)成本56.44153秒100次迭代。

6。个人时间步进Rigid-Fluid耦合

在本节中,我们提出一个rigid-fluid耦合方法采用个人时间步进。结果,可以使用更大的时间步长比较之前的方法和总体减少了计算时间。在particle-based液体,粒子只与他们的邻居交互。所以允许粒子有不同的时间步长是更有效的比使用全球所有粒子的时间步。个人时间步进计算时间步长为每个粒子和异步更新时间步。

6.1。时间步长

particle-based液体,时间步长必须满足Courant-Friedrich-Levy (CFL)条件数值稳定,也就是说, 在哪里 是粒子的最大速度和系数 。此外,它还必须考虑粒子的最大加速度。因此,时间步长还必须满足的条件 在哪里 表示每单位质量的粒子和最大的力量 。在[13), 当我们使用,用于PCISPH吗 WCSPH。而不是使用一个常数时间步,我们调整时间步长动态 因此,每个粒子的时间步 在哪里 表示,它循环遍历所有的邻居。

然而,异步算法要求小系数,所以我们选择

6.2。异步性

因为每个粒子都有单独的时间步,我们执行异步更新时间集成。为了节省计算资源,系统时间步长选择最小化的个人时间步骤: 在哪里 计算(17)。

粒子 如果它满足条件将被更新 在哪里 表示粒子的最后更新时间 系统时间。这意味着如果系统时间大于个人时间步,粒子 将被设置为活性粒子和被更新。

Semi-implicit欧拉积分一般用于SPH模拟。以适应不同时,semi-implicit欧拉集成可以表示为 在哪里 是一个独立的积分时间步长不同的全球时间步 。不活跃的粒子,(20.)相当于插值,而活性粒子,它们semi-implicit欧拉积分方程。

6.3。算法

个人时间步进rigid-fluid耦合算法算法所示3。在该算法中,粒子 有几个额外的变量;也就是说, 表示密度导数, 时间步长, 个人条件时间步, 最后更新时间。的算法, 系统时间和吗 系统更新时间步。粒子 是活跃的

(1)动画
(2)选择活动
(3)每一个活跃的流体粒子
(4)发现流体和边界的邻居
(5)为每一个流体粒子
(6)如果活跃的然后
(7)计算 ,
(8)其他的
(9)插入 , 使用
(10)每一个活跃的流体粒子
(11)计算
(12)计算
(13)计算时间步长条件 (Eq。15))
(14)
(15)每一个边界粒子
(16)计算力(Eq。10))
(17)每一个流体粒子
(18)计算时间步长
(19)
(20)每一个刚体
(21)计算总力,力矩(Eq。11))
(22)力和力矩传递给物理引擎
(23)更新刚体
(24)更新边界粒子刚体
(25)每一个流体粒子
(26)
(27)
(28)
(29)

为了分析该算法,我们实现了打破大坝与障碍的实验。这个实验的设置如表所示1

我们比较各个步进方法自适应步进和常数方法在大坝打破障碍的场景。渲染结果如图5和时间统计数据表中列出2。从图5,流体仿真结果几乎不使用三种方法不同,而在表2,我们可以发现我们的方法获得的1.5和6.4倍加速比较全局自适应步进方法和步进方法不变,分别。此外,个人的平均百分比活性粒子步进方法是31%。

7所示。实现和结果

本文中的所有实验实现英特尔3.50 GHz CPU上4核。仿真算法(算法1,2,3)和表面重建38,39用c++语言实现和多线程技术。子弹是用来模拟刚性物体而OpenMP担任并行化。图像呈现与搅拌器。

实现动画fluid-rigid耦合效率和科学,我们设计一个fluid-rigid耦合的编程仿真方案如图6。我们首先刚性和流体粒子进行初始化配置。然后,我们做邻居搜索使用空间为每个粒子散列算法。接下来,流体的控制方程,刚性边界采样,和边界处理解决了前面部分所描述的。然后,总力和扭矩的计算和提供给子弹。后总力计算作用于粒子,粒子集成下次步骤使用异步更新计划中引入部分6

为了演示整个fluid-rigid耦合仿真系统的有效性,我们设计了一个场景的多个小广场成水。设置和统计数据如表所示3,实验结果显示在图中7。从图中可以看到,小方块落入水和溅水时旋转和倾斜。最后,小方块力平衡和漂浮在水面上。

我们意识到另一个fluid-rigid耦合实验显示在图8。图8(一个)结果在粒子视图图吗8 (b)是渲染的结果。设置和统计见表3。在这种情况下,水的破坏坝的雕塑撞倒并推动一些距离由于动能的水。雕塑是符合预期的运动证明fluid-rigid耦合系统的模拟和计算符合物理规律。

这个实验进一步证明了我们的方法可以实现高的动画仿真系统逼真生动fluid-rigid耦合效应。可以预期,这个动画系统可用于虚拟现实领域和特效在电影和游戏。

8。结论

我们提出了一个高效、简单rigid-fluid particle-based流体模拟的耦合方案。它与边界样本刚性表面粒子用于液体相互作用。它确保均匀分布的粒子,需要较少的迭代。此外,我们提出一个有效rigid-fluid耦合方法结合个人时间步进rigid-fluid耦合。邻居和只在需要时更新粒子的力量,而计算资源分配到复杂的地区。它获得一个明显的加速效果相比以前的方法。除此之外,这个方案是结合刚体耦合模拟和几个场景的视觉现实。总的来说,我们的方法是有效的计算同时采样和耦合算法可以应用于其他particle-based模拟或相关方法。未来的工作将该方法扩展到IISPH [7]或DFSPH [8)以及大规模的场景。

相互竞争的利益

作者宣称没有利益冲突。

确认

这项工作是由中国国家自然科学基金(号。61272357,61300074,61572075)。