ialm不精确增广拉格朗日乘数_拉格朗日视角(1):弹簧质点系统、SPH

本文为《GAMES201:高级物理引擎实战指南2020》的学习笔记,文中图片及公式主要来自于课程视频及课件。
本人非相关专业,很多地方都只是自己的理解,如有错误,请各位大佬多多指正。
GAMES201:高级物理引擎实战指南2020_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com
a8bcdfe454c446417e345921afc6d65f.png

一、拉格朗日视角与欧拉视角

对于基于物理的动画里的各种介质的模拟,可以从两种视角来观察介质,一个是拉格朗日视角,另一个是欧拉视角。

拉格朗日视角一般将介质视为粒子(或微小网格)的集合,粒子会随着介质一起移动,通过计算每个粒子的运动状态和受力情况来表现介质的变化。

欧拉视角则通常将介质占有的空间切分为一个个小网格,对每个小格子计算格子内介质的状态、输入输出情况,以及对其他的格子的影响。

0abe0dd056a178c79e3b9dc5848d2efe.png

上图中,左边为拉格朗日视角,右边为欧拉视角。这两种视角各有其优缺点,适用于不同的情形。

二、弹簧质点系统

3e8a2d269778287e416241f29628ec92.png

弹簧质点系统是一种简单但非常有用的模拟方法,可用于模拟布料、头发等弹性物体。常用公式有:

:弹性系数

:连接粒子
和粒子
的弹簧未受力时的长度

:粒子
的质量

:连接粒子
和粒子
的弹簧的弹力

(胡克定律)

即弹簧的弹力大小与弹簧的形变程度成正比,方向与形变方向相反

即粒子
所受的合力为与其连接的弹簧对其施加弹力的叠加

(牛顿第二定律) 其中
表示粒子
的加速度

三、时间积分

由于计算机计算的离散化的,也不可能使用无限小的间隔时间

来对系统进行更新,不同的积分方法对模拟的结果影响很大。

常用的积分方面有三种:

(1)前向欧拉方法(显式时间积分)

(2)半隐式欧拉方法(仍是显式)

(3)后向欧拉方法(隐式时间积分)

前两种方法很好理解,

的大小是影响模拟效果的关键因素。
越小,模拟越精确,但所需模拟次数也越多;
越大,模拟越粗糙,且容易发生爆炸。

一个标准的弹簧振子系统,其震荡周期

,为了在模拟时不发生爆炸,保持一定的模拟精确程度,
必须远小于
,因此:

对于隐式积分方法

这里

为一个对角矩阵,矩阵对角线上依次为各个粒子的质量。

为何这里是使用粒子质量

而不是单个粒子质量

这是因为

与所有与当前粒子相连粒子的质量及位置有关,其中的
也为所有粒子位置组成的高维向量,同时为了消元及同步计算,其余的
也均为高维向量表示。

消去

,得

进行一阶泰勒展开,移项,得

我们得到了形如

的表示。

直接求逆可解,即

,然而这里矩阵
的维度非常大,计算逆矩阵时计算量非常大,因此,常用雅克比迭代等方法来解

因此,隐式时间积分在一个时间间隔

内,会进行多次更新计算,实际上的更新间隔远小于
,而显式时间积分仅会进行一次计算。

综合前向欧拉方法和后向欧拉方法,在公式中加入参数,即:

(1)当

时,即为前向欧拉方法(显式)。

(2)当

时,即为后向欧拉方法(隐式)。

(3)当

时,即为中点法(隐式),在某些情况下可取得更好的模拟效果。

四、SPH:光滑粒子动力学

SPH方法将流体看作大量粒子的集合,使用粒子的运动来模拟流体的流动,根据某点周围粒子的数量来计算流体在该点的压强、流速、密度等属性,同时又使用这些信息来更新粒子的运动情况。

228b2c96b839cf7f364138d52c10ac77.png

场的计算方法为:

公式中,

可以为流体的密度、压强等属性;
为核函数,计算各个粒子的权重;

即根据周围粒子携带的信息来计算流体在某点压强、密度等属性。

WCSPH(Weakly Compressible SPH)方法为较常用的方法,核心公式为:

:密度

:bulk modulus (体积模数?)

:常数,通常约为7

表示单个粒子的加速度,
为压强的梯度。粒子受到各个方向的压力,但不同方向压力大小不同,粒子在压力和外力作用下加速。

当流体在四周压强的作用下被压缩,密度增大,同时流体也会产生反作用力。因此,某个截面的压强可由所在位置流体的密度直接计算得出。

计算场的梯度的公式为:

其中,

表示核函数在 位置
的梯度。

此公式和之前公式中的

可直接替换为
,从而计算压强及压强梯度。

综上所述,在每次迭代中,计算步骤为:

(1)对于每个粒子

,计算其密度
,使用密度
计算压强

即:

(2)对于每个粒子

,计算所在位置的压强梯度

即:

(3)使用压强梯度

计算每个粒子
的加速度,同时使用欧拉方法更新粒子速度和位置。即:
同样, 流体模拟的精度也不能过小,一般使用CFL数来衡量流体模拟的精度。

即:

:CFL数(Courant number)

:时间步长

:间隔长度,一般为粒子的半径或每个格子的大小

:速度的最大值

不同方法所使用的

不同,常用的有

SPH:约0.4

MPM:约0.3~1

FLIP fluid:1~5+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值