見出し画像

Houdini19.0 Solaris(USD) 変更点紹介 Part4 Background Plate LOPについて

はじめに

Youtubeにて動画を公開しておりますので、併せてご覧ください。

動画内と同じシーンファイルを配布いたします。
URLは下記になります。
https://drive.google.com/file/d/1ok1UZzKhxcOiC9OhiwswtYGR_Obyqc-J/view?usp=sharing

演習ファイルについての注意:
権利上、当記事では背景に使用した素材を配布することができません。
上記ファイルにはそのデータは含まれておりません。お手数ですが、
利用する際は個別にDLサイトからデータをダウンロードしていただくよう
お願いいたします。
ダウンロード先リンク: https://photo-chips.com/
こちらで「00794」と検索し、データをDLしてください。
配布したhipのデータを開く際には、ダウンロードした画像を
「04_Background_Plate > Background_Picture」のディレクトリ内に
保存してください

スライド2

-------------------------------------------------------

Background Plate LOP

Houdni19.0より、新しく「Background Plate LOP」 が追加され、CGの
実写ショットへの合成の幅が広がりました。このノードを使用することで、画像や動画を使用して、簡単に背景合成ができる他、合成時に発生する地面への影や地面からの反射や映り込みなどを簡単に再現することができます。

「Background Plate LOP」を使用することで、ホールドアウト(「マット」とも呼ばれます)オブジェクトのレンダリング、および背景画像でのレンダリングに必要なさまざまなレンダリング設定をセットアップできます。

具体的には、モデルから落ちる影や背景画像からの反射や映り込みなどを簡単に再現することができます。

「Background Plate LOP」を使用する際には
・Holdout用の面
・背景画像
の2つが最低限必要になります。

この2つを使用し、合成用のモデルの影や、周りからの
映り込みの設定を行います

補足として、今回の解説内では行いませんが、背景画像に合わせて
HDRIなどがあると環境光情報の再現度が向上します。

では、実際に使用方法を解説に移っていきます。

具体的な使用方法

今回は、以下の画像のテストジオメトリに対いて鏡面を持つ
金属のマテリアルをアサインした物を使用します。

画像2

このモデルと上記で解説している「Holdout用の面」「背景画像」を
使用して背景の合成を行います。

合成用のモデルの準備ができたら、まずは「Holdout用の面」を
用意します。

そのために、新しく「SOP Create LOP」を使用して面となる
「Grid」を作成します。
こちらはTabキーをクリックし、直接「Grid」と入力することで、自動的にGridが作成された「SOP Create LOP」を呼び出すことも可能です。

画像3

ここでは、すでに作成されているシーングラフに対して
作成したGridを追加しています。

これで、「Holdout用の面」の準備は完了です。
次に、シーンビューに対して背景を読み込みます。

そのために、Houdini19.0より新しく追加された
Background Plate LOP」を使用します。
新しく「Background Plate LOP」を作成し、ネットワークの下流に接続します。

画像4

接続した状態で、ノードにディスプレイフラグを立てても現状では変化はありません。このノード内で、背景に使用する画像と「Holdout用の面」のプリムを指定する必要があります。

まずは、背景に使用する画像を選択します。
パラメータ内の「Background」の項目内にある「Plate」の
パラメータに対して、任意の画像を指定し、ノード内に読み込みます。

画像5

画像が読み込めたら、「Holdout用の面」のプリムをパラメータ上部の「Primitives」にて指定します。
ここには、シーングラフから「Holdout用の面」の「grid1」を
ドラッグアンドドロップします。

画像6

すると、下の画像のように、先ほどまで表示されていた地面(Holdout用の面)がシーンビューから消えます。こちらは地面がなくなっているわけではなく、「Holdout用の面」として設定を行ったため、一時的に面が確認できなくなっているだけになります。

画像7

これで、Background Plateを使用する準備は完了です。

しかしこのままでは、シーンビュー上で背景を確認することはできません。
背景を表示させるためには「レンダーセッティングの行えるノード」が必要です。具体的には「Karma LOP」や「Karma Render Property LOP」が必要です。

今回は、そのままレンダリングを行うため、「Karma LOP」を使用します。

新しく、「Karma LOP」を作成し、各入力を「Background Plate LOP」の
各出力と接続します。

画像8

※ここで、第2出力を「Karma LOP」の第2入力に対していない場合、背景を表示することはできますが、「Holdout用の面」に対して落ちている影を表示することができなくなります。

こちらが接続できたら、画像に対してのモデルの位置を調整します。

この際に、背景の画像は動かないため、モデルの位置を変更する、または、カメラのアングルを調整し、モデルの位置を決定します。

今回は、カメラを新しく作成し、モデルの位置を調整しています。

画像9

このように、レイアウトを行い、合成用の背景に対して位置合わせを行います。

しかし、この作業時にもわかるように現状ではモデルは背景上に表示されていますが、影が表示されていません。
影を表示させるためには、「Karma LOP」に対して手順を加える必要があります。

そのため、一度「Karma LOP」を選択し、パラメータの「Image Output」のタブ内の「AOVs (Render Vars)」のタブの一番上にある「Import Render Vars From Second Input」のトグルを有効にします。

画像10

そうすると、シーンビューに表示されているモデルの影が背景の
画像上に表示されます
以下の画像が「Import Render Vars From Second Input」を
有効にした際と無効にした際の比較画像です。

画像11

このように、「Import Render Vars From Second Input」を有効に
することで、背景画像に対して、影を合成することができます。

このように、シーンと背景を合成することができるのが、「Background Plate LOP」の機能です。

以上が基本的な「Background Plate LOP」の使用方法です。

背景に動画を読み込む方法

ここからはもう少し詳しい機能について説明していきます。

はじめに、記事の冒頭でも記載がありますが、「Background Plate LOP」は、「画像」や「動画」を使用して、簡単に背景合成ができます。

先ほどまでは、静止画を使用して背景合成を行っていましたが、
動画を使用した背景合成も可能です。

注意点として、動画を「Background Plate LOP」に対して読み込む場合は、「連番ファイル」にて読み込む必要があります
.mp4」といったような動画の形式でのファイルは
読み込むことができません。

実際に、「Plate」のパラメータに対して、動画の連番ファイルを読み込みます。

画像12

そうすることでシーンビュー上で動画を表示することができます。

以下の画像が動画の連番ファイルを読み込んだシーンの一部フレームを抜粋したものです。
連番ファイルを読み込むことで、フレームごとに連番ファイルが読み込まれ、タイムスライダーの位置(フレーム)に応じて背景を読み込み、それに合わせて合成を行うことが可能になります。

画像13

動画でご覧いただくとより分かりやすいかと思います。
↓該当箇所から再生されます。

このように、画像だけでなく、動画に対しても同様に、
「Background Plate LOP」を使用して合成を行うことが可能です。

こちらが動画を読み込み、合成を行う手順となります。

Offscreen Texture

次に「Offscreen Texture」についてです。
こちらの機能は、背景プレートがカメラビューを完全に覆っていない場合に、「実際の」背景(空のスペース)が透けて見えるのを防ぐ機能です。
こちらを有効にすることで、空のスペースをテクスチャに置き換えます。
オフのままの場合は、パラメータにて設定可能なオフスクリーンカラーで空のスペースを埋めるように設定されています。

今回は、テクスチャの穴の開いた部分を視認しやすくなるように、HDRIを無効にしています。

画像14

このモデルの表面にある黒い部分が背景の適用されていない穴の部分になります。

まず初めに、「Offscreen Color」のパラメータを変更してみます。
こちらのカラーを変更することで、穴の開いている部分
(背景が適用されていない部分)の色を変更することができます。
今回は、ピンクに変更します。

画像15

するとこのように、先ほどまで黒色で表示された穴の部分がピンクに
変更され、穴の開いている部分の視認性をあげることができます。

それでは、実際に、ピンク色で表示されたている穴を埋めていきます。
そのために、パラメータの「Use Offscreen Texture」の
トグルを有効にします。

画像16

有効にすると、先ほどまでとパラメータの内容が変わり、
「Offscreen Color」のパラメータの代わりに、「Offscreen Texture」と「Rotate」のパラメータが表示されます。

画像17

その中の「Offscreen Texture」のパラメータに対して、穴埋めに使用したい画像を選択します。

画像18

そうすることにより、先ほどまで穴になっていた部分に対して、指定した画像が挿入され、穴を埋めることができます。

このようにして、背景との合成時の映り込みや反射の調整を
行うことが可能です。

さらに、ほかにも「Holdout AOVs」のパラメータを使用して、作成するAOVの種類の変更も可能です。

Shadows
すべてのホールドアウトシャドウを単一のAOVに記録するか、
ライトLPEタグごとに個別のAOVを生成するかの設定が可能です。

Diffuse
有効にすることで、ホールドアウトオブジェクトの
拡散バウンスのAOVを生成します。

Emission
有効にすることで、ホールドアウトオブジェクトの
発光のAOVを生成します。

Glossy Reflection
有効にすることで、ホールドアウトオブジェクトの光沢のある反射のAOVを生成します。
無効の場合は、背景シェーダーは拡散のみになり、反射率とメタリックシェーダーのパラメータは0に設定されます。

Reflection Occlusion
「Glossy Reflection」が有効な場合、すべての
ホールドアウト反射オクルージョンを1つのAOVに記録するか、
各ライトLPEタグに個別のAOVを生成するかを設定します。

以上のことが設定可能となります。

Background Plateのレンダリング

最後に、「Background Plate LOP」を使用した
ネットワークのレンダリング方法を解説します。
基本的には、通常のKarmaのレンダリングと同じ方法で、レンダリングを行うことが可能です。

しかしながら、レンダリング時には、「Background Plate LOP」を使用してシーンビューに表示している背景画像を合わせて
レンダリングすることができません
シーンビューと同じ結果を出力する際には、「COP2」内で編集を行う必要があります。ではそちらの設定方法を説明していきます。

まずは、一度「Karma LOP」を使用して「Background Plate LOP」を
使用したモデルをレンダリングします。

その際に、「Background Plate LOP」のパラメータ内の「Holdout AOVs」内にある「Diffuse」「Emission」「Glossy Reflection」の
トグルを有効にします。

これによって、DiffuseやEmissionなどのAOVのデータを
内包したデータをレンダリングできます。

画像19

レンダリング結果は以下です
※ここでは、影を確認できませんが、コンポジット時には情報を持った状態でコンポジットが可能です。

画像20

このように、背景がレンダリングされません
しかし、背景の映り込みと環境光の映り込みがレンダリングされます。

ここでは表示されませんが、実際にレンダリングした際には
複数のAOVのデータを内包した状態でレンダリングが行われています。

ここで実際にレンダリングされたデータが持つ情報は以下の5つです。

・「holdout_diffuse
・「holdout_emission
・「holdout_reflection
・「holdout_reflection_occlusion
・「holdout_shadows

これらの情報を内包しています。
具体的な結果が以下です。

画像21

このように、レンダリング結果にAOVを内包しています。
では、こちらのデータを用い、COP2を使用して合成を行います。

一度「COP2」の階層に移動します。
今回は、「COP2 Network」のノードを作成し、中に入ります。
また、それに合わせて、新しく「Composite View」のタブを追加します。

画像22

こちらが準備できたら、ダブルクリックで中の階層に入ります。

まずは新しく「File COP」を使用して、先度レンダリングしたデータを読み込みます。

画像23

次に、このデータが内包している「Holdout」に関するデータを分離していきます

新しく「Channel Copy COP」を合計で5つ作成します。
そして、すべての第1入力を「File COP」と接続し、それぞれのパラメータで、先ほど説明したHoldoutに関するAOVデータ5つを呼び出します。

その際には、パラメータの「Source」の項目内で
・「holdout_diffuse
・「holdout_emission
・「holdout_reflection
・「holdout_reflection_occlusion
・「holdout_shadows
の5つをそれぞれ指定します。

画像24

これですべての要素の分離ができました。
ではこれらをコンポジットしていきます。

はじめに、影の部分の「holdout_shadows」と「holdout_reflection_occlusion」の2つを
Add COP」によって加算します。

しかし、この状態では影が白くなってしまっているため、
Invert COP」を使用して色反転を行います。

画像25

次に、地面へのう映り込みを合成します。
まず、「holdout_diffuse」と「holdout_emission」を
「Add COP」によって加算合成します。
そのあとにさらに、「holdout_reflection」を「Add COP」によって加算合成します。

画像26

これで照り返しなどの画素合成は終了です。

次に、合成した素材を背景画像と合成します。
新しく「File COP」を作成し、背景用の素材を読み込みます。

画像27

こちらが読み込めたら、先ほど合成をした素材と合成していきます。

新しく、「Multiply COP」を作成し、背景に対して、
影のレイヤーを乗算合成します。

画像28

さらに、それに対して、照り返しなどのレイヤーを「Add COP」を使用して加算合成します。

画像29

これによって、モデルの影と地面への反射などを背景に対して合成することができます。
そして最後に、「Over COP」を使用して、モデルのレイヤーを重ねます。

画像30

これで、シーンビューで表示されていたシーンと同じ結果を作成することができます。

こちらは、「ROP File Output COP」を使用することで、レンダリングが可能です。

画像31

そして、ここで合成した結果が以下のようになります。

画像32

このように、「Background Plate LOP」を使用して作成した影などを重ねた画像を出力することができます。

※今回は、Houdini内でコンポジットを行いましたが、これらは
Nukeなどでも同様合成が可能です。

このように、「Background Plate LOP」を使用し、「Holdout」を作成し、
レンダリングを行い、出力されたAOVを使用してコンポジットを
行うことで、背景との合成をより柔軟に行うことが可能になりました。

以上が、「Background Plate」の使用方法です。

----------------------------------------------------------------

今回の記事はここまでとなります。
閲覧していただきありがとうございました。

この記事が気に入ったらサポートをしてみませんか?