On this page |
はじめに ¶
このチュートリアルでは、“ライティング”部署の役を演じましょう。 レイアウト のUSDファイルと FX のUSDファイルを読み込んで、シーンをライティングして行きます。 もちろん、プロダクションパイプラインでは、他にもたくさんの部署が存在し、使用するレイヤーがもっとたくさんあることでしょう。
ここで注意すべき事は、必ずしも FX レイヤーも レイアウト レイヤーも1枚しか存在しないとは限らないことです。
例えば、個々のディスク上のUSD
ファイルによって表現された複数枚のFXレイヤーが存在する可能性があります(むしろ、その方が多いです)。
このチュートリアルでは、これらのUSD
ファイルを手動で探していますが、プロダクションパイプラインでは、これを何かしらの方法で自動化するのが望ましいです。
では、始めましょう。作業の度にlops_tutorial_6.1.hip
のような名前でファイルを頻繁に保存することを忘れないでください。
開始 ¶
-
新規でHoudiniを起動します。
-
Solaris デスクトップに切り替えます。
Scene Graph Tree がパネルのどれかになっていることを確認します。
-
ネットワークエディタで、
/stage
に移動します。Note
Houdini内のどのレベルでもLOPネットワークを作成することができますが、わかりやすくするために、
/stage
内で作業しましょう。
レイアウトのUSDファイルとFXのUSDファイルを読み込む ¶
まず最初にすべき事は、レイアウト部署とFX部署からのUSDファイルを読み込む事です。
-
Sublayer LOPを作成します。
-
前回のチュートリアルで使用したレイアウトのUSDファイルを読み込みます。例:
$HIP/tutorials/shot004_layout_v001.usda
-
名前を“layout”に変更します。
-
-
この layout ノードをALTドラッグしてコピーを作成します。
-
コピーしたノードの名前を“fx”に変更し、 layout ノードに接続します。
-
この名前を変更したノードでは、前回のチュートリアルで保存したFXのUSDファイルを読み込みます。レイアウトとFXが合成されたUSDではなくて、FXのみのUSDを読み込んでください。例:
$HIP/tutorials/shot004/fx/fx_v001.usda
-
-
プレイバーをスクラブすると、シーン全体にFXレイヤーが適用されているが分かります。 この fx ノードを無効にすると、そのFXアニメーションが消えて、元のレイアウトに戻るはずです。
FXレイヤーをミュートにする ¶
Scene Graph Layersパネルを開きます。 ここには、シーン内のレイヤーが表示され、“Mute in Viewer”項目があります。 この項目を使って、一時的に特定のレイヤーの寄与を無効にすることができます(例えば、あまりにも重すぎてインタラクティブに作業できない場合)。
もちろん、このチュートリアルでは、 FX レイヤーはたいして重くないので、レイヤーをミュートにしないで続けましょう。
ライティング ¶
デフォルトのライティングをミュートにする ¶
まず最初に、レイアウトのライティングをミュートにしましょう。
-
Scene Graph Tree に進んで、ミュートにしたいライト(s)の“V”項目の“目”のアイコンを切り替えます(下図の#1を参照)。
-
Scene Graph Tree 内では、いくつかプリセットを保存することもできます(下図の#2を参照)。
-
ツリー展開(現行ツリーをビューアに表示する方法)。
-
ビューポートのオーバーライド(コラムを切り替える方法)。
-
Load Masks(例えば、さきほど試したFXレイヤーのミュートは、この“Load Mask”に該当します)。
-
Tip
さきほどのFXレイヤーのミュートは、このHoudiniセッションにのみ限定されています。 これらの状態をUSDファイルとして保存したかったのであれば、その手っ取り早い方法は、 Load Masks ドロップダウンを開いて、“Create Configure Stage Node from Load Mask”を選択することです。これは、すべて適切に設定されたConfigure Stage LOPを自動的に作成します。
Layer Break(レイヤー分離) ¶
独自にライティングを作成する前に、Layer BreakしたいことをLOPsに伝える必要があります。 新しいライトだけをライティングのUSDファイルに書き出したいです。 Layer Break の概念は非常に重要なので、よくわかっていないのであれば、このドキュメントに必ず目を通してください。
-
Layer Break LOPを接続します。
シーケンスライティングを削除する ¶
Scene Graph Tree でライトの可視性を変更した方もいるかと思います。 この変更は、現行Houdiniセッションにのみ限定されているので、出荷されたUSDファイルからシーンを構築する場合、シーケンスライトがシーンのライティングに寄与しないようにするために、そのライトを Prune(削除) する必要があります。
-
Prune LOPを接続します。
Primitive Pattern/lights/Layout/*
(開いているレイアウトUSDによっては/Scene/Lights/*
)
USDでのライトは、非表示も非アクティブもどちらも同じなので、“Method”パラメータはデフォルトの“Make Invisible”のままにします。 これは、Houdiniの場合と異なることに注意してください。Houdiniでは、ライトを非表示にしても、シーンへのライトの寄与には影響しません。
ショットライティングの作成 ¶
では、独自にライティングを追加しましょう。
-
ビューポート内で、最初のライトの視点になるようにビューを回転させます。
-
LOP Lights and Cameras シェルフタブをクリックしてから、配置したいライトの種類を⌃ Ctrlクリックします。これによって、ビューポートとほぼ同じビューでシーン内にライトが配置されます。
-
追加したライトの Primitive Path パラメータを変更します。ライトをUSDツリーの/lights直下よりも、“lighting”フォルダ内に存在させたいです。
/lights/lighting/$OS
-
欲しいライトの数だけ繰り返します。
テストレンダリング ¶
Viewportドロップダウンメニューから“Karma”を選択します。
Light Mixerを使用する ¶
これから Light Mixer を使用して、ライトの全部(または一部)に簡単にアクセスしてみたいと思います。
-
ノードチェーン内の最後のライトにLight Mixer LOPを接続します。
-
このLight Mixer LOP上で、制御できるようにしたいライトを右側のパネルにドラッグします。
-
好きなようにライトを調整します。
USDファイルへ書き出す ¶
これで、ライティングUSDファイルを書き出す準備ができました。 これがパイプラインの最終到着地点であれば、不要かもしませんが、途中のパイプラインでは、クリーン且つ最新のシーンであることを保証するためにレンダリング時にゼロからシーンを再構築する必要があります。 今回は、ライティングをUSDファイルとしてディスクへ書き出す必要があります。
-
ノードチェーンの最後のLOPにUSD ROP LOPを接続します。
Output File$HIP/tutorials/shot004_lighting_v001.usd
-
Save to Disk
を押して、ライティングレイヤーをディスクへ保存します。ライトをアニメーションさせない限りは、フレーム範囲を保存する必要はありません。
ノードツリーが下図のようになっているはずです:
-
Houdiniシーンを保存して、次に進みます。
ライティングのレイヤーを読み直す ¶
すべてがうまくいっているのか確認するために、 ライティング のUSDレイヤーを読み込みましょう。
-
新しいHoudiniセッションで、3個の Sublayer LOPを追加して、それぞれレイアウト、FX、ライティングのUSDファイルを読み込み、一列に接続すれば、 ライティング部署 によるライティング結果が表示されるはずです。
整理に関するメモ ¶
これまでのチュートリアルから、USDステージを整理することが非常に大事であることがわかりました。 ここでは、留意すべきいくつかの経験則を載せています:
-
あるファイルを参照させる予定であるなら、そのファイル内のPrimsは、単一ルートPrim下で構築するようにしてください。 例:
/scene/geo
、/scene/cameras
、/scene/lights
。 -
サブレイヤーにしたいファイルを書き出す場合、複数のルートPrimsを持たせたほうが良いでしょう。 例:
/lights
、/cameras
、/geo
。-
“ライティング”を部署と考えることができ、各部署は、シーン全体にサブレイヤー化された独自のレイヤー(“ライト”)を持ちます。
-
これによって、Sublayer LOPを介して、必要な部署のみを取り込むのが非常に簡単になります。
-
-
特定のアセット(車のヘッドライト)にライトを追加する時、(トランスフォームの継承を正しく行ないたい場合にのみ)モデル階層の中にそのライトを配置したいことでしょう。 例:
/asset/headlight/geo
、/asset/headlight/light
、/asset/headlight/material
。