万方数据
万方数据
摘 要
近年来,基于物理的流体仿真技术受到了众多图形学研究者的关注,因为不 管是在电子游戏、电影视频还是虚拟现实等领域中,它都有着重要的研究与应用 价值。
实现一个准确、实时、基于物理的流体仿真器是这一领域的研究目标,但是 准确性与实时性往往难以同时满足。为了选择合适的实时流体仿真方法,本文首 先给出了一个使用基于网格的欧拉法进行烟仿真的实例,通过该实例说明欧拉法 不适合进行实时大规模流体仿真。因此本文采用 SPH 方法以及它的一些扩展在 GPU 上实现了一个实时流体仿真框架,并结合一个基于屏幕空间的渲染方法实 现了对三维水体、多相流等场景的实时模拟与渲染。
在利用 SPH 方法进行流体仿真时,采用 Tait 方程来满足流体的不可压缩性。 标准 SPH 方法存在拉伸不稳定性的问题,本文采用一种简单的密度修正办法来 解决这一问题。消除拉伸不稳定性后带来一个副作用是降低了粒子之间的内聚力, 从而使流体的表面张力现象消失了,因此在密度修正之后,我们引入一个人工张 力项来模拟表面张力现象。
对于边界处理,本文同时实现了基于惩罚力和在边界处采样虚拟粒子这两种 方法,并通过实验对比发现采样虚拟粒子的方法在碰撞检测以及碰撞响应方面均 要好于惩罚力。
对于多相流,本文采用经由数值密度修改过的 SPH 方法进行模拟。通过实 验发现,使用此方法模拟多相流时会出现某些地方聚集低密度粒子以至于这些低 密度粒子最终不会浮于高密度粒子表面的现象,本文通过引入一个人工浮力解决 了此问题。
本文采用一种基于屏幕空间的渲染方法来渲染最终的流体,该方法利用曲率 流的思想来平滑表面深度,然后根据平滑后的深度信息计算出表面法线。同时该 方法采用一个额外的 pass 来获得流体的厚度信息,以此作为流体着色的重要依 据。
关键词: 基于物理的流体仿真 光滑粒子动力学 多相流 屏幕空间渲染
ABSTRACT
The physically-based fluid simulation technology has attracted more and more attention from many graphics researchers during recent years. It has significant research and application value not only in computer games, feature films but also in virtual reality areas and so on.
To achieve an accurate, real-time and physically-based fluid simulator is the goal of this area. However, it is hard to satisfy the accuracy and the real-time simultaneously. To find a suitable real time fluid simulation method, we first give a sample of using an eulerian method to simulate gas, which illustrates that the eulerian method is not suitable for large-scale real time fluid simulation. So we adopt SPH methods and some of its extension to implement a real-time fluid simulation frame on GPU. Also, in combination with a screen space based rendering method, we accomplish the real time simulation and rendering of 3D water and multiphase flow.
When using SPH methods for fluid simulation, we use Tait equations to satisfy the incompressibility of fluid. There is tensile instability problem in standard SPH methods. We use a simple density correction method to solve this problem in this paper. However, on