フォローする

Houdini Game Dev Tools:Texture Sheetsを作成する

Houdini Game Devツールのインストールはこちら

一番最後にサンプルシーンを添付しています。ご参照ください。

爆発の元になるポリゴンジオメトリを選択します。(ここではTorusを使用)

ジオメトリを選択した状態でシェルフのPyroFXからExplosionをクリックします。
再生します。
これで爆発がまずは作成できます。

source_fuel_from_torus_object1ノードを選択します。

このノードはSource Volume ダイナミクスノードで、SOPボリュームデータをインポートしてダイレクトに適用するマイクロソルバーです。Source Volume DOPは、より大きな流体シミュレーションの構築に使用されるマイクロソルバーです。 Fluid SolverとSmoke Solver DOPを使用すると、メインソルバーステップの前または後にマイクロソルバーを追加して、シミュレーションを延長または調整することができます。 
Source Volume DOPはボリュームをインポートし、指定されたDOPフィールドにボリュームをバインドします。 ボリュームの任意の組み合わせをロードしてマップすることができます。 デフォルトの組み合わせのセットがプリセットとして表示されます。 これらはFluid Sourceオペレータと連携して動作します。 複数のVolume Source DOPマイクロソルバーを使用すると、オブジェクト間で指定されたDOP関係に頼るのではなく、SOPで作成されたボリュームからソース、シンク、またはポンプを直接適用するなどの特定のタスクを実行できます。

Scale Source Volumeアトリビュートを確認します。このアトリビュートはスカラーフィールドXに追加されるソースボリュームとして指定された(スカラー)ボリュームのスケールを制御します。

このアトリビュートを右クリックして、Channel and keyframes > Scope Append Paramtersを選択します。

Scope Paramterは、アニメーションエディタにパラメータのアニメーションチャンネルを表示します。

この機能を選択すると、下記のようにアニメーションエディタが表示され、このパラメーターのキーフレームを見ることができます。

確認すると5フレームでボリュームが2倍になり、その後、10フレームで0にそして、緩やかに変化していることがわかります。

10フレームを以降をすべて選択し、Valueに0と入力します。

再シミュレーションを行います。
大体、70フレームを過ぎたありで煙が消えていくようになります。

再生開始を10フレーム、再生終了を73フレームに合わせます。最後に1枚のテクスチャシートに

次にカメラを作成します。現在のカメラの位置を爆発がよく見える位置に調整し、No camからNew Cameraを選択します。

カメラ作成後、自動でカメラが切り替わらないようにロックしてください。

カメラのViewアトリビュートを256×256に設定します。画面に表示されるレンダリング領域が正方形となります。爆発の最初から最後までこの中に納まりつつ、領域いっぱいに爆発がみえるように配置します。

Render Viewに切り替え、カメラをCam1に設定し、レンダリングしてみます。
フレームを適当にすすめ、全フレームで爆発がレンダリング領域にすべて納まっていることを確認してください。

次にここまでの結果を一度、FileCacheとして保存します。

Pyro_Importを開きます。

中には、DOP I/O ジオメトリノードとDop Import ジオメトリノードがあります。

DOP I/O ジオメトリノードは、DOPシミュレーションからフィールドをインポートし、ディスクに保存してから再度ロードします。
Dop Import ジオメトリノードは、DOPシミュレーションから抽出された情報に基づいてジオメトリをインポートおよび変換します。

FileCacheノードを作成し、Dop ImportのOutputをFilecacheに接続します。

FileCacheのSave to Diskをクリックし、キャッシュをハードディスクに保存します。
キャッシュ作成後はLoad from Diskをオンにして、ハードディスクに保存したキャッシュをロードします。

これをテクスチャシートとして出力します。

Game Development ToolsetシェルフからTexture Sheetsをクリックします。
Outに、rop_texture_sheetsが作成されます。

rop_texture_sheetsノードのNode To RenderでPyro_importを選択します。

Resolutionが1枚のテクスチャシートにCompositeした際の解像度になります。

 

Renderボタンを押して処理を開始します。
レンダリングが終了すると、下記のようなTexture Sheetsが作成されます。

Unreal EngineでExtract Sprite Sheetで抽出してみました。

 

[おまけ]

256×256でレンダリングが連番ファイルを1枚のシートに合成している部分を確認します。
Texture sheetsノードを右クリックして、Allow Editing of Contentsを選択します。

Texture SheetsのHDA内に入り、更にComposingに入ります。

mosaicノードを選択します。

mosaicは一連の画像をタイル張りして1つの画像に合成します。
Image per lineが1行(X側)に並べる画像の数を決めています。

mosaicで画像を並べるので、連番ファイルが何フレームあるのか認識しておくことは重要です。今回は1枚256×256の画像を縦横全てのタイルを埋めて並べるために64フレームでレンダリングしています。これを2048×2048にXを8、Yを8で並べることで全てのタイルに画像を配置できます。

mosaicノードの下にあるScaleを選択してください。これが最終的にCompositeして、1枚のTexture Sheetsにまとめた時の解像度を決定します。
このHDAの場合、Texture sheets HDAで定義した解像度を参照しています。

 

 

 

0 コメント

記事コメントは受け付けていません。