すあまの備忘録

誰得内容の自分のための非営利目的備忘録ブログ(筆者がわかっても内緒にしてください)

Pyro Clusterの設定

Houdini 18のSparse Solverが出てから活躍の場が減ってしまいましたが、

Pyro Clusterは各Cluster Pointで解像度を変えることができるので結構好きです。

ただし、コンテナの回転とかやらないといけないくらいリソースカツカツの場合はSparse Solverでいいかな。と思う。

Houini触りたての頃はCluster意味わかんないと思ってました。Shelfのやつ使い辛すぎるのでは?

今でも設定がややこしすぎてたまに忘れることがあるので最低限の設定をメモ

f:id:godofsuama:20200330235111g:plain
animation based

f:id:godofsuama:20200330234908g:plain
frame based

ネットワーク

f:id:godofsuama:20200820233057p:plain

仕組みの大部分は両方とも共通しているので使い分けも容易

Scene Fileはこちら(Houdini 18.0.391)

サンプルシーンでは、Switch_typeを0-1で切り替えることでモードが切り替わります。

animation based

Cluster Pointの作成

f:id:godofsuama:20200330230714g:plain

f:id:godofsuama:20200330230813p:plain

アニメーションしているものをPackして1ポイントにして操作しやすくし、

int型のemitアトリビュートを作成、そのアトリビュートにフレーム番号を入れる。 f:id:godofsuama:20200330231023p:plain

addでポイントだけにし、Trailで軌跡を取り出す。 f:id:godofsuama:20200330231123p:plain

ラインに変換する f:id:godofsuama:20200330231203p:plain

Timeshiftでアニメーションの最終フレームで固定し、Clusterを作成 f:id:godofsuama:20200330231425p:plain

Attribute Promoteで各Clusterごとにemitの最小値をPromoteする f:id:godofsuama:20200330231523p:plain

Extract Centreoidで各Clusterごとの中心を取り出す f:id:godofsuama:20200330231556p:plain

最初の位置にCluster Pointがない場合はTimeshiftで止めてMergeする f:id:godofsuama:20200330231758p:plain

emitアトリビュートでポイント番号をソートする f:id:godofsuama:20200330231839p:plain

ソートしたポイント番号をClusterにする f:id:godofsuama:20200330231919p:plain

Pyro Sourceの作成

そのままPyro Sourceを作成する f:id:godofsuama:20200330232540p:plain

その他必要なもの

Cluster Pointをemitとフレーム番号が同じ場合以外削除する

これにより、emitのアトリビュートの位置で自動でコンテナが作成される。

f:id:godofsuama:20200330232723p:plain

if(@emit!=@Frame) {
    removepoint(0,@ptnum);
}

クラスターコンテナの大きさ用アトリビュートを作成する f:id:godofsuama:20200330232851p:plain

クラスターコンテナの解像度アトリビュートを作成する

カメラからの距離などで値を決めるとより効率化が図れる f:id:godofsuama:20200330232930p:plain

BBOXも作る(ほぼいらない) f:id:godofsuama:20200330233043p:plain

DOP

Smoke Objectを画像のように設定 f:id:godofsuama:20200330233851p:plain f:id:godofsuama:20200330233946p:plain

Gas Fluid Resize DynamicはMaxを指定 f:id:godofsuama:20200330234042p:plain

Volume Sourceの画像の箇所を設定 f:id:godofsuama:20200330234133p:plain

frame based

Cluster Pointの作成

エミットしたいポイントにそれぞれ1ポイントずつ配置し、emitアトリビュートにエミットしたいフレーム番号をいれる f:id:godofsuama:20200330232101p:plain

emitアトリビュートでソートし、ソートしたポイント番号をClusterにする f:id:godofsuama:20200330232231p:plain

Pyro Sourceの作成

Cluster Pointをemitとフレーム番号が同じポイントにエミッターの元をCopyする f:id:godofsuama:20200330234429p:plain

Clusterごとにエミッターを作成し、作成されるField名をname_clusterにする

density_0みたいな感じ。 f:id:godofsuama:20200330234617p:plain

その他必要なもの

Cluster Pointをemitとフレーム番号が同じ場合以外削除する

これにより、emitのアトリビュートの位置で自動でコンテナが作成される。

f:id:godofsuama:20200330232723p:plain

if(@emit!=@Frame) {
    removepoint(0,@ptnum);
}

クラスターコンテナの大きさ用アトリビュートを作成する f:id:godofsuama:20200330232851p:plain

クラスターコンテナの解像度アトリビュートを作成する

カメラからの距離などで値を決めるとより効率化が図れる f:id:godofsuama:20200330232930p:plain

BBOXも作る(ほぼいらない) f:id:godofsuama:20200330233043p:plain

DOP

Smoke Objectを画像のように設定 f:id:godofsuama:20200330233851p:plain f:id:godofsuama:20200330233946p:plain

Gas Fluid Resize DynamicはMaxを指定 f:id:godofsuama:20200330234042p:plain

Volume Sourceの画像の箇所を設定

Auto DetectまたはONにする。 f:id:godofsuama:20200330234712p:plain