Background Plate  [Mardini2024]

これはMardini2024のDay9 Background Plateの動画を視聴してまとめたものです。

[動画](https://www.youtube.com/watch?v=jGuXfHU7Pv0)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/d2bdb268-66c7-33bb-dbc0-c09b54d188e8.png)

[公式のサンプルファイル](https://media.sidefx.com/uploads/contests/mardini2024/moeen_videos/mardini_examples_day9_background_plate_lop.zip)

[Day8 Karma Fog Box](https://qiita.com/jyouryuusui/items/87f0b3dcac84fb551dfe) | Day9 Background Plate | [Day10 Karma Physical Sky](https://qiita.com/jyouryuusui/items/c420cf5e3af1a623eff4)

Background Plateを使えば、実写の背景プレートにCGオブジェクトを合成できます。影やグロー、反射などの相互作用も再現可能です。

# 要約

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/f21e5e88-43cb-e8b3-7fcb-4a2aa0bad4a1.png)


- Background PlateノードはLOPコンテキストで動作する
- 背景プレートの画像と、CGオブジェクトの3Dジオメトリが必要
- マットオブジェクトを指定すると、プレートから切り抜かれる
- 影やグロー、反射がプレートに合成される
- 最終的な合成画像をレンダリングできる
- 個別のレンダリングパスも出力可能

# サンプルファイル

シーンのhip以外に、背景写真が含まれています
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/438a19c4-5cc2-292c-ee37-e9c54e8d01c0.png)

## SOP

キャンドルのモデルとテーブルのモデル、カメラが含まれます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/5c70d2bb-ead2-4883-17fe-bb7dba4084aa.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/cded2a63-9c19-4fc3-8374-3679d4d21af5.png)


## stage 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/fb569067-fcd5-f958-fdcb-373164b83c57.png)


が含まれています

## 操作手順

### カメラの設定
- カメラにバックグラウンド画像を追加します。
   - マッチさせる必要があるシングルフレームのスクリーンキャプチャ
       - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/438a19c4-5cc2-292c-ee37-e9c54e8d01c0.png)
   - OBJカメラ（ViewタブのBackground Image）にバックグラウンド画像として割り当て可能
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/9d88772e-f534-2736-8efd-00ef0d46b1e3.png)
- カメラのビューオプションをHidden Line Invisibleに設定し、ジオメトリのラインが見えるようにします
   - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/631c5dc4-42b8-c6ad-1834-eb921ce9e75b.png)
- 目で見ながら、バックグラウンド画像とジオメトリを可能な限り一致させます。正確にマッチさせるには、オブジェクトトラッキングやカメラトラッキングができるサードパーティ製アプリケーションの使用を検討してください
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/56420044-b7ae-4bcd-488e-e4cd1718c2c3.png)


### stageの設定
- キャンドル1、キャンドル2、キャンドル3、テーブルサーフェスの3つのジオメトリを作成します
- これらのジオメトリにマテリアルを割り当てるマテリアルライブラリを追加します
- カメラを追加し、2つのエリアライトを配置して、プレートのライティングとマッチさせます
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/d99b31d2-f2eb-53d3-3532-b72002992a87.png)
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/8ff19ef7-a89a-b555-bb10-ba028ef15b89.png)


### Background Plate LOPの設定
   - Background Plate LOPノードをエリアライトの後ろに接続します
   - Background Plate LOPのPrimitivesパラメータに、マットオブジェクトとして扱うジオメトリを設定します
       - Scene Graph Pathからキャンドル1、キャンドル2、テーブルサーフェスを選択し、Primitivesにドラッグ＆ドロップします
       - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/a178b2c8-0270-c306-6d2a-fc0ddf67254f.png)
       - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/ca09114c-5bc4-790c-8136-5a0d599d4d45.png)
       - これらのオブジェクトは、影やリフレクションをキャッチしますが、レンダリングには表示されません
       - stage上のカメラのviewに画像を適用すると、一見問題なく表示できるように思えますが、、
           - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/b0557c0f-f1a3-e009-fc61-ff7eee9fd896.png)
           - キャンドル３の影が落ちていないことが確認できます
               - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/729fd5a1-a2af-ed61-735e-939bda902081.png)

   - よって画像はカメラではなくBackground Plateノードの Plateパラメータで、使用する画像を選択します　先程のカメラのviewでの画像指定は削除します
       - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/e32c6fc7-1ff3-84e2-ffb2-704e818193e2.png)
       - Plateを指定した段階では、画像は表示されないためKarma Render Settingを追加して画像を表示させます
           - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/5bca6edf-3a7c-a36e-aa8e-b16d8b7b3f0f.png)



### レンダリングの設定
- Karma Render Settingsノードを追加し、1番目の入力と2番目の入力をBackground Plate LOPに接続します
   - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/3cd54003-5917-9899-cf9b-7e0f6436d1b6.png)
   - 繋いだ状態は引き伸ばされた状態に見えます
       - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/8b583bbc-7110-92fd-b28d-17c3c5fdaa2f.png)
- カメラの解像度（Resolution Mode:Manual）を実際のショットと一致するように設定します（1080x1920）
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/6f58f0bf-cec7-a1ad-0eb8-a2b7023acb9c.png)


- Karma Render SettingsノードのImage Outputセクションで、AOVs(Render Vars)から、Import Render Vars From Second Inputを有効にします。これにより、Background Plate LOPからAOVsが取り込まれます
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/27df20f4-eaad-bd4f-f53c-c9e3cfeba4b1.png)
    - Import Render Vars From Second Input無効
        - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/f91f14ed-a958-8293-4a44-c296f093226d.png)
    - Import Render Vars From Second Input有効
        - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/e5ddbb99-a2a4-e552-f779-50623cbb5270.png)


### レンダリング
   - ビューポートの右側にあるRender Outputsで、Hold Out Shadows、Hold Out Reflection Occlusionなどのレイヤーを確認できます
       - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/9e93dac1-7eb5-cc82-c0b4-adf785ff75bb.png)
   - 最終的な合成をレンダリングするには、Render Settings Editノードを追加します
       - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/166b88cd-1312-3883-72c0-2ded2db13d23.png)
   - Render Settings EditノードのKarmaタブのImageセクションで、Use Backgroundを有効にします。これにより、バックグラウンドがレンダリングに含まれます
       - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/b491e203-60ef-e679-0198-f61c963b30a2.png)
       - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/ac79fbbf-8320-9792-879a-4cc711ab6970.png)
       - レンダリングの結果を出力するためにUSD Rrender ROPを追加します
       - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/081ceda6-fa7a-4aad-f1bd-2c957facad49.png)
       - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/88883646-013e-67b4-d29e-bee921c8b2db.png)



   - 個々のレンダーレイヤーが必要な場合は、Use Backgroundを無効にします。

### エミッションの追加
   - Sphereを追加します
       - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/4417e9d0-7cf3-c3d8-5f0a-a28906dafae8.png)
       - Emissionを持つマテリアルを適用します
           - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/a84e1ad5-6f4b-42ef-95b0-a778630076f7.png)

   - エミッシブオブジェクトを追加するには、Background Plate LOPノードの下部にあるEmissionを有効にします
       - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/b9e0ae27-c604-026c-5099-12859f0f3986.png)
   - これにより、エミッシブオブジェクトがバックグラウンドプレート内のオブジェクトにライトを投影するようになります
       - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151589/f21e5e88-43cb-e8b3-7fcb-4a2aa0bad4a1.png)

# まとめ

Houdiniを使ってバックグラウンドプレートにCGエレメントを統合し、影、リフレクション、エミッションなどのインタラクションを含む最終レンダリングを作成することができます。レンダリングされた個々のレイヤーは、コンポジットソフトでさらに調整が可能です。