2021/01/24 age Fieldを追記
きのこを殺す手段のメモ。よく忘れる。知ってる範囲で。
星がついてるが自分のためのメモなので当てにしないこと。
そもそも、DOPでいろいろする前にエミッターの部分を詰めるほうを優先すべき。
あとはDOP内ですぐにForceをかけない。まず大きな動きがイメージ通り行くように調整すべき。
- 何もしていない状態
- Speed Field
- Pressure Field
- Temperature Field
- Gradient & vel Field
- age Field
- Air Field
- Scatter Point
- Vorticle Force
- Particle to Field
- メモ
何もしていない状態
Speed Field
きのこ殺せる:★☆☆ 手軽さ:★★★ 汎用性:★★★ 処理の軽さ:★★★
速度の速い(遅い)部分にForceをかける方法
作り方(H18以前)
作り方(H18以後)
Houdini 18.5以降かつ、Sparse Solverであればデフォルトでチェックボックスが用意されている。
使い方
これをそのままTurbulanceなどのControl Settingsに設定する。
Pressure Field
きのこ殺せる:★★☆ 手軽さ:★★★ 汎用性:★☆☆ 処理の軽さ:★★★
圧力が高い部分にForceをかける。そのままではあんまり良い結果は産まないイメージ
例のWrangle部分でClampしているが好きな処理にすること。
あとGas Blurでちょっとブラーをかけて広げるのが良いと思う。
速いきのこ部分はPressureが高くなる傾向があるので、かなり強めにForceをかけるといい感じにきのこが分裂して形が崩れる。
作り方
使い方
Temperature Field
きのこ殺せる:★☆☆ 手軽さ:★★★ 汎用性:★★☆ 処理の軽さ:★★★
若干制御が難しいのであまりつかった覚えはない。Coolling Rateなどと合わせてうまく調整する感じ。
画像を見ればわかるがこれだけではきのこは殺せない。
作り方
使い方
温度が高い(低い)部分で分けて調整すると良さげ。
Gradient & vel Field
きのこ殺せる:★★★ 手軽さ:★★★ 汎用性:★★★ 処理の軽さ:★★★
汎用性も効果も高め。DensityのNormalとvelから計算する。
両方の向きが一致している場合は1になるように処理している。
処理も軽くていい。TurbulenceよりかはDisturbanceに使うときのこに細かいディテールが乗っていい。
何故かたまにエラーで使えなくなることがある…
作り方
使い方
age Field
きのこ殺せる:☆☆☆ 手軽さ:★☆☆ 汎用性:★☆☆ 処理の軽さ:★☆☆
きのこを殺すようではない…
ageの値がビューでは非常に確認しづらいのが玉に瑕
もとはODFORCEのこの記事かなと思う。もとの処理を考えてくれた方に感謝!
DOP Pyro Age Field? - Effects - od|forum
ただ、組むのが大変なので、ShoheiOkazakiさんのNagamochiに入ってるnmGasAgeを使うことが多い。
GitHub - ShoheiOkazaki/Nagamochi: Houdini Tools
どちらもSparse Solverだとそのままでは動かないと思う。
下記画像は非常に分かりづらいが、age1前後にのみ(中間くらいの高さ)強くTurbulenceをかけたもの。
作り方
正直Sparseで動くようにはなったけど合ってるかはだいぶ不安。
Smoke Objectの下にScalar Fieldを作成する。
Sparseでは、Smoke Objectから直接大きさが取得できないので、opinputpathを使用してSmoke Object内部から取得する。
Source FieldもVolume Source内部で(多分)処理されてしまっているので、Volume SourceでSource Fieldを作成する。
SourceにMergeしてGas Field VOPを作成し内部を以下画像にする。
age処理用のagetemp Fieldを作成する。
agetempにsourceを追加する。
ageにagetempを追加する。
agetempを0にする
ageをadvectする。
元のではSingle Stepだったが、Gas Advect Field 1.0にしないとSingle Stepが出てこないのでとりあえず変更していない。
最後にSmoke SolverのResizingのExtra Fieldsにageを追加する。
使い方
ageの値に合わせてなにかの処理を加える。
Air Field
きのこ殺せる:★☆☆ 手軽さ:★★☆ 汎用性:★★★ 処理の軽さ:★★☆
この世界は真空ではないので、環境に漂う気流をちゃんと定義してあげる方法。
気流だけでも良いが、周囲のコリジョンも含めると気流がそこにあたったvelが生成されるのでだいぶ良い。
コストとの相談にはなるが、Pyroに直接ぶつからないオブジェクトのコリジョンも含めれるとぐっと良くなる。(ことがある)
なお、思ったより結果が見えなかったのでコリジョンの例はvを10倍にしている。envも含めなければほんとにその程度しか効かない。
Air Fieldっていうとコリジョンすることによって発生する気流を指すことが多いので注意。envVelocityは含まない気がする?
作り方(Collision)
そのまま通常通りコリジョンする。
もし、コリジョン内部に煙が入ってしまってDensityなどがなくなるのが嫌なのであれば以下をオフにする。
作り方(envVelocity)
BoundやBoxで範囲を定義。
空のvelを定義
VDB Activateでvelを設定した範囲にする。
Volume Velocityノードや、Volume VOPなどでvelを定義する。
使い方
それぞれ普通にForceに接続する。
Scatter Point
きのこ殺せる:★★☆ 手軽さ:★☆☆ 汎用性:★☆☆ 処理の軽さ:★★☆
Pressure単体ではなく+ScatterしたPointの部分のみにForceを強くかける。
コントロールが若干難しいが割と乱れていいと思う。Pressureじゃなくても可。
作り方
DOP内
DOPのSOP Solver内
使い方
Vorticle Force
きのこ殺せる:★★☆ 手軽さ:☆☆☆ 汎用性:★★☆ 処理の軽さ:☆☆☆
めちゃ処理重い…セットアップもややこしい。一応ShelfのContainer ToolsにSeed Vorticlesがあるのでそれを使えばセットアップできます。
空間に渦を配置するというコンセプトは結構好き。
作り方
まずSOPでPointをScatterする。(一応DOP内でPointを生成することもできる)
up(向き)、pscale(範囲)、mag(強さ)アトリビュートを作成する。
DOP
Smoke Object下に以下を作成
SolverのForceにGas Vorticle Forcesをつなぐ。
Confinement Strengthが全体の強さのMultiplyになる。
Advectionに以下をつなぐ。
Particle to Field
きのこ殺せる:☆☆☆ 手軽さ:☆☆☆ 汎用性:★★★ 処理の軽さ:★☆☆
紹介するだけ。応用をきかせたらいろいろなことに使えそうな未来を感じる。
Particleの値をDOP内で各種Fieldへ変換。普通にVolume Sourceでいいかな…
作り方
SOP
DOP内
Gas Particle to FieldのAttributeでPointのAttributeを指定し、それをDestination Fieldに変換する。
メモ
iGouさんの方法もかなり良かった。ありがたい。