Game Dev Flowmap

このページでは Game Development Toolset の VFX Samples の一つである Simulated Flowmap について紹介する。Game Development Toolset のダウンロードとインストールに関してはこちらを参照。

使用したバージョン: Houdini FX 15.5.626

Flowmap について

Flowmap は、水など流体の流れを2次元で表現するため、Y-up で X方向への動きを赤(R)チャネルに、Z 方向のチャネルを緑 (G) チャネルにわたし、 0 < x,z < 128 で-方向に、128< x,z < 255 で+ 方向に動く。X=128, Z=128 で静止状態。

1. シーン概要

  1. Houdini 起動後、ビューポートにカーソルがある状態で TAB キーを押しメニューを表示。 Game Development VFX Samples から Simulated Flowmap を選択。Enter キーを押して確定。
      原点にアセットが展開される。

      ネットワークビューで、/obj 以下に SimulatedFlowmap1 という名の HDA が一つ追加されたのがわかる。
  2. ネットワークビューの SimulatedFlowmap1 ノード上で RMB-> Allow Editing of Contents を実行。

      ノードの表示文字が赤くなり、アセットがアンロックされ、編集可能になったことがわかる。
  3. SimulatedFlowmap1 をダブルクリックするなり、Enter キーまたは 'i' キーを押すなりして、ノードの中に入る。以下の12個のノードと Sticky Note による README がある。このページで触れるのは最初の二つ(太字)。
    • VISUALIZATION: シミュレーションされた流体をレンダリング用に変換するためのネットワーク
    • RENDER: レンダリング設定・出力のためのノード
    • PARTICLE_SOURCE: パーティクル発生源
    • PARTICLE_SINK: パーティクル消失源 (sink は流し)
    • SCENE_COLLIDERS: 流体が巻きつく衝突形状
    • INITIAL_FLUID: 流体初期状態
    • SIMULATION: シミュレーションネットワーク
    • WATER_MESH: レンダリング用のメッシュを作成するネットワーク
    • FLOWMAP_TEXTURE: WATER_MESH で作成されたメッシュとテクスチャを併せてレンダリングできるようにするためのネットワーク
    • CAMERA: カメラ
    • AMBIENT_LIGHT: ライト
    • COMPOSITING: 合成処理用のネットワーク

2. シミュレーションをキャッシュする

シミュレーション結果を一度書き出すことで残りの作業が手早く行なえるようにする。

  1. File->Save を実行し、シーンをファイルとして保存すると同時に、$HIP の位置を決め、キャッシュがどこに書かれるかを決定する。
      ファイル名は flowmap.hip とする (わかり易ければ何でも良い)。
  2. VISUALIZATION ノードの中に入り、surface_cache ノードを選択する。
  3. Geometry File の最後に ".sc" を追加して、BLOSC 圧縮を有効にする。
    キャッシュファイル名は
    FlowMapParticleGen1.hip.surface_cache.$F3.bgeo.sc
    となる。

    以下有効にした場合としない場合のファイルサイズの比較。
    フレーム数非圧縮BLOSC 圧縮
    120345MB163MB
    240696MB336MB
    BLOSC圧縮を有効にすることで、キャッシュサイズを半分以下にすることが可能。
  4. Save to Disk ボタンをクリックし、シミュレーションをキャッシュとして書き出す。
      デフォルトでは240フレームとなっているが、全部書き出したくなければ半分の120フレームでも良い。
  5. 書き出しが終了したら、"Load From Disk" トグルをオンにして、書き出したキャッシュを読み込むようにする。
      こうすることでタイムラインをスクラブしてシミュレーション結果の視認が容易になる。
  6. ネットワークエディタ内で U キーを押して階層を一つ上に上がり、ビューポートでキャッシュされたシミュレーションを再生してみると下の通り (120フレーム)。

3. テクスチャとして出力

  1. /obj/SimulatedFlowmap1/RENDER の中の baketexture1 を選択。
  2. 15.5 を使っている場合、Scripts タブの Pre-Render Script と Post-Render Script のトグルをオフにする。これらは Houdini15.0 用の設定。
  3. 1フレーム目で Render to Mplay ボタンをクリック。
      するとレンダリング結果は真っ暗になる。
  4. 2フレーム目以降で Render to Mplay ボタンをクリック。

      すると正しいレンダリング結果が表示される。つまり、1フレーム目ではシミュレーションの初期化を行なっているので動きはない。よって真っ暗。
  5. /obj/SimulatedFlowmap1/RENDER の中の baketexture1 を選択。
  6. Output Picture 1 で指定されたファイル名に
    $HIP/tex/$HIPNAME.$OS.%(UDIM)d.$F3.png
    などと $F3 とフレーム番号が必ず入るようにする。そうしないと同じファイルを上書きするだけになる。
      こうして書き出したファイルは
      flowmap.baketexture1.1001.001.png
      flowmap.baketexture1.1001.002.png
      ...
      flowmap.baketexture1.1001.120.png
      となる。UDIM (1001) の設定が不要であれば、その部分は削除しても良い。

      レンダリングした結果 (最初の120フレーム) は以下の通り。

おまけ

  1. 1フレーム目から色がでるようにレンダリングするには、シミュレーションを 0フレーム目開始にする必要がある。
    1. メインウィンドウ右下の Global Animation Options ボタンをクリック、表示されるパネルで Start を 0 にし、Close ボタンを押して閉じる。
    2. タイムスライダの左端の開始フレームフィールドを0にする。
    3. /obj/SimulatedFlowmap1/SIMULATION を選択、Start Frame を 0 にする。
    4. /obj/SimulatedFlowmap1/VISUALIZATION/surface_cache を選択、Load from Disk をオフにして、再度 Save to Disk をクリック、キャッシュを書き直す。
        書き出したら再度 Load from Disk をオンにする。
    5. タイムスライダの左端の開始フレームフィールドを 1 に戻し、巻戻しボタンを押して現在のフレームも1に戻す。
    もっと手っ取り早く240フレームなり 120フレームレンダリングしたい場合には、241フレームまたは121フレームまでレンダリングして最初のフレームを無視する方が楽かもしれない。結果は同じ。
  2. Water Flow in Portal 2: Valve の Alex Vlachos 氏による Siggraph 2010 講演 (PDF)

0 件のコメント:

コメントを投稿