2022-02-20

cloud modeling

Houdini (Core) で雲をシミュレーションせずに作る方法。勿論、FX でも可能。

以下を書き始める直前にすあまのかみさんによる以下の素晴らしいチュートリアルを (再) 発見。実際的な例はこちらをご覧ください。

使用したビルド:

  • Houdini Core 19.0.531

1. Cloud ノードおよび Cloud Noise ノードの使用

Houdini 起動後

  1. Create シェルフから Sphere ツールを Ctrl キーを押しながらクリック。
      ビューポートには球が現れ、ネットワークエディタには sphere_object1 というノードが出来る。
  2. sphere_object1 をダブルクリックして中に入る。
      sphere1 というノードがある。
  3. TAB メニューから Cloud ノード (cloud1) を実行し、 sphere1 の出力に接続。表示フラグを cloud1 に移す。
      ビューポートの球は半透明化する。
  4. TAB メニューから Cloud Noise ノード (cloudnoise1) を実行し、 cloud1 の出力に接続。表示フラグを cloudnoise1 に移す。
      なんとなく雲っぽい見た目になる。

      なお、H19 (左) のビューポートにはデフォルトで AO (アンビエントオクルージョン) が追加されたので、シーンにライトを追加しなくとも、雲っぽく見える。H18.5 とそれ以前 (右) ではライトを追加しないと陰影がわからなかった。
  5. TAB メニューから Test Geometry: PigHead を実行 (testgeometry_pighead1)、接続せずに配置。
  6. cloud1 の入力を sphere1 から testgeometry_pighead1 に差し替える。勿論、Switch ノードを間に使っても良い。

      すると豚の頭の形の雲になる。
Cloud ノードおよび Cloud Noise ノードのパラメータを調整していけばさらにより雲らしい形になるが、Houdini Off the Shelf | CloudFX (日本語字幕あり) をはじめ、その説明はすでに他であるので、ここでは割愛。

なお、以下の画像のようにバウンディングボックスだけが表示され、ボリューム本体が表示されない場合は、ビューポートがワイヤフレームモードになっていると思われる。

その場合、W キーを押せば、シェーディングモードにトグルできるはず。

    W キーが有効になるのはカーソルがビューポート上にある時のみ。カーソルがネットワークエディタ上にある場合は、選択されているノードにテンプレートフラグが追加されるだけなので注意が必要。

2. ボリュームの組み合わせ

上の画像のネットワーク状態から、

  1. sphere1 に Moutain ノード (mountain1) を追加。Amplitude の値を 0.85 ぐらいにしてみる。残りはデフォルトのまま。つまり Operation = Add で、Range Values = Zero Centered。
      なお、H19 から Mountain は Attribute Noise ノードに置き換わった。この理由は Mountain は コンパイルブロック未対応だから。TAB メニューから Mountain を実行しても作成されるのは mountain1 という名の Attribute Noise ノード。このノードはコンパイルブロック対応で、なおかつ様々なタイプのノイズを選択できる。もし H18.5 までの Mountain ノードを作りたい場合は Hscript Textport を開き、
      cd /obj/sphere_object1
      opadd mountain::
      とする。詳細はこちら
  2. mountain1 に Cloud ノード (cloud2) を再度追加。
  3. cloud2 に Transform ノード (transform1) を追加。Translate X を 1 に設定する。
  4. VDB Combine ノード (vdbcombine1) を配置、
    1. 左の入力に cloud1 を接続
    2. 右の入力に transform2 を接続
    3. Operation を Add にする。
  5. vdbcombine1 の出力を cloudnoise1 に接続し直す。
      すると元々二つのボリュームが単一ボリュームに合わせられる。

同じ要領で複数のボリュームを追加していくことが可能だが、ボリュームのデータサイズには気を付ける必要がある。

上のようにワイヤフレームとボリュームの両方が表示されていてボリュームだけ表示したい場合は、

  1. 表示フラグが付いているノード以外が選択されているのであれば選択を解除する。
  2. ビューポートモードを Smooth Wire Shaded から Smoomth Shaded に変更する。

3. ボリュームのデータサイズ

  1. 上の画像通りのネットワーク状態で、下記の操作から無駄な計算時間を省きたいのであれば、vdbcombine1 の Resample を Higher-res to Match Lower-res ないし、A to Match B にして、下流では低解像のままになるようにする。
  2. cloud1 を選択し、Uniform Sampling を Max Axis から By Size にする。
      Div Size はデフォルトで 0.1 となっているはず。
  3. cloud1 でリングメニューを表示、左側の 'i' を選択、情報パネルを表示する。
  4. 表示された情報パネルの真ん中よりちょっと上ぐらいに
    density [24,23,26] float Voxels:5,245 Voxel Size: 0.1
    等と表示されるはず。
    • これは 24x23x26 の大きさの VDB ボリュームで、各ボクセルには density 値を格納していて、総ボクセル数が 5,245個あるということ。
    • なぜ VDB かとわかるというと、本来 24x23x26 = 14,352 だが、ノードが持つ総ボクセル数が 5,245個で、半分以下だから。VDB の特性上、データの無い部分のボクセルは保持しない。
  5. Div Size を 0.01 にする。
    • 桁を一つ変えるということは、データ量を10倍にしているのではなく、10x10x10 で 1000倍にしている。二桁変えれば 100x100x100 で 1,000,000 (100万)倍になる。半分も2倍ではなく、2x2x2 で 8倍になる。よって注意が必要。
    • 実際には、ボクセルは [204, 194, 224] でボクセル数は 2,429,595 と表示され、千倍ではなく463倍。これも VDB の特性。
    • 例えば、Convert VDB を cloud1 に接続し、Converet To を Volume (つまり非VDB ボリューム = 標準ボリューム) に設定すれば、ボクセル数は 8,865,024 (204x194x224) となるのがわかる。
    • 使用しているコンピュータのメモリ量を考慮して、解像度 (ボクセル数) の調整をする必要がある。 VDB だからといって非常に広大な地形の上に雲海を広げるのはあまり得策ではないと言える。
    • VDB ボリュームと標準ボリュームの違いについてはこちらを参照のこと。

参考チュートリアル

以下だけに限らず他にもあると思う

  • Houdini Off the Shelf | CloudFX (20分) Houdini 13 頃の CloudFX シェルフの紹介チュートリアル
      日本語字幕を追加した最初の一つ。当時は QuickTime の旧式のキャプションファイルフォーマットをテキストエディタだけで編集していたので、タイミング調整がイマイチ。
  • Quick Clouds For Games || Houdini + Unreal Engine Tutorial (2分) SideFX の Simon によるゲーム向けのチュートリアル
  • Cloudscape! - Houdini for Games (27分) Andreas Glad 氏による Houdini で Cloud スプライト作って UE4 で表示する方法
  • Quick VDB Clouds (13分) Entagma による VDB チュートリアル。最終的に VDB ファイル出力して Cinema4D (Octane) でレンダリング
  • Houdini VDB Combine In 5 Minutes (5分) 5 Minute FX による VDB Combine ノードの紹介
  • Realistic Dynamic Clouds (有償 10時間) VFX Grace によるおそらく一番内容が濃いと思われるチュートリアル

0 件のコメント:

コメントを投稿