使用粒子法模拟水流时,水流表面的生成主要分成如下两部分。
表面隐函数
- Muller的色彩函数 [1]
- Zhu and Bridson的方法 [2]
- Adams等的方法 [3]
- Anisotropic Kernel [4]
- Upsampling法 [5]
生成网格(Mesh)
- Marching Cubes(MC) [6]
- Regularised marching tetrahedra(RMT) [7]
- Screen Space Mesh [8], [9]
本篇先介绍 表面隐函数 中的Anisotropic kernel法。
各向异性内核函数(Anisotropic kernel)
从粒子中生成隐函数的时候,使用下式这样的平滑化内核函数。
其中,是换算系数,是模拟的次元数, 是local support(距离变远时值平滑减小)的对称函数。 这个定义类似于所谓的元球技术(Metaball), 生成的表面呈凹凸不平状(下图左)。像这样的表面我们称为blobby面。
为了改进blobby的表面形状,Yu等人[10] 导入了各向异性内核(anisotropic kernel)来取代之前的各向同性内核。 也就是,使用正定矩阵来代替,
此时,矩阵中包含了旋转和伸缩变换,并且使用椭圆来取代球形状。通过把法线方向设定成椭圆短轴所在的方向,可以得到下图右侧这样平滑且边缘清晰的表面。另外,为了消除靠近表面粒子的不规则分布,也将粒子位置的关联函数进行平滑化处理,计算更新后位置。对于全部的流体粒子,通过计算和我们可以得到下式这样的隐函数场。
|
(左) 各向同性内核,(右)各向异性内核的表面 |