Houdini 19.5 Solaris

LOPs入門チュートリアル 6 ライティング部署編: ショットライティング

パイプラインの最後は、すべての上流の部署から累積された寄与に対してライティングをします。これは、プロダクションパイプラインのステージの1つである ライティング の小規模版です。

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 の概念は非常に重要なので、よくわかっていないのであれば、このドキュメントに必ず目を通してください。

シーケンスライティングを削除する

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”フォルダ内に存在させたいです。

Primitive Path

/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

Solaris

USD

ジオメトリ

  • SOPをUSDに取り込む方法

    HoudiniがSOPジオメトリをUSDに変換する方法、その工程を制御する方法の詳細。

  • Component Builder

    Component Builderツールは、マテリアル、バリアント、ペイロード、レイヤーをサポートし、SOPからUSDモデルを作成するためのネットワークスニペットを配置します。

レイアウト

  • Editノード

    ビューア内でインタラクティブにPrimsをトランスフォームさせます。物理衝突を使用して、プロップを現実的に配置することができます。

  • Layoutノード

    インスタンス化されたUSDアセットをシーンに取り込むツールが備わっています。個々にコンポーネントを配置したり、カスタマイズ可能なブラシを使って色々な方法でコンポーネントをペイント/スキャッターしたり、既存のインスタンスを編集することができます。

  • カスタムレイアウトブラシ

    Layout LOPの挙動をカスタマイズして利用可能なレイアウトブラシデジタルアセットの作成方法。

シェーディング

  • シェーダフレームワーク

    シェーダノードのUSDプリミティブへの変換を含む、Solarisシェーディングフレームについて説明しています。

  • SolarisでのMaterialXの使い方

    HoudiniにはMaterialXシェーダノードに呼応させたVOPノードが用意されています。これらのノードを使用してシェーダネットワークを構築したり、既存のMaterialXシェーダをインポートすることで、(HoudiniのUSDレンダラーの)KarmaでMaterialXシェーダノードを利用することができます。

  • UDIM

    テクスチャ空間の異なるタイルを、それぞれ別の解像度で、異なるテクスチャファイルにエンコードすることができます。その後、kaiju.exrといったテクスチャファイル名を指定すると、Houdiniがロード時にそのトークンを特定のタイルアドレスに置き換えてくれます。

Karmaレンダリング

チュートリアル