[Houdini] Pyro instancing
Pyro instancing是19.5新加入的pyro工作方式。这种方式需要把不同的pyro source打包,添加name属性用来区分,最后合并在一起组成一个pyro source集,然后向pyro solver里添加的包含name属性的点用来代表pyro source集里相应的pyro source进行模拟。
Pyro instancing工作方式的必要条件
要使用Pyro instancing工作方式,需要把Souce Type改成Packed Sets,在Source Library里指定pyro source 集(下图)。然后在solver的第一个端口连入包含特定属性的点代表不同的Pyro source。

pyro source集必须包含打包的pyro source和prim级别上的name属性。
连入pyro solver的点必须包含name属性,source_rules属性。
制作pyro source集
将pyro source打包用pyro source pack节点。这个节点将volume打包,添加name属性,设置source的类型(下图)。最后把不同的volume source合并在一起就组成了一个pyro source集。

制作包含特定属性的点。
制作点可以用pyro spawn sources节点和pyro source instance节点。pyro spawn sources节点给连入的点添加name属性。pyro source instance节点左端连pyro spawn source生成的点,右端连pyro source集,通过名字把在pyro soucre pack上设置的source_rules属性传递给左端的点。

frame_offset属性
这样制作好两个必要元素后,连接到pyro solver模拟会发现pyro source只持续了12帧,
这是因为打包的pyro source以片段的形式存在,默认这个片段的长度是1-12帧(下图),
可以把它想象成电影胶卷,在放映机里只有12帧可以播放。

pyro solver除了用点上name属性来识别不同的pyro source片段,还用frame_offset属性来决定引入pyro source的哪一帧。负设置片段如何播放的是pyro spawn sources节点(下图),它可以设置播放起点,播放结束点,帧数偏移,播放速度,循环播放,这些信息传递到pyro source instance后,pyro source instance通过添加或者删除点,写入frame_offset属性,传递给pyro solver使用来达到不同的播放效果。比如到了pyro spawn source设置的结束帧,pyro source instance就会删除这个点,反应在solver里就是这个pyro souce消失了。

Rule Overrides
除了写入上面的几种属性,pyro spawn sources和pyro source instance还能修改在pyro source pack里设置的source_rules属性(下图)。

