2015-12-16

Z depth Conversion

Houdini の Mantra から出力される Z デプスを Maya, mental ray, VRAY などの Z デプス空間に変換する方法をこちらにまとめました。

2015-11-14

h15 polyextrude

Houdini 15 での PolyExtrude ツールの変更点の一部をこちらにまとめました。

attribute wrangle

Houdini で Attribute Create を脱却、Attribute Wrangle に移行するためのさわりをこちらにまとめました。

2015-10-30

displacement shading

Houdini でディスプレイスメントシェーディングをカスタムシェーダに組み込む方法こちらにまとめました。


Happy Halloween!

2015-09-16

particle io

Houdini でパーティクルの読み書きを簡単に行う方法をこちらにまとめました。

2015-07-16

turntable animation

Houdini で簡単にターンテーブルアニメーションを作成する方法をこちらにまとめました。

2015-07-11

Houdini Splash Screen Contest

毎リリース恒例になりつつある Houdini 起動画面コンテストに関するまとめはこちら。

HDA Path

Houdini Digital Asset (.hda) の配置位置、スキャンパスの設定に関してこちらにまとめました。

2015-06-29

Material Assignment

Houdini でのマテリアルのアサイン方法を、今更ながら、このページで説明。

2015-06-25

Voronoi Fracture

Voronoi Fracture の簡単な使い方を、基本、詳細、応用の3つに分けてこのページで説明。

2015-06-11

2015-04-24

transfer normalmap

Houdini で高解像度ジオメトリのディテールを低解像度ジオメトリのノーマル情報として転写する方法をこちらのページで紹介。 に追加。

2015-04-23

2015-04-16

FBX export from HDA

FBX 出力機能をデジタルアセットに含める場合のノードの設定についてこちらのページで説明。

2015-04-08

Blackbox HDA

Houdini デジタルアセットのブラックボックス化

Houdini 14.0.297 より Houdini デジタルアセット (HDA) のブラックボックス化が可能になった。これにより、使用者にアセット内部の構造を見せないアセットの作成・共有が可能になった。ここではその使用法を簡単に紹介。


2015-03-30

Intel HD driver

Dellのラップトップなど、いくつかの製品でのIntel HD ドライバの更新方法をこちらのページで紹介。

2015-03-24

Houdini Startup Scripts

Houdini起動時に実行される pythonrc.py, 123.{cmd|py}, 456.{cmd|py} に関して紹介。


2015-02-23

PPD.tar.Z

Pipe In CHOP ノードのドキュメントにある PPD.tar.Z の使い方をこちらのページで紹介。

2015-02-21

pointcloud-01

Houdini でのポイントクラウドの生成方法の一つをこちらのページで紹介。

expressions-01

Houdiniのパラメータビューで使用するエクスプレッションの確認方法をいくつかこちらのページで紹介。

2015-02-19

IFD

IFD は、instantaneous frame description の略で、フレーム単位でのシーンの状況を記述し、レンダラーに渡すためのファイルフォーマット。IFDファイルの出力方法および最適化を紹介。

2017/8/17: Houdini 16.0 用に内容更新。

Houdini で作成したシーンをレンダリングする場合、Houdini のシーンファイルである .hip ファイルをそのままレンダリングするよりも連番の .ifd に書くと効率の良いレンダリングが可能になる。

例えば 240 フレームの Pyro のシミュレーションがあり、これを.hip のままレンダリングすると、基本的には、一台のコンピュータで 1フレーム目から 240フレーム目まで順番にシミュレーションとレンダリングを実行していくこととなるが、最初に連番の ifd として出力すれば、その時点で各フレームのシミュレーション結果が各ファイルに書き込まれ、レンダリングのみを複数のPCを使って並列的にレンダリングが可能。240台 PCがあれば、それぞれに1フレーム分を渡すことが可能。

IFD は、instantaneous frame description の略で、フレーム単位でのシーンの状況を記述し、レンダラーに渡すためのファイルフォーマット。

$ mantra test.ifd test.exr
とすれば、test.ifd のシーンの様子が test.exr という画像として出力される。

$ mantra -i test.ifd
または
$ mantra test.ifd ip
とすると、レンダリング結果が Mplay (画像ビューア) に直接出力される。

ここでは、IFDファイルの出力方法とそのサイズの最適化について紹介したい。

使用した Houdini のバージョン: Houdini 16.0.671

1. 元シーンファイルの作成

  1. Torus を作成。
  2. 作成したTorus を選択したまま、Pyro FX シェルフから Explosion をクリック。これにより、Pyro FX が Torus に追加された。再生ボタンを押せば Pyro の様子がわかる。
  3. Lights and Cameras シェルフから Camera ボタンを Ctrl キーを押しながらクリックしカメラを追加。
    Ctrlキーを押すことで、現在のビューを元にしたレンダリング用カメラが出来る。このカメラ名 (/obj/cam1) は次で作る Mantra レンダーノードのデフォルトのカメラ名となるので、重要かつそのままが良い。
  4. メインメニューの Render->Create Render Node->Mantra - PBR を実行。/out/mantra1 が出来る。IFD ファイルの出力はこのノードから行う。
    • Pyro などボリュームデータを扱う時は、Mantra ノードの Rendering > Sampling タブで、Ray Variance Antialiasing をオフにする。Pyro にボリュームライトを追加した場合、100フレーム目、1280x720解像度で4分かかったレンダリングが1分で終了。画質は見た目にはまったく変わらない。ヘッドライトしかない場合にはレンダリング速度はあまり変わらないが、それでも RVAAをオフにした方が速い。
    • Stochastic Sampling はオンのまま。
  5. シーンファイルの保存。
    シーンファイルを、例えば、pyro_test.hip 等としてあるディレクトリ内に保存。これによって環境変数 HIP の値が保存したディレクトリになる。この値は、$HIPとして参照可能で、これを元に他のファイルを出力先を指定可能で、どこかわかり易いディレクトリに保存するのが良い。

2. IFD の書き出し

  1. IFD を書き出すためには、/out/mantra1 の Driver タブの Disk File をオンにする。
    デフォルトでは、出力ファイル名は $HIP/mantra.ifd となっていて、現在のフレームを単一ファイルとして IFD に出力するための設定。
  2. 連番で出すには、例えば、
    $HIP/ifds/test.$F3.ifd
    などとする。
    こうすると、pyro_test.hip のあるディレクトリに ifds という名のサブディレクトリが作成され、その中にifd ファイルが三桁 ($F3)の連番で出力される。
  3. 一番上の Valid Frame Range を Render Frame Range にする。
    そうすると 最初のフレームと最後のフレームが240フレーム(またはシーンで設定された最初と最後のフレーム) となる。
  4. この状態で Render ボタンをクリックすれば、画像の代わりに IFD ファイルが出力される。
  5. Houdini 16 より、Save inline geometry、Shared temp storage, Local temp storage の3つのオプションが追加された。
    • Save inline geometry はデフォルトでオフ。オンにしない限り、IFD のシーンの概要記述部分とジオメトリ記述部分を別ファイルに分け、ジオメトリ部分は、Shared temp storage で指定されたディレクトリに別ファイルで書くようになった。
    • Save inline geometry オンにすれば今までどおり IFD の中にジオメトリ情報も記述され、IFD ファイルが非常に巨大になる(ことが多い)。
      • 回避策は以下の通りキャッシュで出力し、Packed Primitivesとして読み込み、Save inline geometry をオンにする。

3. Pyro をキャッシュ出力

Pyro シミュレーションをキャッシュとして出力する。

  1. /obj/pyro_import/import_pyrofields ノードに行く。
  2. Geometry File の値が、デフォルトでは、
    $HIP/geo/$HIPNAME.$OS.$F.bgeo.sc
    となっているが、
    $HIP/geo/$HIPNAME.$OS.$F3.bgeo.sc
    と$Fの後に3を追加して桁数をそろえるようにした方が良い。
  3. Export to File タブで Render ボタンをクリックしファイルを出力。

    この書き出しは IFD の書き出しに比べると一瞬で終わる。240フレームの geo ファイルは 2.5GBになる。
  4. 書き終わったら Load From Disk をオンにする。
    こうすることで、Houdini はシミュレーションする (import from DOP) のでなく、geo ファイルを読むだけになる。
  5. キャッシュを読み込んだ (#4の) 状態で、Save inline geometry をオフのまま (デフォルト) で IFD の書き出しをもう一度行うと、Shared temp storage の中にジオメトリがもう一セット作られる。これではキャッシュに書き出した意味がない。
  6. IFD がキャッシュファイルを参照するためするには、import_pyrofields の Load From File タブで、Load を "All Geometry" から "Packed Disk Primitive" に変更し、Mantra ノードで Save inline geometry をオンにする。

    Packed Disk Primitive に変更後、IFD を再度書き出すと IFD の中でキャッシュファイルが参照され Shared temp storage にはジオメトリが書かれなくなる。

まとめ

  • IFD の出力は mantra ノードから行う。
  • IFD がキャッシュファイルを参照するようにするには、キャッシュ読み込みの設定を Packed Disk Primitive にし、Save inline geometry をオンにする。
  • Save Binary Geometry をオフにすると、IFD は ASCIIで書き出される。
  • Mantra でSave inline geometry をすべてのオブジェクトに対して行うのではなく、個別に行いたい場合は、それぞれのオブジェクトノード (例: /obj/pyro_import) で、ギアアイコン-> Edit Render Parameters... で Edit Parameter Interface を開き、左下のフィルタで inline を検索、右矢印をクリックして、パラメータとして追加、Accept で閉じる。すると Driver タブに Save inline geometry (vm_inlinestorage) が追加される。
  • Shared temp storage や Local temp storage に出力されたジオメトリファイルを自動的に削除する方法はない。
  • IFD Workflow Basics by Chris Rydalch

2015-01-16

Start Here Subtitles

Quickstart ムービーを手元で再生する時に日本語字幕を追加する方法をこちらのページで紹介。