On this page |
概要 ¶
Houdiniでは、プロダクションパイプラインが効率的に膨大で複雑なシーンの取り扱いとレンダリングを可能にするための機能、ワークフロー、最善の措置がいくつかあります。例えば、Alembicジオメトリを共有すれば、パイプラインの複数ステップを並行して動作させることができます。
Houdini13以前では、一番効率的なレンダリングワークフローは、Houdini内でプロキシジオメトリ(代用ジオメトリ)を使ってインタラクティブに作業して、Delayed Load ProceduralやPoint Instancingなどのジオメトリシェーダを使って、レンダリング時にジオメトリを置換することでした。Houdini13では、 パックプリミティブ と Alembicファイルフォーマット のより密接な統合をサポートしています。これらの機能は、直接的に非常に膨大なジオメトリを扱って、簡単に部門間でファイルを共有することができます。
以下のTipsはモデルの従来のプロダクションパイプラインに関連しています。 → ルックデベロップメント → シーンの組み立て → ビジュアルエフェクト → ライティング → レンダリング
モデル ¶
-
フェース単位のマテリアル/アトリビュートを必要としない限りは(HoudiniはPolysoupやパックジオメトリを単一プリミティブとみなします)、効率を上げるために、レンダリングする前に最終ジオメトリをパックプリミティブまたはPolysoupに変換します。
-
柔軟性と効率性を最大限に高めるために、モデルをAlembicファイルとしてエクスポートします。Alembicファイルであれば、パイプラインの別のステージが同じプロキシと最終ジオメトリファイルを扱うことができます。シェーダを記述する人、シーンを組む人、FXアーティスト、ライティングする人それぞれがobject appearance editorのサブセッティングと詳細レベルコントロールを使って、同じファイルを参照することができます。
-
Alembicのみが、Houdiniのプリミティブタイプすべてのサブセットをサポートしていることを知っておいてください。それらのプリミティブタイプが必要であれば、ジオメトリを
.bgeo
ファイルとして保存し、ジオメトリをディスク上のパックプリミティブとしてインポートすることができます。 -
HoudiniはAlembicジオメトリをパックプリミティブとしてインポートします。パックプリミティブは、従来の“編集可能”ジオメトリと比較して、Houdiniで高速且つメモリ効率が良く動作します。例えば、パックAlembicプリミティブは、表示するために、メインメモリに保持せずに直接的にディスク上のファイルからグラフィックカードへ“ストリーム”されます。
ルックデベロップメント ¶
-
共有Alembicファイルからモデルをインポートします。
-
最終モデルをマテリアル付きのデジタルアセット、またはAlembicプリミティブにマテリアルを定義したシーンファイルとして保存します。
シーンアセンブリ ¶
-
共有Alembicファイルからモデルをインポートします。
-
カメラをセットアップします。
-
object appearance editorを使って、重いオブジェクトの詳細レベルを下げることで、それらのオブジェクトを扱いやすくします。
-
object appearance editorを使って、カメラビュー外のオブジェクトを非表示にして、読み込みとレンダリングを高速化します。
-
最終作品をAlembicプリミティブにトランスフォームを定義したシーンファイルとして保存します。
ビジュアルエフェクト ¶
-
ほとんどのソルバが、直接的にAlembic/パックプリミティブをサポートしています。可能な限り、それらのプリミティブを使います(ソルバがそれらをサポートしていて、ジオメトリが変形しない時)。
通常のジオメトリを使ってシミュレーション内で複数のオブジェクトを表現する(例えば、粉砕された破片や膨大な量の衝突RBDオブジェクト)時、シミュレーションは、各オブジェクトを別々のDOPオブジェクトとして表現します。パックプリミティブは、内部で別々の破片のジオメトリを持たせることができ(粉砕を参照)、 単一のDOPオブジェクト で表現されます。こうすることで、Houdiniは数百や数千ものDOPオブジェクトを管理するオーバーヘッドがないので、シミュレーションが より 速くなります。
-
変形しないモデルを移動するだけのシミュレーション(例えば、リジッドボディ)では、Alembic/パックプリミティブを表現したポイントのトランスフォームのみを出力することができます。つまり、ライティングが静的モデルで動作し始めて、利用可能な時にシミュレーションしたトランスフォームを適用することができます。
ライティング ¶
-
ルックデベロップメントで作成したマテリアル付きのアセット、シーンアセンブリのオブジェクトトランスフォーム、エフェクトからのアニメーションデータを使用します。
-
Houdiniは内部的にリニアカラー空間で動作し、デフォルトではディスプレイ用に2.2のガンマに変換しています。詳細は、リニアライティングとコンポジットを参照してください。
-
静的ライティングセットアップをハイダイナミックレンジ(HDR)画像に“ベイク”することで、ライティングを最適化し、Environment Lightを使って画像でシーンをライティングします。
レンダリング ¶
-
レンダリングを開始する前にカメラの位置/移動を決めるようにしてください。カメラ内にあるものを知っていれば、カメラ内で表示されるものとカメラ外のものを最適化することができます。
Houdiniのいくつかのツールでは、カメラのフラスタムに基づいてシーンを最適化することができます。例えば、フラスタムの形状内にボリュームボックスを作成して、フラスタム外のジオメトリを隠すことができます。
-
上記の別々の赤、緑、青の3つのライトを使って前面と側面をライティングします。そして、画像をグレーに変換して、コンポジターで赤、緑、青のチャンネルの寄与度をスケールすることでライティングを調整することができます。
-
VFX用のレンダリング:
-
基本となるライティングにHDR画像を使用して、必要に応じてCGライトを追加します。
-
コンポジットを柔軟に扱うために、透明オブジェクトをディープカメラマップとして別々のレンダーパスでレンダリングします。
-
モーションブラーと被写界深度を実写のカメラに合わせる必要があります。PF Trackモーショントラッキングパッケージは、Houdiniにトラッキングデータを生成することができます。
-
プロシージャルレンダリングを使用します。
-
-
実写とCGオブジェクトを融合させるためのレンダリング:
-
モーションブラーと被写界深度を実写のカメラに合わせる必要があります。PF Trackモーショントラッキングパッケージは、Houdiniにトラッキングデータを生成することができます。
-
オブジェクト/地形/キャラクタの画像を切り抜くには、Trace SOPを使って、カメラ空間でUVを生成します。
-
-
フルCGのレンダリング:
-
フルCGは通常では、 膨大な データセット、複雑なシーン、たくさんのシェーダのハンドリングが必要になります。アセットのトラッキングとバージョン管理のワークフローが必要です。
-
レンダリングをプロシージャルに分散させます。
-
AlembicやHoudiniジオメトリプロシージャルシェーダ(レンダリングの時だけジオメトリを読み込みます)を使ってシーンファイルのライティングを保持します。
Houdiniでは、AlembicサーフェスノードによってAlembicジオメトリを特別なプリミティブタイプとして読み込むことができます。また、 File ▸ Import ▸ Alembic メニューアイテムによって、Alembicファイルの内容をノード階層としてインポートすることもできます。
Group Type を Primitives に設定したTransformノードを使って、Alembicプリミティブの要素をトランスフォームすることができます。同様に、Materialノードを使ってMantraマテリアルをAlembicファイルの要素に割り当てることもできます。実ジオメトリを編集することはできません。例えば、ポイント修正や細分化をすることはできません。
-
-
プロシージャルシェーダは、シェーディングするオブジェクトを、そのシェーダ自身のデータに置換するプログラムをコールします。これらのシェーダの名前は、SHOPリストで Mantra で始まります。特定のプロシージャルシェーダの詳細は、それぞれのノードのドキュメントを参照してください:
全般Tips ¶
-
インタラクティブレンダービューを使えば、パラメータ/マテリアルを変更すると、リアルタイムにレンダリングが更新されます。
-
Render Regionツールを使えば、3Dビューポートの一部をレンダリングすることができます。ビューポートで作業を続けると、レンダリング領域が自動的に更新されます。
-
Render Viewのビュースナップショットを使って、設定別に結果をキャプチャーすれば、前後の結果を比較することができます。
-
テイクを使ってレンダリングの設定の試行錯誤や品質のバリエーションを管理します。
-
Houdiniは内部でリニアカラー空間を使います。
-
ボリュームを別々のレンダーパスとしてレンダリングします。
-
コンポジターはファイルの代わりにレンダーノードから画像を引っ張ることができます。Compositeレンダーノードはコンポジットネットワークの結果を“レンダリング”することができます。これによって、レンダリングにHoudiniのコンポジターを統合することができます。例えば、保存する前にレンダリングした画像を修正することができます。
-
ファイル名にフレーム番号を設定する方法と出力ファイル名の役立つ情報に関しては、ファイル名のエクスプレッションを参照してください。
-
一般的にジョブは、すべてのパスが
$HIP
ディレクトリ(.hip
ファイルを含むディレクトリ)に相対になるようにセットアップするべきです。ジョブの規模が大きくなれば、$JOB
と$SITE
などの従来の他の変数を使って、ネットワーク上のリソースを共有した方がよい場合もあります。$HIP/geo
サブディレクトリに.bgeo
ファイルすべてを格納し、レンダーノードが$HIP/pic
サブディレクトリにファイルを書き出す設定にするのが、良いセットアップの例です。 -
画像の出力先を注意して確認してください。 Output Picture を
ip
(MPlayでインタラクティブ表示する)に設定したはジョブはレンダーファームに送ってはいけません。 -
Windowsでは、ネットワーク上のリソース(共有テクスチャマップ)をUNCパスを使って指定するべきです。
-
temp:
ファイルハンドラーはOSの機能を使って一時ファイルを作成します。これらのファイルは、それを作成したプロセスが活動中の間だけ存在し、その後は自動的に片付けられます。これは、レンダリング中にキャッシュ化する必要のないテクスチャとシャドウマップのように生成されるファイルには便利です。例:
temp:shadow_$F.rat
Note
OSに依存しますが、ディレクトリのリスト表示やファイル検索で
temp:
ファイルが表示されなかったり、ディスクに一瞬だけ表示される場合があります。temp:
ファイルはプロセス間でのファイル 共有 では役に立たないことに注意してください。なぜなら、それを作成したプロセス以外のプロセスで使用することができないからです。例えば、フォトンマッピングに
temp:
ファイルを使うことができません。なぜなら、pre-filteringには、rawフォトンの読み書きをする別々のプロセスが必要だからです。HoudiniはOSに
$HOUDINI_TEMP_DIR
の一時ファイルを開くように命令します。Windowsでは、Houdiniはファイルをフラグw+bTD
で開きます。
ポイントとパーティクルの効率的なレンダリング ¶
Mantraでは、パーティクルシステムを作成することなく、“ポイントプリミティブ”を使って、モデル内のポイントを効率的に直接レンダリングすることができます。ポイントレンダリングは、モデル内のポイントをポイント毎に単一シェーダだけを評価して、カメラ方向を向いたディスクとしてレンダリングします。
-
ジオメトリオブジェクトの Render タブの Geometry サブタブをクリックします。
-
Render As Points チェックボックスをオンにします。
-
Mantra Output Driverを使ってレンダリングします。
以下のアトリビュートをSOPで使用することで、パーティクルやポイントのレンダリングを調整することができます。
pscale
またはwidth
レンダリングでパーティクルのサイズを変更することができます。パラメータはPOPの元々のパーティクルサイズを上書きします。このアトリビュートはVertex、Point、Primitive、Detailに追加することができます。
orient
orient
アトリビュートは、ポイントレンダリングでディスクの向きを制御します。向きは、法線ベクトルとして指定します。このアトリビュートはVertex、Pointに追加することができます。
v
VelocityのPointアトリビュートは、パーティクルレンダリングで直線や円柱の長さを制御します。
追加したTipsページ ¶
以下のページにも、Mantraでレンダリングするために役に立つTipsが含まれています。
-
速度 vs. 品質 – 速度と品質を考えてMantraをセットアップする方法。
-
膨大なポリゴンのレンダリング – 非常に複雑なシーンをレンダリングするためにMantraをセットアップする方法。