基于位置的流体模拟控制方法及系统的制作方法

文档序号:9288829阅读:502来源:国知局
基于位置的流体模拟控制方法及系统的制作方法
【技术领域】
[0001] 本发明涉及的是一种计算机图形学领域的技术,具体是一种通过对流体粒子应用 三种非线性约束使得流体的模拟形态与快速变化的目标形态相匹配,同时又保持流体本身 的细节和物理特性的方法及系统。
【背景技术】
[0002] 流体模拟已经成为计算机图形学领域研究中越来越热门的话题,许多自然界的相 关现象诸如水、烟雾、火焰等等,皆与流体模拟息息相关。为此,业界人员提出了许多有效的 算法来模拟逼真的流体效果。
[0003] 目前,模拟流体效果的相关算法已经比较成熟,无论是基于网格的欧拉方法或是 基于粒子的拉格朗日方法,都可以比较准确的模拟流体效果。但是随着人机交互的不断发 展,人们对于流体模拟控制的要求越来越高。尤其是在计算机动画领域,控制流体模拟变形 为用户设定的目标形态的需求越来越多。
[0004] 经过对现有技术的检索发现,中国专利文献号CN102402791A,公开日2012 -04 -04 提供了一种"基于GHJ的三维流体模拟"。该方法提出了一种基于GPU的三维流体模拟方法, 主要包括:1)采集三维流体的数据信息;2) CPU对获得的三维流体的数据信息进行预处理, 之后采用GPU对获得的预处理结果进行流体模拟,从而获得加速后的流体模拟的结果;3) 将所获得的模拟结果进行渲染,获得渲染后的三维流体的最终效果。该技术利用了 GPU进 行并行加速,并可以达到实时的模拟效果。但是该方法仅采用了基本的Smoothed particle hydrodynamics (SPH)流体模拟方法,无法在模拟过程中控制流体的形态。
[0005] 中国专利文献号0附03714575六公开(公告)日2014.04.09,公开了一种3?!1与动 态表面网格相结合的流体模拟方法。该方法使用追踪粒子对流体表面进行采样,之后将表 面追踪粒子转化成三角网格,并在模拟过程中自动处理网格的拓扑变化,保持三角形网格 的质量。该方法解决了传统SPH流体模拟不易展现流体细节的问题。但是该方法同样只能 模拟流体自然情况下的状态,无法在模拟过程中控制流体的形状和运动路径,使流体形成 用户期望的状态。
[0006] A. Treuille 和 A. McNamara 等人在《SIGGRAPH》上发表的《Keyframe Control of Smoke Simulations》(2003年)中提出了一种基于关键帧的流体控制方法。该方法利用一 个类似于风力的外力来驱动整个流体的形态变化,使之与用户设定的关键帧形态相匹配。 该方法可以有效地控制基于欧拉方法的流体模拟,但是由于方法中的风力计算涉及最优化 方程的求解,使得整个算法的计算非常耗时,只能适用于小规模或者二维流体模拟的控制。
[0007] 为了解决控制算法耗费大量计算资源和时间的问题,N. Thiirey和R. Keiser等人 在《Graphical Models》上发表的《Detail - Preserving Fluid Control》(2〇〇9 年)中提 出了一种对基于拉格朗日流体模拟框架的控制方法。该方法利用吸引力来驱使流体达到目 标形状,同时利用速度力来控制流体的流动速度,为了避免人工引入的控制力破坏流体的 细节特性,该方法将整个流体速度场分解成高频和低频两部分,并将控制力只作用到低频 部分,这样使得流体细节在一定程度上被保留下来。该方法在一定程度上解决了基于欧拉 流体模拟控制方法中耗时耗资源的问题,但是由于引入的控制力是线性的,与流体物理方 程的非线性特征不一致,无法施加较大控制力,否则会造成流体模拟的不稳定,因此该方法 不能控制流体跟踪和匹配快速移动的目标。

【发明内容】

[0008] 本发明针对现有技术存在的上述不足,提出了一种基于位置的流体模拟控制方法 及系统,本方法基于拉格朗日流体模拟框架,通过对流体粒子应用三种非线性约束来使得 流体的模拟形态与快速变化的目标形态相匹配,同时保持流体细节和物理特性。另外,本发 明采用基于位置物理模拟框架,允许使用任意大的时间步长,因此可以实现实时的流体模 拟与控制。
[0009] 本发明是通过以下技术方案实现的:
[0010] 本发明涉及一种基于位置的流体模拟控制方法,采用基于流体密度的约束力驱动 流体匹配物体形态;同时通过添加弹性约束力,将流体粒子紧紧贴合匹配物体的形态,使得 整个流体的模拟过程不会因为匹配物体的快速形变或者移动而产生粒子无法跟随匹配的 情况。
[0011] 本发明具体包括以下步骤:
[0012] 步骤一,用户自行设置控制流体的目标形状3D模型,同时设置用于表示目标形状 运动的 Biovision hierarchical data(BVH)文件。
[0013] 步骤二,对用户设置的目标物体模型进行体素化得到控制粒子位置;用户设定对 物体进行形变的控制点位置;计算控制点对体素点的影响权重,具体为:
[0014] 2. 1)对目标物体模型进行三角网格细分;然后采用均分三角形算法对细分后的 物体模型进行体素化,即落在体素化网格之内的顶点即为该体素化网格的控制粒子位置。
[0015] 当有多个顶点落在同一个体素化网格之内,将这些顶点的位置求平均值来作为控 制粒子的位置。对所有顶点进行这样的操作,从而得到整个物体模型对应的流体控制粒子。
[0016] 所述的三角网格细分是指:当一个三角网格的边长大于一个体素化网格时,将该 三角网格分成两个更小的三角网格。
[0017] 所述的三角网格是指:目标物体模型本身的三角面片。
[0018] 所述的体素化网格是指:将物体所在的三维空间平均划分而得到的若干单位立方 体。
[0019] 所述的流体控制粒子是指:用于控制流体粒子运动的粒子。
[0020] 2. 2)在体素化后的结果上手动设置控制点的位置,并计算控制点对体素点的归一 化后的影响权重信息。具体为:
[0021 ] 2. 2. 1)手动设直控制点的彳λα直。
[0022] 2. 2. 2)通过Djikstra算法计算每个体素 j和对应的控制点i之间的最短距离为 d) ;. 1 ,
[0023] 2. 2. 3)计算每个控制点i对体素点j的权重影响,A = (mypyngfr,其 中:Ct是用于控制形变平滑程度的参数。 wlJ
[0024] 2. 2. 4)对%进行归一化处理得到归一化之后的权重,M k
[0025] 步骤三,使用步骤一设置的BVH文件以及步骤二得到的归一化后的影响权重,对 当前时间步的控制粒子的位置进行更新,然后通过控制粒子对流体粒子施加约束力,驱动 流体粒子形成目标形状,具体为:
[0026] 3. 1)对流体粒子应用密度约束,得到流体粒子在密度约束下的位置变化量,具体 为:
[0027] 3. I. 1)计算每个控制粒子i周围流体粒子的密度,A 其中: J Pi表示第i个控制粒子的位置,P _j表示第j个流体粒子的位置,m 表示第j个流体粒子的 质量,H表示控制粒子的支持半径,W为SPH方法中Ploy6平滑函数。
[0028] 每个控制粒子i的密度约束定义为:…,仏)=#-1,其中:0表示流体 Po " 粒子未受控制情况下的密度值。
[0029] 3. 1. 2)计算控制粒子i的密度约束强度
其中 ε用于防止除零情况发生,Ci表示约束C i对位置p ^求梯度。
[0030] 3. 1. 3)计算每个流体粒子i在密度约束下的位置变化量, 丑〉,其中:▽妒为函数W对位置?]求梯度。
[0031] 通过上述密度约束的位置更新,每个控制粒子会自动维持其周围流体粒子的密 度,当周围的流体粒子密度过小时,控制粒子对周围流体粒子产生吸引作用,增大其周围的 流体密度;相反,则对周围流体粒子产生排斥作用,减小其周围的流体密度。
[0032] 3. 2)当目标物体运动或形变较快时,单纯密度约束会使得流体粒子远离了控制粒 子的控制范围,使得控制方法失效。为了处理这种情况,在流体粒子和控制粒子之间添加一 种弹性约束,使流体粒子在距离控制粒子较远时,弹性约束会将流体粒子重新拉回控制粒 子位置,进而保证流体始终处于控制范围内。具体为:
[0033] 3. 2. 1)对每一个流体粒子寻找离其最近的控制粒子,并在他们之间添加一个弹 簧。
[0034] 3. 2. 2)设置弹簧的生命为时间t,它的值会随模拟不断减小,当其减少到0时,将 该弹簧销毁。
[0035] 3. 2. 3)若弹簧生命t不为0,则计算该流体粒子i在弹性约束下位置的变化 量,A其中:函数f为机器学习中的常用的逻辑回归函数: /(.〇 = ·其中a,b为控制函数形状的调节参数,e为自然常数。 .1 + e
[0036] 根据f函数的特性,本步骤所使用的弹性约束仅当流体粒子与流体控制粒子之间 的距离较大时产生作用,若流体粒子处在控制粒子的较近范围内,弹性约束非常小,不会破 坏流体的细节特性。
[0037] 3. 3)对每个流体粒子i应用速度约束,得到每个流体粒子在速度约束下的位置的 变化量,以实现对流体的速度控制,具体为:
[0038] 3. 3. 1)对每个流体粒子i,计算它周围控制粒子的平均速度,
其中A表示第j个控制粒子的速度。
[0039] 3. 3. 2)计算流体粒子i在速度约束下的位置变化量,△/^_ =叫屯-Vi),其中: A t表示模拟的时间步长,V1表示第i个流体粒子的速度。
[0040] 3. 4)计算每个流体粒子i的在3个控制约束下总的位置变化量,并将流体粒子移 至新位置,P1 = P 4 Δ PldOTSlty+Λ P广Λ P1V^'从而完成当前时间步内的流体模拟的所 有计算,之后进入下一时间步的循环,重复执行上述步骤三。
[0041] 步骤四,当模拟时间满足一定条件或模拟状态满足一定条件时,整个流体控制过 程结束。
[0042] 本发明涉及一种实现上述方法的系统,包括:流体控制粒子生成模块、控制点影响 权重计算模块、密度约束模块、弹性约束模块和速度约束模块,
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1