Houdini 20.0 レンダリング

ライトパスエクスプレッション

On this page

概要

レンダラーは、カメラから光源までのライトパス(光経路)を追跡します。 ライトパス(光経路)とは、光がシーンに当たる度に発生した一連の“散乱イベント”のことです。例えば、カメラからのライトパス(C)、ボリュームに作用したライトパス(V)、ディフューズシェーディングサーフェスに作用したライトパス(D)、ライトに到着したライトパス(L)があります。

ライトパスエクスプレッション (LPE)は、散乱イベントに基づいた特定のライトパス(またはパスセット)を記述した、いわば 正規表現 です。 この正規表現を使用することで、出力に寄与させるパスの種類を“選択”することができます。これによって、コンポジット用に特定の出力部分のみを抽出することができるので、カスタムシェーダを記述したり、その部分を別パスでレンダリングするといったことが不要になります。

Mantraによるライトパスエクスプレッションの実装は、オープンシェーディング言語の仕様に基づいており、ほとんどの機能とインターフェースを共有しています。

詳細は、OSLのライトパスエクスプレッションのドキュメントを参照してください。 とはいえ、Mantraの実装での違いにも注意してください。

LPE言語

イベントタイプ

以下の文字は、特定のタイプのイベント、 または 、散乱タイプやカスタムタグ(以下参照)に合致します。 マッチングから特定のタイプを排除したい場合は、<>山括弧を使用します(以下のワイルドカードを参照)。

C

Camera

R

Surface Reflection

T

Surface Transmission

V

Volume

L

Light

O

Emissive Object

B

Background (Karmaでのみ対応しており、Mantraでは対応していません)

散乱タイプ

D

Diffuse Scatter

G

Glossy Scatter

ワイルドカード

.

どのイベントにも 合致します。

*

直前イベント以降の 0個以上の イベントに合致します。例えば、D*は、ディフューズサーフェス以降のどの作用(なしも含む)にも合致します。

.の後にこれを結合した.*は、0個以上の任意のイベントに合致します。例えば、.*DLは、ライトに到達する前にディフューズシェーディングサーフェスに当たったライトパスに合致します。

+

直前イベント以降の 1個以上の イベントに合致します。例えば、D+は、ディフューズサーフェス以降の1つ以上のどの作用にも合致します。

*と同様に、.の後にこれを結合すれば、1つ以上の任意のイベントを合致させることができます。

カスタムタグ

'tag'

LPE Tag レンダープロパティでカスタムラベルを使えば、オブジェクトやライトに“タグ”を付けることができます。 ライトパスエクスプレッション内にタグを使用することで、そのタグのオブジェクトの作用を参照することができます。

例えば、壁に LPE Tag プロパティを追加し、そのテキストをleftwallに設定します。 すると、以下のようにライトパスエクスプレッション内にleftwallを使用することで、その壁の作用を参照することができます:

G[GD]+'leftwall'L

(leftwallというタグが付いたオブジェクトに対するすべてのDiffuseとGlossyの照り返しのみを抽出することができます。)

Tip

他にもProperties VOPを使用することで、マテリアル内にカスタムラベルを割り当てることもできます。 しかし、シェーディングしたオブジェクト自体にも LPE Tag プロパティがあれば、そのプロパティがマテリアルのプロパティを上書きします。

グループ化

< events >

山括弧内の すべて のイベントタイプに合致します。例えば、<RD>はDiffuse Reflectionイベントに合致します。

[events]

大括弧内の どれか のイベントタイプに合致します。例えば、[DG]は、Diffuse または Glossyの散乱イベントに合致します。

[^events]

頭にキャレット(^)を入れるとグループが 反転 されるので、その大括弧内のタイプ を除く どのイベントタイプにも合致します。 例えば、[^DG]は、DiffuseまたはGlossyの散乱イベント を除く どのイベントにも合致します。

完全表現したイベント

<event_typescatter_type['tag'['bsdf_label']]>

Cを使ってカメラ作用に合致させたり、Dを使ってDiffuse散乱作用に合致させる時、このコードが実際の 完全表現したイベント の省略表記です。ここでは、イベントタイプ オプションで散乱タイプ オプションでタグを指定しています。

例えば、Rだけならサーフェスからのすべての反射(DiffuseまたはGlossy)に合致します。 Dだけなら(オブジェクト/サーフェスのタイプに関係なく)すべてのDiffuse散乱イベントに合致します。 <RD>だけならサーフェスからのDiffuse反射に合致します。

つまり、CRLは、どの反射タイプ(DiffuseまたはGlossy)も含む直接照明を表現します。 CGLは、グロス成分(反射または屈折)を含む直接照明を表現します。 反射 グロスの 両方 を含んだ直接照明に合致させたい場合は、C<RG>Lを使用します。

この完全表現したイベントには、任意でカスタムタグを含めることができます。 指定したタグは、作用させるオブジェクトに付けてください。 例えば、<C.'fill'>は、fillタグの付いたオブジェクトに対するカメラ光線の作用にのみ合致します。 <RD'wall'>は、wallタグの付いたオブジェクトに対するディフューズサーフェス反射のみに合致します。

BSDFラベルは、カスタムタグに追従するオプションの表現です。 このラベルを使用することで、BSDFから同じ範囲のイベントカテゴリ内にある寄与度をラベル別で分離させることができます。 BSDFラベルを省略表記で使用できないことに注意してください。例えば、C<...'coat'>Lは使用できますが、C'coat'Lは使用 できません

ライトパスエクスプレッションの使い方

To...Do this

画像平面内のLPEに合致した寄与度を分離させる

  1. MantraレンダーノードExtra Image Planes マルチパラメータを使って、画像平面を追加します。

  2. VEX Variable フィールドに、lpe:の後にライトパスエクスプレッションを記述した文字列を設定します。

    例えば、lpe:C<RD>.+L

Note

シャドウのないライティング寄与度は、エクスプレッションの頭にunoccluded;を付けることで表現可能です。例えば、lpe:unoccluded;C<RD>.+Lです。

Note

Light Path Expression AOVsは、Mantra ROP内の Export Components (vm_exportcomponents)にリストされているラベルのBSDFから直接照明寄与度のみを累積します。 事前定義されていないラベルを持ったカスタムBSDFsを使用している場合、このリストにそれらのラベルを追加してください。

サンプル

ビューティー

C.*[LO]

間接Diffuse

C<RD>.+L

'coat'というラベルのBSDFからの直接バウンスと間接バウンス

C<...'coat'>.*[LO]

'sss'というラベルのBSDFからの直接サブサーフェススキャタリング

C<TD.'sss'>L

発光と可視エリアライト:

C[LO]

“apple”というタグが付いたライト(s)からのすべての寄与度

C.*<L.'apple'>

シャドウのない直接diffuse

unoccluded;C<RD>L

OSLとの比較

OSLのライトパスエクスプレッションのドキュメントには、詳細な説明とサンプルがあります。

OSLの実装と比較すると、Mantraは以下の機能に対応していません:

  • B(Background:背景)イベントタイプがありません。

  • S(Singular:特異)またはs(straight)の散乱タイプがありません。すべてのスペキュラー散乱タイプは、MantraではG(Glossy)として定義されています。

さらに:

  • Mantraは、2つの異なる形式のカスタムラベルを使用します: ライトやオブジェクトに割り当て可能なLPE Tag、そして、BSDFラベル(OSLのクロージャラベルと等価)です。

制限事項

  • MantraのBeauty平面は、カメラ光線の発光(Ce)に対して完全不透明なフィルタリングを使用しますが、可視発光(例えば、lpe:CO)を定義したライトパスエクスプレッションは、スクリーンドア(網戸)フィルタリングを使用するので、発光マテリアルが部分的に不透明であれば、ノイズ品質に違いが出てしまう可能性があります。

  • 間接バウンス光線が部分的に不透明な発光マテリアルに当たっても、カスタムラベルを使って寄与度を分離させることができません(例えば、発光マテリアルを割り当てたオブジェクトにfooというLPEタグがあれば、lpe:CR<O.'foo'>といったエクスプレッションの使用は、そのマテリアルが完全不透明な場合には良いですが、そのマテリアルが完全不透明でない場合には予期しない結果を招いてしまう可能性があります)。

  • “Translucent(半透明)”モデルに対するPBR Diffuse寄与度は、透過ではなくて、反射として分類されます。

レンダリング

Mantraユーザガイド

基本

ライティング

次のステップ

導師レベル

他のレンダラー