Solaris Layered Rendering in Houdini 21.0

Oct 27, 2025 25 min

概要

Houdini 21.0 における Solaris (LOPs / USD) を用いた Layered Rendering(レイヤーベースレンダリング) の実装設計を示す。 キャラクター・背景・エフェクトを独立したレイヤとしてレンダリングし、COP2 で非破壊的に合成可能なパイプラインを構築する。


1. 定義と位置付け

概念定義Houdini Solaris 内での対応箇所
AOV (Arbitrary Output Variable)単一ショット内の光学要素(Diffuse, Specular, ZDepth 等)を別パス出力Render Vars / Render Settings
Render Layer (Layered Rendering)シーン構造単位(キャラ・背景・FX 等)を独立してレンダーし、後段で合成LOP ネットワーク / USD Layer Stack
Render Pass上記両者の包括概念。粒度によってどちらにも該当ROP / Render Product レベル

2. Houdini 21.0 での関連強化点

機能内容Layered Rendering への利点
Configure Layer LOP のカラー管理メタデータ出力Stage に colorManagementSystem / colorConfiguration を直接埋め込み可能レイヤごとに異なる色空間設定を保持しつつ統合可能
Render-specific タブの自動再構築レンダラー変更や設定リロードを容易化レイヤ追加・再構成時の整合性維持
Path Expression Collection サポート/World/Char/* 等の USD Path 式で動的コレクション生成キャラ・背景・FX の一括指定が容易
Edit Layer Begin/End ノード特定 USD レイヤへの限定編集を可能化非破壊的オーバーライド編集
複数レンダーデリゲート同時アクティブ化Karma / Redshift 等を並行利用可レイヤごとに最適レンダラーを割り当て可能

3. シーン構成指針(USD レイヤ設計)

/stage
 ├─ /char_layer        キャラクター専用サブレイヤ
 │    ├─ Geometry
 │    ├─ Materials
 │    └─ Lights (Key / Rim)
 ├─ /bg_layer          背景セット・環境光
 │    ├─ Geometry
 │    └─ Lights (Env / Indirect)
 ├─ /fx_layer          エフェクト系(Volume / Particle / Fluid)
 │    ├─ Geometry
 │    └─ Lights (Linked)
 ├─ /lighting_layer    共通ライト(必要に応じて独立)
 ├─ /renders
 │    ├─ RenderSettings_CHAR → `char.exr`
 │    ├─ RenderSettings_BG   → `bg.exr`
 │    └─ RenderSettings_FX   → `fx.exr`
 └─ /compose (COP2)
      ├─ FileCOP(char.exr)
      ├─ FileCOP(bg.exr)
      ├─ FileCOP(fx.exr)
      └─ Composite → Output

4. レンダー出力設計/AOV+レイヤ分離

4.1 レンダーパス構成原則

Houdini 21.0のSolarisでは、Render Productノードでレイヤ単位出力AOV出力を明確に分離できる。
この段階での設計指針は以下の通り。

設計項目意図/説明
レイヤ分割キャラクター(CHAR)・背景(BG)・エフェクト(FX)など、論理上独立した要素単位でRender Productを作成。
AOV分割各レイヤ内で、beauty/diffuse/specular/sss/emission/shadow/zdepthなどを別AOVとしてRender Varで出力。
命名規則<shot>_<layer>_<aov>.<frame>.exr。例:S010_CHAR_diffuse.####.exr
カラースペース21.0ではConfigure Layer LOPでOCIOメタデータを直接埋め込み可能。ACEScgを推奨。
ファイルフォーマットすべてOpenEXR (multi-channel / tiled / mipmap enabled)。SolarisのEXR拡張で高品質・低メモリ運用可能。

実際のRender Product構成例:

/stage/renders
├─ RenderSettings_CHAR → EXR出力: /out/CHAR/<shot><aov>.####.exr
│ ├─ RenderVars: beauty, diffuse, specular, zdepth, shadow
├─ RenderSettings_BG → EXR出力: /out/BG/<shot><aov>.####.exr
│ ├─ RenderVars: beauty, indirect, albedo, zdepth
└─ RenderSettings_FX → EXR出力: /out/FX/<shot>_<aov>.####.exr
├─ RenderVars: beauty, emission, velocity, motionVector

4.2 AOV構築の実装手順(Solaris/Karma)

  1. Render Varノード作成

    • LOPネットワークでRender Varノードを追加。
    • Source TypeLPE(Light Path Expression)を選択。
    • 例:C<TD>+L(Diffuse)、C<TS>+L(Specular)、C<Z>(ZDepth)等を定義。
    • Houdini 21.0ではUIでLPE補完が実装され、構文エラー時にLive Renderで警告が出るよう改良されている。
  2. Render Productノードへバインド

    • Render ProductRender Varパラメータで上記Varを参照。
    • 各AOVを明示的にアタッチしておくと、EXRのチャンネル構造が整理され、COP2読み込みが容易。
  3. カラー管理メタデータの埋込

    • Configure Layer LOPをRender設定群の直前に追加。
    • colorManagementSystemOCIO
    • colorConfiguration:プロジェクトのconfig.ocioパス
    • これにより、COP2内で自動的に色空間を解釈可能。
  4. マルチレンダーターゲットの同時出力(21.0新仕様)

    • Houdini 21.0では1つのRender Settingsから複数Render Productを同時出力可能。
    • 例:同じカメラで「CHAR_beauty」と「CHAR_zdepth」を同フレームで出力。
    • 設定:Render Settings → “Products”リストに複数Render Productを追加。

5. COP2合成構成(Layered Comp)

21.0以降のCOP2は、Solaris由来のEXRメタデータ(AOV名、ACESタグ)を自動認識可能。
これを前提に、Layered Rendering→COP2合成構成を設計する。

5.1 COP2 Network構成例

/img/comp_main
├─ File COP: /out/BG/<shot>_bg_beauty.####.exr
├─ File COP: /out/CHAR/<shot>_char_beauty.####.exr
├─ File COP: /out/FX/<shot>_fx_beauty.####.exr
├─ ZDepth Merge: zdepth_char / zdepth_bg を基に前後関係を算出
├─ Composite COP: BG → CHAR → FX (Merge Over Mode = Pre-Multiplied)
├─ Grade COP: レイヤ毎のグレーディング調整
├─ Depth of Field COP: zdepthを参照して被写界深度処理
├─ Vector Blur COP: motionVectorを参照し動体ブラー
└─ Output COP: /out/COMP/<shot>_final.####.exr

5.2 合成上の注意点

  • Pre-Multiplied Alphaの管理
    21.0のKarmaでは、半透明素材出力時に自動Premultiplyが行われる。
    COP2で再Premultiplyすると二重適用になるため、Unpremultiply → Composite → Premultiplyの順で統一する。
  • ZDepthのスケーリング
    Solaris出力のZはメートル単位。必要に応じてFit Range COPで正規化。
  • マスク連携
    AOV内にcryptomatteを含めておくと、COP2内でIDベースマスク抽出が可能。
    Houdini 21.0ではCryptomatte抽出精度が改善され、Subpixel ID処理がサポートされた。

6. 実運用上のポイントとパフォーマンス最適化

6.1 レイヤ間整合性の保持

  • シャドウ転写
    背景へのキャラ影を正しく投影するには、背景側マテリアルをShadow Matteに設定し、
    キャラライトをリンク。これによりCHARレイヤの影をBGレイヤEXRに保持可能。
  • GI共有
    各レイヤを完全分離するとGIの整合性が崩れるため、GI用ライトキャッシュを別USDに保存し、全レイヤで参照。

6.2 パフォーマンスとキャッシュ運用

  • Solaris 21.0では、USD Asset Resolverがマルチスレッド化され、
    サブレイヤのロード速度が最大40%向上(SideFX Release Notesより)。
  • すべてのレイヤをusdcacheディレクトリに書き出し、Sublayer LOPで読み込む構造にすることで
    ROP出力時の初期化コストを大幅に削減。
  • Denoiser(Karma XPU Denoiser)はAOVごとに適用可能になったため、
    beautyだけでなくshadow/zdepthを同時にクリーン化できる。

6.3 トラブルシューティング

症状原因対応
Render Product出力が空LPE式誤り、またはCollection範囲外Path Expressionを再確認
COP2で色ズレカラースペースメタデータ不一致Configure Layer LOPでOCIO統一
合成時にギザギザPremultiply二重処理Unpremultiply→Composite→Premultiplyへ修正
ライブレンダーで更新されないRender Gallery連携未設定Live Render LOPをRender Galleryに接続

7. 総括

Houdini 21.0におけるSolarisのLayered Renderingは、
単なるレイヤ出力分割ではなく「USDレイヤ構造+AOV階層管理+OCIO統合+複数レンダーデリゲート」の統合運用体系へと進化した。
これにより、ショートフィルム規模でも

  • 差し替え容易な再レンダリング
  • GPU/CPU混在の効率的分業
  • 一貫したカラーマネジメント下でのCOP2コンポジット
    を同一シーン構造で実現できる。

~Yu Tokunaga