Houdini Solaris Karmaを使ってライティング・カメラセットを作る（.hip）

この記事は [Universal Scene Description Advent Calendar 2022]( https://qiita.com/advent-calendar/2022/usd ) 18日目の記事です。

主にHoudini Solarisを使い、アーティスト寄りの視点からお伝えします。
Solarisの機能については2021の記事[「アーティスト視点の主観的USDの価値」]( https://qiita.com/55hertz/items/39f46015e9e4aab4a2b5 )でも便利だと感じた部分を紹介しています。

***
## はじめに
前回に続いてUSDとSolarisを用いて制作を便利にすることを目的に、Karmaでレンダリング可能なライティングとカメラの切り替えセットを作ることにしました。
![gif_anim.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/dc7086dd-76fa-dfa3-81e9-2940ee30be4e.gif)
※記事中の画像はジオメトリなどhipファイルと異なる部分があります。

### Karmaを使う理由
これまでレンダリングにRedshiftを主に使ってきたのですが、SolarisとRedshiftを使う際にシェーダーやカメラなどの対応に手間どってしまい、モデリング以降の環境をMaterialXとKarmaに統一して単純化したいという動機です。

### 作成ポイント
- ライト・カメラセットの切り替え　
- 代表的なプリセットの作成
- light mixerを用いた調整
- その他
    - ライトプロファイルIESの使用

### 参考記事
- [Lighting in Solaris 4 | Multi-shot Setup](https://youtu.be/gRFBMnAnl_c)　 ※[公式チュートリアル](https://www.sidefx.com/tutorials/lighting-in-solaris)の一部
カメラスイッチの制御方法（別解）


### 作業環境
Houdini indie 19.5.435

Windows 10 home
CPU RYZEN 9 4900H
memory 40GB
GPU RTX2060 6GB
***

## LOPネットワーク

### 全体
5種類の人物向けライティング・カメラセットをSwitchで切り替えながらプレビューします。
<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/bc41db0a-820c-4bfa-4a1b-dc66c13a17a4.jpeg">


### 各セット
ライトとカメラを組み合わせてLight mixerで調整。
<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/9dbf15ec-3fb8-3cb3-1b09-86772bc1696e.png">

作成したセットを Switch でフレーム数によって切り替えています。
<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/117c1519-7376-af80-6429-6de9330da550.jpeg">


### Karma fog box
Karma render settings の前にある Karma fog box を on にすると fog によってボリュームライティングにもできます。
<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/f39e5316-c8b0-6973-d433-4b9a0bd6a496.jpeg">
パラメータで Density やエリアサイズなどを調整。
<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/d50fc819-fae2-4888-607a-0b694338138b.jpeg">

### Render settings camera
ビューポートで "Render settings camera" を指定することで自動的にカメラ切り替えができます。
<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/e46d768d-99ba-5836-b13f-6ea724554766.jpeg">

※ここでカメラが自動で変更されず、原因がわからず迷子になりました。
少し前の[公式フォーラム](https://www.sidefx.com/forum/topic/86867/)にも同様の話題があり、ライトを追加したら動作しなくなったとか。
解決策が回答されており、

>とりあえずカメラオブジェクト名を同一にしておくと動く
 by スタッフ回答（筆者訳）

ということで名称を統一して解決しました。
そのうち異なるカメラオブジェクト名でも動作するようになるかも。


#### パラメータ設定
これを
※カメラ名がノード名（camera1,2...）
<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/0af10850-247e-10de-4076-9e9f3af7d9ae.jpeg">
こうして
※カメラ名を統一（render_camera_set）
<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/1a9746c7-8e30-2b25-c445-7889500c554e.jpeg">
こう
※Render settings の camera に指定
<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/55195985-0e45-c75c-c064-117991720a9d.jpeg">


### セット終端Null
各セットの終端にNullを挟んでおくと編集後もパス名の変更が発生しないので便利だと思います。
<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/89866a4b-6a94-af51-de2a-b07260d17471.png">




## ライト・カメラ
ライトとカメラの人物撮影用セットを作成しました。
※hipにはPaulではなくTommyが入っています。

### 1.　1灯
<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/4ea766ec-f934-7aa7-08e4-fa4c88ca415a.jpeg">

<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/e431ef32-2f82-4cfd-6f48-ea1c447ee2f4.jpeg">


### 2.　2灯
<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/be34b622-14b0-6c41-e234-135a68dbfc0e.jpeg">

<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/95cf0331-d3bd-10be-607e-1a4b176101d6.jpeg">


### 3.　3灯
<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/69f117fb-3c15-0146-3f66-fa338a5969f4.jpeg">

<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/12eb563c-a2ec-8598-2326-4176e0011981.jpeg">



### 4.　3灯-2
<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/ba96fa24-bbdf-5676-b440-b485b4824cb6.jpeg">

<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/c2a6e067-2fa0-8546-7d06-b040f574a8dd.jpeg">


### 5.　1灯 リングライト
これのみ他と異なる構成で少し重いです。
リングライトの再現にライトインスタンスを円形に配置し、映り込み用にジオメトリライトを作成しています。
目へのハイライトと背面に被写体の影が落ちるのが特徴、映り込みは別途調整が必要です。

<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/d80d6190-3b94-56af-3363-43b227fccbab.jpeg">

<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/86513e53-0886-79f0-da58-3b4e24a34af8.jpeg">

ジオメトリライトはMaterialX standard_surface emittion で発光設定をした後、Render geometry settings の Treat as light source を on にしています。

<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/627c6f82-2563-ca23-b9fa-0092f3ad214a.jpeg">

#### XPU対応
[H19.5未対応](https://www.sidefx.com/docs/houdini/solaris/karma_xpu.html#lighting)とあるジオメトリライトもXPU対応しているようです。
<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/7012dbd9-e618-4bd0-e380-3e82b00a1699.jpeg">

### Automatic Headlight Creation
Karma Rendersettings にはシーン内に有効なライトがない場合に自動的にヘッドライトを追加する Automatic Headlight Creation があり、デフォルトでチェックが入っています。

<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/fdafed24-2c2e-3507-2b8e-78d0d04e92ca.jpeg">

ジオメトリライトのみだとライトなしとみなされるので、そのようなシーンではチェックを外しておく必要があります。

Automatic Headlight Creation "on"
ライトがない状態でも自動で明るくなる
<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/5aa04142-6849-4586-e37b-ac878c12df6e.jpeg">

Automatic Headlight Creation "off"
自動で明るくならない
<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/2505cfa0-c508-d05e-a971-2cb72f46efb2.jpeg">






***
## その他
今回は使用しませんでしたが関連があり使いそうなものを調べました。

### IES

>IES はIlluminating Engineering Societyの略です。
IES データ形式は、点光源からの光の分布を表します。ライトの主要メーカーのほとんどは、無料でダウンロードできる IES プロファイルを提供しています。
Redshift IES ライトは、IES プロファイルを使用してライトの強度と分布を定義します。
以下は、さまざまな IES ライト プロファイルの例です。大幅に異なる配光パターンに注意してください。
><img width="360" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/4d53558e-0131-e638-ccfc-92776f38b506.png">
Maxon（ https://help.maxon.net/r3d/houdini/en-us/index.html#html/IES+Light.html ）より筆者訳

実在する照明器具のIESを使用することで現実により近いライティング結果を得ることに役立ちます。

### 参考サイト
[ies library](https://ieslibrary.com/en/home)
300,000以上のプレビュー付きのIESファイルを提供。

[IES Profiles](https://renderman.pixar.com/ies-profiles)
Pixar提供のIESプロファイル19種のライブラリー。パブリックドメイン。

[Silversun](https://www.silversunlighting.com)
照明器具メーカー。Productから照明器具ごとにIESファイルが探せる。
Projectから工業、オフィス、店舗、屋外など分野ごとの実例紹介もあり参考になる。


### IESの読み込み
前述のサイト等から取得したiesファイルをStage内の Light に読み込み、照度の変更は Base Properties の Intensity から調整します。
<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233336/8bea93f6-9be5-1b7d-fbb1-83f70f3547a7.jpeg">


## おわりに
アドカレ記事なのにとても遅れてしまい、己の未熟さを嘆きながら書きました。

今回のライティングやカメラを含むショットの編集・管理もUSD、Solarisの本領発揮という部分だと思います。
自分自身、最近制作から少し離れている気がするのでもっと使いこなしていきたいです。

USDとともによい一年になりますように。

### hipファイル
作例のhipファイル（.hiplc）です。
金額は$0でダウンロードできます。
[Houdini Solaris Karma "Lighting & Camera".hiplc（Gumroad）](https://hertz.gumroad.com/l/rwtsg)