[测试记录用,非技术分享文]UE4-Plugin-Shallow Water

[测试记录用,非技术分享文]Asher说搞个shallow water作为测试题,这就来研究一下。未知结果如何(可能连效果都实现不出来.. but,always do it..)看了下项目架构,好像内容并不算太多,无可演示的效果,so..造轮子?没上cpp,有个别蓝图..hlsl不少,盲猜是搞算法为主..先看SPH文件夹吧(量体较少,maybe比较简单容易入手)(BasicSPHSystem内只有SPHEmitter一个发射器)找个SPH的算法https://b...
摘要由CSDN通过智能技术生成

[测试记录用,非技术分享文]

Asher说搞个shallow water作为测试题,这就来研究一下。未知结果如何(可能连效果都实现不出来.. but,always do it..)

 

看了下项目架构,好像内容并不算太多,无可演示的效果,so..造轮子?

没上cpp,有个别蓝图..hlsl不少,盲猜是搞算法为主..

 

先看SPH文件夹吧(量体较少,maybe比较简单容易入手)

(BasicSPHSystem内只有SPHEmitter一个发射器)

找个SPH的算法 https://blog.csdn.net/liuyunduo/article/details/84098884

分别是重力,压力梯度(高往低,哈密顿算子∇),粘度*粒子之间速度差

展开一下,得到对应每个粒子(ri点)的加速度(影响流体运动的计算方法):

然后考虑光滑核函数W + 考虑各点受力不均匀(用算术平均值) 的情况,展开得:

步骤应该是:

1.计算密度

2.计算压力

3.计算加速度

4.计算表面张力影响的加速度变化

5.计算粒子位置

6.渲染

 

-------------------------------------------------------------------------备注块start

备注部分知识点:

1.在流体模拟中,常用假设:流体是不可压缩的。表明流速场是无散的。也就是流体并不收缩或者扩散,在每一点处流入速率率等于流出速率。

但注意SPH算法方法违反了此项假设。因此SPH模拟的流体会表现出现实中很少见到的流体的“弹性”。(盲猜对比Asher那只史莱姆)

缓解办法:通过增大下方第4点中的k还有γ,使得流体坚硬。但需要更短的模拟时间步长(估计在这步上需考虑性能瓶颈了)

对于这个压缩性问题,并需要模拟复杂细节飞溅效果时,已有“预估纠正方法”来解决,拓展部分,书本没描述。但提供了参考文献名字。

2.纳维-斯托克斯方程。目前研究加速度场,故用单位为 每单位体积的质量的密度场来代替质量,用单位为 每单位体积上的力的力密度场来代替力。

3.密度、黏度、运动黏度(黏度系数/密度)数值参照表

4. 关于压强梯度部分的书本描述《基于物理的建模与动画》

 

图中14.6公式比计算所用的公式更为准确,记录,以备一用。

5.对于速度差(液体扩散),根据动量 ρu (密度&速度向量)的拉普拉斯项(二阶偏导)拆分化简可得。

6.对于表面张力,通过创造有限支撑区域(也就是ri离点r的距离)的颜色场,有粒子的位置值为1、之外的位置为0,可以得到光滑变化的颜色场c(x)。

因为场临近表面的地方很大,在其他地方几乎为零(也就是表面内外与表面边界的值区别很大)。

所以通过对矢量S进行阈值处理就可以定位流体表面。(轮廓检测)

因为表面场从无流体区域指向有流体区域,所以对负梯度归一化可以得到表面法线场

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值