| On this page |
最低限のPyro系SOPノード一式を使って、煙や炎を作成する方法を学習します。 SOPベースのPyroシミュレーションの利点は、単一ネットワーク内で全体のセットアップを制御できることです。 ノードをSOPネットワークとDOPネットワークに分けて、再度それらのネットワークをマージするといったことが不要です。 特に初心者は、分かりやすく構造化されたワークフローから学びが得られることでしょう。 Pyro FXシェルフからすぐに使用できるシーンを使用するのも良いでしょう。 このチュートリアルは3つのパートで構成されています:
-
SOP smoke
昇り立つ煙
このチュートリアルの1番目のパートでは、たった5個のノードだけで煙のシミュレーションを作成します。 いくつかのパラメータを変更することで、少しのディテールが入った昇り立つ噴煙をリアルな煙雲に変えることができます。
Pyroソースの形状はシミュレーション結果に大きく影響します。 例えば、平坦な円柱や球といった単純な形状は、ディテールが足りない単純なルックを生成してしまうこともあります。 いびつで変わった形状ほどノイズと乱流が生成されます。 それでも、基本的なソース形状が推奨される場合があります。
ソース
OBJ レベルで、Torus SOPを作成して、それをシーンの原点に配置します。
このTorusノードをダブルクリックして中に入ります。このTorusノードを煙のソースとして機能させます。
Pyro Source SOPを追加し、その1番目の入力をTorus SOPの出力に接続します。
このPyro Source SOPの Display フラグを有効にすると、オブジェクトの形状の輪郭に沿ってポイントのみが表示されます。
そこには頂点毎にポイントが1個存在しています。
後ほど、煙はこれらのポイントから発生します。
現在の288個のポイント数はおそらく不十分です。ここで立方体を思い浮かべて、たった8個のポイント/シードから得られるものを想像してみてください。
1つの方法は、このTorusの Rows と Columns の数を上げることですが、Pyro Source SOPにはもっと効率的な方法があります:
-
Mode を
Volume Scatterに変更して、ジオメトリ内部をシードパーティクルで埋めます。この変更によって、合計4,567個のシードポイントが生成されました。 -
Particle Separation を使えば、パーティクルを追加/削除することができます。値を小さくするほど、密度の濃いポイントクラウドが生成されます。このパラメータを
0.05に設定して41,730個のポイントを取得します。
アトリビュートの作成
アトリビュートがシミュレーションを駆動させるので、すべてのシミュレーションにおいて重要な役割を担っています。
シミュレーションの観点で使用頻度の高いアトリビュートはVelocityです。
煙のシミュレーションに関しては、さらに次の2つのアトリビュートが必要です: densityとtemperature。
-
densityは、煙が存在する場所を定義します。 -
temperatureは、煙を上昇させます。煙は熱くなるほど速く上昇します。
Houdiniには、その非常に重要なアトリビュート用のプリセットがいくつか用意されています:
-
Attributes に進んで、そこに
2を入力すると、アトリビュートとパラメータが初期化されます。 -
1番目の Attribute ドロップダウンメニューから、
Densityを選択します。 -
2番目の Attribute ドロップダウンメニューから、
Temperatureを選択します。
アトリビュートを追加してもビューポート内で何も変化がありませんが、Pyro Source SOPを中クリックして Node Info ダイアログを表示すると、density fltとtemperature fltのエントリーが追加されているのがわかります。
このflt文字列は、そのアトリビュートが浮動小数点値として扱われていることを意味します。
その一方、ベクトルアトリビュートの場合は3fltで3個の浮動小数点値として扱われていることを意味します。
ベクトルアトリビュートの例には、ポジション、Velocity、カラーがあります。
新しいアトリビュートでは、そのデータタイプを気にする必要があります。例えば、Cd(カラー)アトリビュートを追加する場合には、 Vector Attribute オプションを有効にすることを忘れないでください。
そうしなかった場合、その値が誤解釈されてしまいます。
Geometry Spreadsheetでは、それらのアトリビュートが正しく初期化されているかどうかをチェックすることもできます。
どちらのアトリビュート値も1.0になっているはずです。
この値は、Pyro Source SOPの Default Value パラメータに呼応しています。そのパラメータを変更すれば、スプレッドシートの値も変わります。
アトリビュートのラスター化
Pyro Source SOPをPyro Solver SOPに接続しても、そのソルバにはボクセルグリッドが必要なので何も起きません。
ボクセルを作成してそこにアトリビュートを適用するために、
Volume Rasterize Attributes SOPを追加して、それをPyro Source SOPに接続します。
Volume Rasterize Attributes SOPの Display フラグを有効にすると、ポイントが消えます。 その理由は、このノードが現在のところ何もアトリビュートを見ていないからです:
-
Attributes パラメータに(カンマなしで)
density temperatureと入力します。このパラメータのドロップダウンメニューからアトリビュートを選択することもできます。ビューポートでは、Torusがボリュームクラウドに変わりました。 -
Voxel Size パラメータを
0.05に設定します。これは、Pyro Source SOPの Voxel Size パラメータと同じ値です。
ソルバの設定
Pyro Solver SOPを追加し、その1番目の入力をそのVolume Rasterize Attributes SOPの出力に接続します。
-
Setup タブの General ▸ Voxel Size に
0.05と入力して、シミュレーションネットワークで使用されるボクセルサイズを合わせます。
これで最初のテストの準備ができました。以下の動画では、あなたの方で確認できるはずの内容を示しています: 立ち昇るキノコ形の煙雲。
ノイズとディテールを加える
これで、もっと活発なシミュレーションになるように乱流を追加できる準備が整いました。 Shape タブに進みます。そこには、 Wind(風) 、 Disturbance(擾乱) などの設定があります:
-
Buoyancy(浮力) を有効にして、値を
0.2に設定します。これによって、煙があまり速く上昇しないようにします。 -
Wind(風) を有効にして、そのタブを展開します。 Wind Speed を
2に設定します。 Wind Direction は、プラスX軸方向のデフォルトのままでも良いですし、別の方向を定義しても構いません。 -
Disturbance(擾乱) を有効にして、値を
3に設定します。このタブ下にある Threshold Field を見ると、このノイズがdensityに適用されることがわかります。 -
Turbulence(乱流) を有効にして、もっと小さいスケールのノイズと渦を追加します。値を
0.5に設定します。
上記の設定によって、もっと乱れたシミュレーションで良い構造が生成されました。 かなり薄くてほぼうっすらとした煙にしたかったのであれば、これで完了です。 濃い煙にしたかったのであれば、この構造だとあまりにも速く消えてしまいます。これを変更するために、
-
Fields タブの Density ▸ Dissipation(消散) で煙の寿命を制御します。値を
0.05に変更します。 -
Look タブの Density Scale を
1.5に設定します。これによって、濃い煙の印象も得られます。 -
自由に Smoke Color と Shadow Color を変更して、色々なルックを表現することができます。
上記の設定によって、豊かで活発な濃い煙のシミュレーションが生成されました。 この煙はあまり速く上昇せず、良い感じの渦を形成するのに時間が必要になりますが、煙が消える密度の薄い領域を形成するのにも時間が必要になります。
機能拡張
Pyro Source SOPとVolume Rasterize Attributes SOPの間にAttribute Noise SOPを挟んで
densityやtemperatureのアトリビュートを乱す手法は非常に便利です:
-
Attribute Names を
Floatに設定してtemperatureと入力します。また、densityとかdensity temperatureと入力して異なる結果を試してみると良いでしょう。 -
Noise Value ▸ Amplitude の値を
0.5に変更します。このパラメータは、初期のtemperature値を変更し、少し温度が上がったゾーンと下がったゾーンを作成します。 -
Animation ▸ Animate Noise を有効にします。
この煙シミュレーションに炎を追加する方法を説明したチュートリアルは、燃えるタイヤのシミュレーションを見てください。
以下の動画では、Attribute Noiseを使って上記の設定をtemperatureに適用したシミュレーションを示しています。
もっとディテールが必要であれば、 Particle Separation と Voxel Size の値を0.025に下げてください。
シェーディングとレンダリング
Pyro Bake Volume SOPシェーダの適用の方法に関する詳細は、シェーディングとレンダリングのページを見てください。