跳到主要内容

ParticleSource粒子发射器

ParticleSource​


haowei.han@mthreads.com

使用粒子作为流体的发射源,在流体视觉特效里是非常常用的制作方法, Catalyst FX 提供了基于 GPU 的 Particle Source 功能,可以将海量粒子作为流体发射源,给流场提供 密度(density),温度(temperature),速度(vel),燃料(fuel) 等常用属性。在 Houdini 的制作流程中,省去了需要使用 SOP 节点进行 Particle 转 Volume 的操作。

drawing

如图(上):使用 Catalyst FX GPU Particle Source 制作的火焰枪喷射的效果,制作流程为先使用 POP 粒子调整火焰喷射大形,然后将粒子作为燃料信息提供给 Catalyst FX 解算器,进行更加精细的燃烧过程模拟,生成最终的火焰喷射效果。

Catalyst FX GPU Particle Source vs Houdini SOP VolumeRasterizeAttributes​

相比传统 Houdini 自带的 SOP VolumeRasterizeAttributes 节点,Catalyst FX 使用GPU加速读取粒子数据进行采样发射,大大提高了计算效率。并且支持读取粒子半径属性,和Substep 中间帧插值等高级特性。

drawing

如图(上):分别是使用 Houdini 自带的 SOP VolumeRasterizeAttributes 节点,将粒子转为体积作为流体发射器输入(左),直接将粒子作为 Catalyst FX 的输入(中),和原始粒子数据(右)。可以发现二者的效果是接近的,并且 Catalyst FX GPU Particle Source 的采样结果相比输入的原始发射器模型具有更好的贴合度。

计算用时开销​

当前的案例一共有超过 200 万粒子的作为流体发射器的输入,以下是解算用时对比开销,在使用了 Catalyst FX GPU 粒子发射器后,整体的解算速度在当前案例中有接近 3 倍的性能提升。(GPU : MTT S4000)

方案解算用时开销 (120 帧)
Houdini SOP VolumeRasterizeAttributes88 s
Catalys FX GPU Particle Source32 s (x 2.75 倍)

Particle Source Example​

我们从一个最简单的案例开始,演示 GPU Particle Source 的使用流程。

drawing

如图(上):使用Houdini 的 POP 功能制作一个最简单的抛物线粒子喷射效果,粒子发射器朝着 45度夹角方向射出粒子以后,受重力影响下落至地面,并添加 Point Wrangle 节点给粒子添加 密度(density),温度(temperature),燃料(fuel),散度(divergence)等属性。这里为了方便观察,不需要发射太多数量的粒子。

drawing

如图(上):完成粒子输入设置后,在Catalyst Solver 流体解算器节点的 Sourcing 面板选则 InputGeoType 下拉菜单为 Particle 类型输入,让解算器切换到粒子发射器读取模式。再进行适当的参数调整,点击播放按钮,可以得到 Viewport 中呈现的粒子燃烧效果。

粒子半径设置​

在设置解算器 Soucing 参数面板下的 InputGeoType 下拉菜单为粒子(Particle)之后,参数右侧会出现 ParticleRadiusType 下拉菜单,用来设置粒子的半径大小,该参数一共有3种设置

名称说明默认值
Constant固定粒子半径大小数值,单位是世界坐标系单位0.2
Attribute读取粒子半径属性,默认会读取 pscale 属性pscale
VoxelSize固定粒子半径大小数值,单位是当前解算容器的单个体素边长。1.0

粒子半径属性读取​

drawing

选则 ParticleRadiusType 下拉菜单为 Attribute 选项。界面出现粒子半径属性读取的相关参数设置,这里基本上默认参数不做任何调整即可直接使用。其中 Default Radius 参数是在 Radius Property 属性获取失败的情况下起效。DefaultRadiusType 为该参数的单位。

drawing

如图(上):当前案例在给粒子设置了不同大小的 pscale 数值后的计算结果,可以发现 pscale (半径)数值更大的粒子,会产生更粗的燃烧拖尾。

drawing

如图(上):另一个案例,使用粒子年龄(age)属性作为粒子半径大小,粒子年龄越大半径则越大。

drawing

最后给一个章节图的动态,基本上只需要输入一个很简单的粒子喷射动态效果,流体解算器就可以计算出非常丰富的燃烧动态细节变化。