Houdini 18 SparsePyro 03 “Pyro Configure, Shelf Tools”


本記事では、Houdini18.0で追加されたPyroに関するノードと機能についてご紹介します。

今回は第3回目としまして、Houdini18.0で新たに追加された「Pyro Configure Billowy Smoke」、「Pyro Configure Fireball」、「Pyro Spread Configure」についてのご説明と、シェルフツールについてのご説明をさせていただきます。

1. Pyro Configure

Houdini18.0では「Pyro Configure Billowy Smoke」と「Pyro Configure Fireball」、「Pyro Configure Spreading Fire」という名前で、炎や煙を作成する際に最低限必要となるノードを自動で作成することができる機能が追加されました。

使用する際の流れにつきまして、1.1節と1.2節にてご説明させていただきます。

1.1 Pyro Configure Billowy Smoke と Pyro Configure Fireball

1.初めに、オブジェクトノードを追加します。 オブジェクト階層内でTabキーを押すか、右クリックでTab Menuを開き、「Geometry オブジェクトノード」を追加します。

画像1. 「Geometry オブジェクトノード」の追加

2.オブジェクトノード内に入り、Tab Menuからノードを追加する際と同様に「Pyro」と入力します。

画像2. Tab Menu

3.メニュ―の中から「Pyro Configure Billowy Smoke」もしくは「Pyro Configure Fireball」を選択します。

画像3. 項目の選択

4.ネットワークエディタ上をクリックし、ネットワークを作成します。どちらの機能も、作成されるネットワーク構成は同じです。ここでは「Pyro Configure Billowy Smoke」を選択し、作成しています。

画像4. ネットワークの作成

5.再生すると、アニメーションが作成されていることが確認できます。「Pyro Configure Fireball」を選択し、作成した場合も同様です。

画像5. Pyro Configure Billowy Smoke


画像6. Pyro Configure Fireball

こちらで作成されたネットワークの詳細は、第2章でご説明させていただきます。

1.2 Pyro Configure Spread Fire

1.初めに、オブジェクトノードを追加します。 オブジェクト階層内でTabキーを押すか、右クリックでTab Menuを開き、「Geometry オブジェクトノード」を追加します。

下の画像6では、オブジェクトノードの名前を「PyroConfigure_Spreading_Fire」としています。

画像7. 「Geometry オブジェクトノード」の追加と名前の変更

2.オブジェクトノード内に入り、Tab Menuからノードを追加する際と同様に「Pyro」と入力します。

画像8. Tab Menuの表示

3.メニュ―の中から「Pyro Configure Spreading Fire」を選択します。

画像9. 「Pyro Configure Spreading Fire」を選択

4.作成された段階では、下の画像9のようにネットワークが乱雑に作成されてしまいます。見やすくなるようにキーボードの「L」や「Shift + S」を押して、ネットワークを整理します。

画像10. ネットワークの作成と整理

5.「Pyro Configure Spreading Fire」の場合、ネットワークの作成時に燃焼の対象となるジオメトリがNullジオメトリノードで置き換えられています。これを任意のジオメトリに差し替えます。ここでは例として、Sphere を使用しています。

画像11. Sphereオブジェクトへの置き換え

6.燃え広がりのスタート地点をBoxで指定します。Boxがバウンディングボックスとして使用され、この範囲内のポイントから燃焼がスタートします。デフォルトでは原点にBoxが配置されていますので、Sphereの表面に重なる位置にBoxを移動させます。

位置を合わせるために調節を行ったパラメータは以下になります。
Sphereジオメトリノード:
Uniform Scale : 0.5

Boxジオメトリノード(hot_region):
Center : 0, 0.5, 0
Uniform Scale : 0.1

ディスプレイフラグを「Group Createジオメトリノード(create_hot_group)」に切り替えると、ボックス内に含まれるポイントが黄色く選択されていることが確認できます。

画像12. ポイントグループの作成 

7.再生すると、Box位置から徐々に燃焼していく様子が確認できます。「Pyro Source ジオメトリノード(create_source_points)」にテンプレートフラグを切り替え、「Pyro Solver ジオメトリノード」にディスプレイフラグを切り替えると、分かり易いかと思います。

画像13. アニメーションの確認

2. 「Billowy Smoke」と「Fireball」の違いについて

1.1節でご紹介させていただいた、「Pyro Configure Billowy Smoke」と「Pyro Configure Fireball」について見ていきます。

こちらの2つの機能は、下の画像14のように作成されるネットワーク、使用されているノードは同じものになります。そうであれば、2つの機能を分けて用意する必要が無いように見えます。

画像14. ネットワークの比較

しかし、このような機能が用意されていることによるメリットは、大きく分けて2つあると考えられます。

2.1 メリット➀

これまでHoudiniを使用して煙や炎、爆発といった表現を作成されたことがある方であれば、調節を行う必要があるパラメータの数が多く、難しく感じたことが一度はあるかと思います。

当然ですが、煙を作成する場合と爆発を表現する場合では、使用する制御ポイントが異なります。使用されるフィールドも異なります。これらを制御するまでの設定を行うだけでも時間がかかることもあるかと思います。

このような場合に、予め見本となるような設定が施されているネットワークを作成できれば、どれが調節の必要なパラメータなのかが分かり易くなるかと思います。

例えば、爆発の動きを再現するためには、「Pyro Configure Fireball」で作成したネットワーク内の「Pyro Source ジオメトリノード」では、下の画像15のように、burnアトリビュートとtemperatureアトリビュートのスケール値をキーフレームで制御していることが分かります。

画像15. キーが入っているパラメータの確認


画像16. フレーム番号とスケール値

「Pyro Configure Fireball」の7フレーム目におけるデフォルトの設定では「Pyro Sourceジオメトリノード」のburn scaleパラメータと、temperature scaleパラメータに0が入力されており、加えてキーフレームとして設定されています。

burn scaleパラメータは、burnアトリビュートとして設定する値を決めるパラメータです。同じように、temperature scaleは、temperatureアトリビュートとして設定する値を決めるためのパラメータになります。

7フレーム目以降のスケール値がburnとtemperatureともに0のため、7フレーム目以降の発生が抑制されます。そのため、上の画像16の13フレーム目のように、下部がくびれたような形状が作成されます。

このように、パラメータを調節する際の見本としても活用できますし、更にネットワークを追加していく際のベースとしても活用できるという点において、使用するメリットがあるのではないでしょうか。

2.2 メリット➁

作成されているネットワークを見ると、どちらもシミュレーション用のノードとして「Pyro Solver ジオメトリノード」が使用されています。

Houdini18.0では「Pyro Solver ジオメトリノード」を使用してネットワークを組むPyro系のシェルフツールとして「Simple FX」がありますが、デフォルトではシェルフに追加されていないため、使用するためには自身で設定を行う必要があります。

画像17. 「Simple FX」タブ内のツール

この作業を必要とせず、ノード検索と同様に呼び出しが可能です。

「Simple FX」タブ内のツールも同じものですが、手軽に使用できる点において、一つメリットがあるかと思います。

3. Shelf Tools

Houdini18.0では、新たに「Sparse Pyro FX」タブと「Simple FX」タブが追加されました。

「Sparse Pyro FX」タブは、Sparse Pyroシミュレーションを行うためのツールが用意されたタブになります。

画像18. Sparse Pyro FX

名前の通り「Sparse Billowy Smoke」は煙、「Campfire」は炎、「Sparse Fireball」は爆発、「Spreading Fire」は炎の燃え広がりの表現に必要となるネットワークを作成してくれるツールです。

「Simple FX」タブ内のツールは、SOP階層内で扱えるようにSolverジオメトリノードを使用して構成されたネットワークを自動で構成するツールになります。

画像19. Simple FX

「GPU Billowy Smoke」につきましては次の3.1節、「Simple FX」タブの中にある「Simple Billowy Smoke」「Simple Fireball」「Simple Spreading Fire」につきましては3.2節にてご紹介致します。

3.1 GPU Billowy Smoke

「GPU Billowy Smoke」は「Sparse Billowy Smoke」と同じように、DOP階層内でSparse Solverを用いてシミュレーションが行われますが、OpenCLを使用し、GPUによってソルバーを並列処理させるモードが予め適用された状態で作成されるシェルフツールになります。

「GPU Billowy Smoke」を使用した際に作成されるDOP Networkの中に入り、「Smoke Object (Sparse) ダイナミクスノード」と「Pyro Solver (Sparse) ダイナミクスノード」をそれぞれ見ていきます。

画像20. 「Enable Sparse Solving」の確認

ここで確認するのは、「Smoke Object (Sparse) ダイナミクスノード」の「Enable Sparse Solving」です。
これは第1回目の記事でもご説明しましたが、Sparse Pyroシミュレーションを行うかどうかを決めるチェックボックスです。

Houdini18ではGPUの種類によらずOpenCLがSparse Pyroをサポートしていません。GPUを使用して演算を行う場合は、一度このチェックをオフにしておく必要があります。チェックをオフにした場合、シミュレーションはSparse Pyro シミュレーション(Sparseモード)ではなく、従来のPyroシミュレーション(Denseモード)として動作し、この状態であれば「GPU Billowy Smoke」は使用できます。

画像21. 「Use OpenCL」の確認


画像22. Pyro Solverに表示されるメッセージ

仮に「Enable Sparse Solving」にチェックを入れた状態(Sparseモード)で「Pyro Solver (Sparse) ダイナミクスノード」に移り、画像21のように「Advanced」タブ内にある「Use OpenCL」のチェックボックスにチェックを入れた場合、画像22のようなエラーが表示されます。

現段階では、OpenCLがSparse Pyroをサポートしていないために発生するエラーです。

また、Windows環境でOpenCLを使用する場合、以下のようなデバイスタイプに関するエラーメッセージが表示されることがあります。

画像23. デバイスタイプに関するメッセージ

この場合は、ドキュメントフォルダー内にあるHoudiniの環境ファイル(houdini.env)に対して、次の2文をテキストエディタを使用して下の画像24のように記述することで解消できるかと思います。

——————————————————–
HOUDINI_OCL_DEVICETYPE=GPU
HOUDINI_OCL_DEVICENUMBER=0
——————————————————–

画像24. houdini.env

3.2 Simple FX

「Simple FX」タブ内に用意されているツールは基本的に、SOP階層内における操作を前提としたツールになります。基本的には、第1章でご紹介しました「Pyro Configure」によって作成されるネットワークと全く同じネットワークが構成されます。

画像25. 「Simple FX」と「Pyro Configure」


画像26. Spreading Fire

Spreading Fireに関しましては、「Simple FX」タブから作成する場合は、適応させるオブジェクトを先に選択しておく必要があります。「Pyro Configure」から作成する場合は、手動でバウンディングボックスの位置を調節する必要があります。初期値やネットワークは全く同じ構成になっています。

今回ご紹介する内容は以上となります。

次回は、今回ご紹介しました「Pyro Configure」を使用して、簡単な爆発表現の作例を順を追ってご説明できればと思います。