[Houdini] Pyro instancing
Pyro instancing是19.5新加入的pyro工作方式。這種方式需要把不同的pyro source打包,添加name屬性用來區(qū)分,最后合并在一起組成一個pyro source集,然后向pyro solver里添加的包含name屬性的點(diǎn)用來代表pyro source集里相應(yīng)的pyro source進(jìn)行模擬。
Pyro instancing工作方式的必要條件
要使用Pyro instancing工作方式,需要把Souce Type改成Packed Sets,在Source Library里指定pyro source 集(下圖)。然后在solver的第一個端口連入包含特定屬性的點(diǎn)代表不同的Pyro source。

pyro source集必須包含打包的pyro source和prim級別上的name屬性。
連入pyro solver的點(diǎn)必須包含name屬性,source_rules屬性。
制作pyro source集
將pyro source打包用pyro source pack節(jié)點(diǎn)。這個節(jié)點(diǎn)將volume打包,添加name屬性,設(shè)置source的類型(下圖)。最后把不同的volume source合并在一起就組成了一個pyro source集。

制作包含特定屬性的點(diǎn)。
制作點(diǎn)可以用pyro spawn sources節(jié)點(diǎn)和pyro source instance節(jié)點(diǎn)。pyro spawn sources節(jié)點(diǎn)給連入的點(diǎn)添加name屬性。pyro source instance節(jié)點(diǎn)左端連pyro spawn source生成的點(diǎn),右端連pyro source集,通過名字把在pyro soucre pack上設(shè)置的source_rules屬性傳遞給左端的點(diǎn)。

frame_offset屬性
這樣制作好兩個必要元素后,連接到pyro solver模擬會發(fā)現(xiàn)pyro source只持續(xù)了12幀,
這是因?yàn)榇虬膒yro source以片段的形式存在,默認(rèn)這個片段的長度是1-12幀(下圖),
可以把它想象成電影膠卷,在放映機(jī)里只有12幀可以播放。

pyro solver除了用點(diǎn)上name屬性來識別不同的pyro source片段,還用frame_offset屬性來決定引入pyro source的哪一幀。負(fù)設(shè)置片段如何播放的是pyro spawn sources節(jié)點(diǎn)(下圖),它可以設(shè)置播放起點(diǎn),播放結(jié)束點(diǎn),幀數(shù)偏移,播放速度,循環(huán)播放,這些信息傳遞到pyro source instance后,pyro source instance通過添加或者刪除點(diǎn),寫入frame_offset屬性,傳遞給pyro solver使用來達(dá)到不同的播放效果。比如到了pyro spawn source設(shè)置的結(jié)束幀,pyro source instance就會刪除這個點(diǎn),反應(yīng)在solver里就是這個pyro souce消失了。

Rule Overrides
除了寫入上面的幾種屬性,pyro spawn sources和pyro source instance還能修改在pyro source pack里設(shè)置的source_rules屬性(下圖)。?

