液体与布料交互现象模拟方法技术

技术编号:28782844 阅读:29 留言:0更新日期:2021-06-09 11:16
本发明专利技术公开了液体与布料交互现象模拟方法,通过分析目前针对液体与布料交互现象模拟方法的不足,提出了一种基于LBM的液体与布料交互现象的模拟方法,将整个交互过程简化为四个步骤:碰撞检测、吸收、扩散与滴落。利用LBM的D3Q27模型进行布料的邻居模型建模,能更快的获取到邻居顶点,且通过将液体向布料的邻居顶点扩散来真实的模拟出交互效果。该方法能模拟出液体与不同布料的交互效果,对于不同布料具有适用性,并且使用CUDA实现进一步提高了模拟效率,实现实时模拟,为计算机图形学领域的相关研究提供了仿真支持。关研究提供了仿真支持。关研究提供了仿真支持。

【技术实现步骤摘要】
液体与布料交互现象模拟方法


[0001]本专利技术属于计算机图形学领域,涉及固液交互的仿真模拟,具体为液体与布料交互现象的模拟方法。

技术介绍

[0002]固液交互是现实生活中经常发生的物理现象,对其进行仿真可以应用于计算机辅助设计领域之中,如进行水利工程设计、航天航空飞行器设计等等。具体到对液体与布料交互现象的模拟,它则不仅可以在游戏场景、动漫和电影中用于增强人物外观,提高人们的游戏体验或观影体验,还可以应用于布料印染制造时的印染模拟实验,以减少成本浪费,提高效率。因此,如何在保证液体与布料交互模拟足够真实的前提下提高交互速度,使其能达到实时渲染的效果,一直是计算机图形学领域的研究热点。
[0003]在液体与布料的交互模拟这一研究主题中,模拟方法主要分为两种:一种是液体与布料都采用拉氏方法模拟,由于该方法统一对固体顶点与液体粒子进行处理,因此无需单独进行边界处理,但是在碰撞检测时需要准确找到与布料网格发生碰撞的所有液体粒子,才能更好的模拟出真实的效果;另一种则是采用欧式方法模拟液体、拉氏方法模拟固体,再单独对边界条件进行处理,由于欧式方法将整个液体场景划分为网格,因此更容易进行碰撞检测。Harada T等人基于SPH方法来实现固液耦合的实时仿真,他们将空间划分为大小基本一致的液体网格与布料网格,用于快速的寻找与液体粒子邻近的布料网格,并利用液体粒子与布料的近似距离来计算相互作用力,避免了准确计算固液相互作用力所需的代价,并在gpu上进行仿真,提高了仿真效率,但是当布料网格变形较大时无法搜索到所有与布料网格碰撞的液体粒子,会导致误差增大,有损模拟的真实感。而Raymond等人虽然能非常真实的对交互效果进行模拟,但是由于需要十分精细的网格,因此在进行压力、速度等物理量的求解时需要消耗很多的计算资源,在对液体滴落在布料上的效果的模拟中,一个时间步内便需耗时18.73s,而Lenaerts等人在模拟浸湿的布料滴落液体的效果时每帧耗时更是高达1.5分钟。
[0004]为了提高液体与布料交互的模拟速度并能兼容不同布料的物理特性,有必要对液体与布料的交互现象进行探索与研究,并提高算法对于不同布料的适用性,增强扩散模拟的真实感。基于这一目标,本专利技术提出了一种基于LBM的液体与布料交互现象的模拟方法。

技术实现思路

[0005]本专利技术包含两个部分:
[0006]第一项
技术实现思路
是提出三维布料几何模型。将应用于薄面片的质点弹簧模型从二维扩展至三维以适应有厚度的布料模拟,并通过对弹性约束的扩展从而真实的模拟出具有厚度的布料的运动细节。
[0007]第二项
技术实现思路
是基于第一项
技术实现思路
提出基于LBM的液体在布料中扩散的算法。该算法将液体与布料的交互分为四个步骤,即碰撞检测、吸收、扩散与滴落。在碰撞检测
阶段,使用连续碰撞检测技术来检测液体与布料之间的碰撞结果,并对液体与布料之间双向的相互作用力进行处理,即碰撞时布料会对流体粒子产生反作用力,反之亦然,因此可以防止液体粒子直接穿透布料。在扩散阶段,将饱和度的差异整合到液体在布料内部扩散的算法之中,这也与达西定律一致,即多孔介质中流体的扩散速度与孔隙压力梯度成正比,在提高扩散模拟的真实感的同时也提高了算法对于不同布料的适用性。此外,还利用了GPU强大的并行计算能力,大大提高了仿真的速度。在利用该算法实现液体与布料的交互模拟中,通过修改布料的物理参数可以得到同一种液体在不同布料中的不同扩散效果。
[0008]本专利技术针对液体与布料交互现象的模拟方法,其特征在于:主要包括三维布料几何模型和基于LBM的液体在布料中的扩散算法两个模块。三维布料几何模型是对布料的几何模型进行构建,可以适用于任意厚度布料的几何模型构建,并通过数值求解得到真实的布料运动状态。
[0009]基于LBM的液体在布料中的扩散算法则是本专利技术的核心内容,它是对整个交互流程的算法设计,根据现实生活中液体与布料的交互过程,将算法分为碰撞检测、吸收、扩散于滴落四个部分,并且符合达西定律中流体速度与孔隙压力梯度成正比的规律。该算法将布料的物理参数整合到扩散方程之中,从而可以对不同材质的布料的扩散效果进行模拟,提高了算法的适用性。整个交互流程最终都在Windows系统上使用OpenGL进行仿真模拟,能获得真实的交互效果,并且可以进行实时模拟。
[0010]本专利技术方法的具体流程如附图3所示,具体步骤如下:
[0011]步骤1:构建三维布料几何模型,初始化布料的物理参数并将布料顶点的受力应用到每一个时间步中来更新布料的运动状态,得到下一时刻布料顶点的位置信息数据。
[0012]步骤2:初始化液体粒子的相关物理信息,利用PBF方法更新液体粒子的位置、速度等信息,并使用CUDA进行并行处理提高计算效率,得到更新后的液体粒子的位置数据。
[0013]步骤3:将步骤1与步骤2的结果数据作为新的输入,利用连续碰撞检测算法判断液体粒子是否与布料顶点发生碰撞,若没有发生碰撞,则继续采用步骤2的方式对液体粒子进行下一时刻的模拟,若发生了碰撞则记录该液体粒子与布料顶点的数据。最后将所有发生了碰撞的液体粒子与其对应的布料顶点信息作为步骤4的输入。
[0014]步骤4:将步骤3的结果数据作为新的输入,计算液体对布料的冲击力,并将相互作用力分别应用到这两种介质中。布料顶点吸收该液体粒子,更新布料顶点的饱和度以及该液体粒子剩下的体积。将整个布料的饱和度信息作为步骤5的输入。
[0015]步骤5:将步骤4的结果数据作为新的输入,利用LBM的D3Q27邻居模型获取布料顶点的邻居,根据达西定律计算布料顶点在饱和度差异以及重力的双重作用下向其邻居顶点扩散出去的液体的体积分数,更新每个布料顶点扩散后的饱和度并将其作为步骤6的输入。
[0016]步骤6:将步骤5的结果数据作为新的输入,若扩散后的布料顶点饱和度大于设置的饱和度阈值,则该过饱和的布料顶点产生滴落效果,即将吸收的超过了阈值的液体体积全部滴落。利用OpenGL对整个场景进行渲染并重复步骤1至步骤6进行下一轮迭代。
[0017]本专利技术能模拟有厚度的布料,并对不同类型的布料具有适应性,可以对液体与不同布料的交互效果进行真实性模拟,且能达到实时性的要求,能为相关领域的仿真提供支持。
附图说明
[0018]图1是本专利技术的整体结构示意图。
[0019]图2是本专利技术应用了三维布料几何模型的布料模拟流程示意图。
[0020]图3是本专利技术液体与布料交互模拟的流程示意图。
具体实施方式
[0021]以下将结合附图所示的具体实施方式对本专利技术进行详细描述。
[0022]本专利技术的整体结构示意图如图1所示,包括:
[0023]根据用户自定义的布料物理属性来构建三维几何模型,利用扩展的质点弹簧模型来生成三种弹性约束,再使用连续碰撞检测防止液体粒子的泄漏,并用提出的基于LBM的扩散算法来模拟扩散过程,最后使用OpenGL进行仿真,从而对液体与布料的交互进行实时性模拟。
[0024]步骤1.确本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.根据权利要求1所述的液体与布料交互现象模拟方法,其特征在于:该方法包括如下步骤,步骤1:构建三维布料几何模型,初始化布料的物理参数并将布料顶点的受力应用到每一个时间步中来更新布料的运动状态,得到下一时刻布料顶点的位置信息数据;步骤2:初始化液体粒子的相关物理信息,利用PBF方法更新液体粒子的位置、速度信息,并使用CUDA进行并行处理提高计算效率,得到更新后的液体粒子的位置数据;步骤3:将步骤1与步骤2的结果数据作为新的输入,利用连续碰撞检测算法判断液体粒子是否与布料顶点发生碰撞,若没有发生碰撞,则继续采用步骤2的方式对液体粒子进行下一时刻的模拟,若发生了碰撞则记录该液体粒子与布料顶点的数据;最后将所有发生碰撞的液体粒子与其对应的布料顶点信息作为步骤4的输入;步骤4:将步骤3的结果数据作为新的输入,计算液体对布料的冲击力,并将相互作用力分别应用到这两种介质中;布料顶点吸收该液体粒子,更新布料顶点的饱和度以及该液体粒子剩下的体积;将整个布料的饱和度信息作为步骤5的输入;步骤5:将步骤4的结果数据作为新的输入,利用LBM的D3Q27邻居模型获取布料顶点的邻居,根据达西定律计算布料顶点在饱和度差异以及重力的双重作用下向其邻居顶点扩散出去的液体的体积分数,更新每个布料顶点扩散后的饱和度并将其作为步骤6的输入;步骤6:将步骤5的结果数据作为新的输入,若扩散后的布料顶点饱和度...

【专利技术属性】
技术研发人员:杜金莲杨甜金雪云苏航
申请(专利权)人:北京工业大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1