Fluid Simulation–Driven Effects in Dark Void

http://www.microsoft.com/downloads/details.aspx?familyid=707038c1-f5d6-4b18-8659-cba0795effe6&displaylang=en

 

gamefest2010的一篇文章。

主要是讲fluid simulation驱动的一些东西,这里不只是液体了,更多的是smoke,叶子等这些数量更少离散度更高的东西,有理论有engineering,赞。

 


 

simulation部分随着多核和做通用计算的gpu的发展越来越进入研究热点。

而且rendering的确走的是比较快,渲染的真实度已经很高了,但是东西一动起来就感觉不是那么好,资源向这块倾斜可以解决短板,很不错。

 

 


 

开篇讲了历史,2003年fluid simulation算法已经比较到位,但是硬件实在不行,小打小闹的弄一点实在没意思。

 

然后列了下有fuild simulation驱动的烟的游戏:

  • hellgate 
  • batman
  • stalker
  • cryostasis----这个孤陋寡闻了,没听过,用的physx fuild simulation,就上它的图吧,效果还是挺好的呃:

 

 


 

fluid simulation数学基础是Navier Stokes Equation,细节wikipedia看吧

http://en.wikipedia.org/wiki/Navier%E2%80%93Stokes_equations

通篇的数学很华丽,看过之后就觉得engineer真的也就是魔法师(数学家)那里要个魔法药水到处耍的小屁孩。

NavierStokesEquation可以描述水体气流之外还能描述银河系的恒星分布,可以帮助建设power station, 研究污染,还能研究磁力。。。

崇拜,仰慕。

这个公式基于牛顿第二定律,主要是动量守恒部分,

简单来讲就是描述了速度对时间的偏导与压强(p),水的弹力(T),外力(f)之间的关系,之后就是可以互相推导了。

 

落实到gamedev的engineering部分,老规矩,离散化----particle based or grid based。

各有利弊,但是总体来讲grid base更好一些,毕竟这样是更加稳定可控的离散化的一种方式,比起完全看情况的particle是要好多了。

 

grid base要做的事情基本如下:

1, flexible grid : 不可能全场景去建立grid然后simulate,performance不允许。

但是一个有限大小的static grid又不对。

所以就弄个可以移动的grid,grid内部的smoke就fluid simulate,出去了就自生自灭。

 

2,建立“力场”,就是在grid上分布的力。

每个grid有个力的数值,所有grid的力的分布情况有几种描述,包括

  • Basic semi-Lagrangian advection
  • MacCormack scheme

lagrangian效果还可以,但是明显maccormack的那个更好,而且更适合并行计算。

更新每个grid的立场分布就靠他们了。

 

3,更新速度:依据力场更新速度:

v = v - delta(p);p是统一到一起的力。

 

4,加上外力和阻挡物,就可以做出turbulence:

 


接下来是render engineering部分,particle的dynamicbuffer,instancing,gpu translucency sort,volume lighting。

效果的确赞啊。

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机图形学中的流体模拟是一种模拟真实世界中液体动力学行为的技术。它通过数值方法和物理方程来模拟流体的运动、变形和相互作用。 流体模拟在许多应用领域中都发挥着重要的作用。在电影和游戏产业中,流体模拟被用来创建逼真的水、火和烟雾效果。它能够增强场景的真实感,并提供令人惊叹的视觉效果。此外,流体模拟还被用于汽车和航空工业中的气动研究,以及医学领域中的血流模拟和生物物理学研究等。 流体模拟的核心是流体动力学方程,包括连续性方程、动量方程和能量方程。通过对这些方程进行数值离散化和求解,可以计算出流体的速度、压力和温度等属性。为了增强模拟的真实感,还可以考虑其他因素,如表面张力、湍流和粘性等。 通常,流体模拟可以分为基于网格的方法和基于粒子的方法。基于网格的方法将计算域划分为规则的网格单元,并在网格上进行物理参数的计算和插值。而基于粒子的方法则将流体表示为一组粒子,并使用粒子之间的相互作用来模拟流体行为。 流体模拟的挑战在于计算复杂度和计算资源的需求。流体模拟涉及大量的计算和存储,并且需要高性能的计算设备来实时生成流体效果。此外,流体模拟还需要考虑数值稳定性和精确性,以确保模拟的准确性和可靠性。 总之,流体模拟是计算机图形学中一个重要且具有挑战性的研究领域。它不仅为电影、游戏和工业等领域提供了令人惊叹的视觉效果,还推动了流体力学和计算机图形学的交叉发展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值