On this page |
概要 ¶
Houdiniでは、シーン内に何もライトがないなら、レンダリングで何かを表示できるように、シーンを照明する必要があります。
物理ベースのレンダリング(PBR)は、シーン内のライトの跳ね返りをリアルにシミュレーションします。 跳ね返ったライトに当たったサーフェスのみが照らされるので、“自動的に”シャドウをレンダリングします。 つまり、シャドウを有効にするのに何もする必要がありません。これは物理ベースのレンダリングの“自由な”副次的結果です。
古いレンダリングエンジン(レイトレーシングとマイクロポリゴンレンダリング)を使用した場合は、シャドウはレンダラーで“余分な作業”としてシミュレーションしなければなりません。 これらのエンジンを使えば、可能であればシャドウをオフにし、シャドウマップなどの“トリック”を使用して、レンダリングを高速化します。
どのオブジェクトがどのライトからシャドウを落とすのか制御するには、Light Bankの使用方法を参照してください。
PBRレンダリングは、シャドウ、反射、Irradianceなどを“自由に”生成できる一方で、確率的な本質の欠点として、 ノイズ が発生します。 PBRレンダリングのノイズを減らす方法は、品質の設定のページを参照してください。
ライト ¶
To... | Do this |
---|---|
シーンビュー内の特定の場所にライトを配置する |
|
視点の位置にライトを配置する |
|
環境ライトを追加する |
Lights and Cameras シェルフタブから Environment Lightツールをクリックします。 そのノードのパラメータを使用して、ライティングマップ画像を指定することができます。 詳細は、Environmental Lightingを参照してください。 |
ライトの位置と向きを変更する |
オブジェクト選択ツールを使ってライトを選択し、ハンドルを使ってライトの位置と向きを変更することができます。 |
ライトをオブジェクトに向ける |
パラメータエディタの Transform タブの Lookat Options タブの Look At にオブジェクトを指定することで、ライトがオブジェクトを向くようにすることもできます。 |
スポットライトの円錐を編集する |
ハンドルツールでスポットライトを選択して、クリックのコンテキストメニューからライト固有のハンドルとして Cone Handle を選択します。 Cone Handleはスポットライトの円錐の角度を変更することができます。表示される赤い円をドラッグすると角度を調整することができます。 |
ビューキーを使えば、ライトの視点を迅速に編集することができます |
|
オブジェクトからライトを放出する |
GeometryライトやVolumeライトまたは発光するマテリアルを使用することで、シーン内のオブジェクトがライトを放出しているように見せることができます。 |
シャドウの有効/無効 ¶
To... | Do this |
---|---|
オブジェクトがシャドウを落とさないようにする |
どのオブジェクトがどのライトからシャドウを落とすのかを制御するには、シャドウのリンクを使用します。 |
オブジェクトがシャドウを落とすようにし、そのオブジェクトをレンダリングで表示されないようにする(ファントムオブジェクト) |
オブジェクトの Render タブの Phantom チェックボックスをオンにします。 |
ビューポートでシャドウのプレビューを表示する |
ビューアの右側にあるディスプレイツールバーの Display Shadowsボタンをオンにします。
シャドウのプレビューは、Houdiniがシーンにある各ライトに対してシャドウマップを計算するので遅延を招きます。 Display Optionsの Projected Textures をオンにすることで品質を上げることもできます。 Render RegionツールやIPRビューペインを使用すれば、インタラクティブに実際のレンダーシャドウを確認することもできます。 OpenGLシャドウは近似計算ですが、インタラクティブで作業するのには非常に高速です。 |
Tips ¶
-
エリアライト(長方形や球など)と環境ライトは物理ベースのレンダリングで使用するのに非常に効率的です。
-
典型的なライティングでは、キーライトにエリアライト、バウンスにエリアライト、フィルライトにエリアライト、反射に環境ライトをセットアップします。
-
エリアライトは、よく使用します。
-
レンダラーは光の物理特性をシミュレーションするので、ライトとジオメトリとの直感的な相互作用をセットアップして、レンダラーの“トリック”を使わなくても、色の付いた光のゼリー、 cucoloris 、 gobo ジオメトリ、バウンスカード(他のエリアライトをセットアップする方が簡単ですが)などの現実世界の映画のライティングのたくさんのテクニックを再利用することができます。
-
昔は、シェーダのトリックを使って霧の中の街灯や雲間からの光を誤魔化してしました。しかし、PBRでは、実際に非常に強力なライトをセットアップして、非常に低解像度で非常に薄い密度の明るい色のボリュームによって光を飛ばすことが簡単にできます。
-
物理的に正しい光の保存則でライティングするか、線形的な“芸術的な”ライトを使うか決めたい場合があります。完全に物理的に正しいライトを使うのであれば、 Normalize Light Intensity をオフにして、 Attenuation を“Physically Correct”に設定します。
-
テクスチャマップを形状や色の付いたライトに追加することもできます。
-
グローバルイルミネーション/Irradianceを表現するには、Indirect Lightを追加して、Mantraノードの Properties ▸ Shading ▸ Diffuse Limit の値を上げれば、たくさんの光が暗い領域まで跳ね返ります。
-
補助照明を使うとシーンの見た目に大きく違いが出ます。
以下の画像は直接照明だけを使ってレンダリングしました:
以下の画像は直接照明と間接照明を使ってレンダリングしました:
物理ベースのレンダリングを使って間接照明を行なう方法は2つあります。パストレースを使って長い光路をレンダリングするか、または間接光をフォトンマップにキャッシュ化してから、そのマップからファイナルギャザーを実行するかのどちらかです。
-
接触部分のシャドウに問題(非常に暗い、またはノイズがある)があれば、オブジェクトの下に薄暗いエリアライトを配置することで、誤魔化すことができます。
-
Mantraで生成するZ-Depth ShadowsとDeep Shadows用に
.rat
フォーマットを常に使用してください。.rat
フォーマットは、.pic
ファイルと比べてより高い品質のテクスチャと、より効率的なメモリ管理をサポートしています。 -
サーフェスにシャドウを落とす (シャドウを“受ける”)ようにしたくない場合、そのことを念頭にサーフェスシェーダを記述しなければなりません。シェーダにisShadowRayVEX関数を使えば、レンダラーがいつシャドウを計算するのか指定することができます。
-
不透明なオブジェクトが色の付いたシャドウを落とす方法がいくつかあります:
-
2つの光源をお互いに親子化します。1つのライトはシャドウを投影し、もう1つのライトはシャドウを投影しません。シャドウを投影しないライトにはシャドウのカラーを設定、シャドウを投影するライトにはシャドウの 補色 を設定します。
例えば、緑のシャドウを作るには、シャドウを投影しないライトのカラーを
0, 1, 0
、シャドウを投影するライトのカラーを1, 0, 1
に設定します。シャドウを投影しないライトはオブジェクトオブジェクトを通過します。 -
VEXにカスタムシャドウシェーダを作成します。シャドウが投影される前にライトのカラーを照合して、シャドウを計算し、元のカラーとシャドウカラーをブレンドすることができます。
-
サーフェスシェーダを修正して、シャドウを作成するときのみオブジェクトを透明にすることができます。これはサーフェスを通過する光がシャドウに 追加される ことを意味します。つまり、オブジェクトが光を伝達するようになります。
-
ライトのタイプ ¶
以下に Lights and Cameras タブにあるライトのタイプを簡単に説明します。どのライトも同じLightノードを配置しますが、仕様が異なっています。とはいえ、Ambient Lightは他の5つのライトとは全く違うのでAmbient Lightノードを配置します。
|
Point Light |
ポイントから全方向にライトを放出します。これは電球に似ています。 |
|
Spot Light |
ポイントから特定の方向に円錐形のライトのビームを放射します。 |
|
Area Light |
自動的に指定した領域上にたくさんの光源を分散します。選択できるエリアライトは5つ用意されています。 Line/Tube 直線の長さに沿ってライトが分散されます。
Grid 平面領域上にライトが分散されます。これがデフォルトです。
Disk ディスク状の領域にライトが分散されます。
Sphere 球の表面上にライトが分散されます。 この形状の内側にオブジェクトを配置して全体にわたるソフトシャドウを表現することができます。これはグローバルイルミネーションのIrradianceと同じようなものです。
|
|
Distant Light |
平行光線を放射します。これは太陽光線に似ています。 |
|
Environment Light |
半球または球の環境からのライトをシーンに投影します。デフォルトの環境光は、全球ですが、パラメータエディタの Light タブの Clip To Positive Y Hemisphere チェックボックスをオンにすれば、それを半球にすることができます。また、 Render Options サブタブの Sampling Quality パラメータでサンプリング密度を変更することもできます。 ライトの位置は問題にはなりません。光源の向きを変えるには、ライトオブジェクトを回転します。回転しない場合は、半球のライトはXZ平面から上の領域をカバーするように向きます。 環境光は、テクスチャマップによって環境マップから照射することができます。回転しない場合は、環境マップは上面が+Y軸と揃うように向きます。 |
|
Ambient Light |
全方向からライトを放射してシーンを照らします(光源のないライト)。パラメータの詳細はAmbient Lightノードのヘルプを参照してください。 |
パラメータの詳細は、Light templateを参照してください。
ライトのカテゴリ ¶
カテゴリとマスクの両方には、オブジェクトやライトのセットを指定する方法が用意されています。
マスク はオブジェクト名を使ってメンバーを決定し、Houdiniでオブジェクト展開と同じセマンティクスを使用します。例えば、/obj/geo*,^/obj/geo1
。Light Linkerはオブジェクトパラメータ内のマスクを修正することで機能します。
膨大な量のシーンでインスタンス化する時、カテゴリで物にタグを付けておけば、操作が簡単になり、効率的です。
オブジェクトのパラメータエディタ( Render タブの Shading サブタブにある Categories パラメータ)で カテゴリ を指定することができます。オブジェクトは複数のカテゴリに属することができます。カテゴリを複数指定する場合は、カンマやスペースで区切ります。カテゴリは、Webアプリケーションの タグ のようなものです。ライトとオブジェクトに“タグ”を付けて、タグに論理和(OR)、論理積(AND)を使うことで、ライトのリンクを制御することができます。
(マスクとカテゴリの両方を指定すると、Mantraはそれらに共通するものを使用します。)
例えば、ライトの Categories には、keylight, shadower, distant
を設定します。これはライトがkeylight
、shadower
、distant
の一部になります。これにより、これらのカテゴリが使えるようになります。
Note
Houdiniの将来のバージョンでは、カテゴリがおそらく、ライト/シャドウ/反射のリンクに好ましいメソッドとしてマスクに取って代わるでしょう。ただ、UIによるカテゴリのサポートは現在のバージョンでは制限しています。
リンクにカテゴリを使うには、オブジェクトに手動で Mantra/Shading/Light Selection 、 Mantra/Shading/Shadow Selection 、 Mantra/Shading/Reflection Selection プロパティを追加しなければなりません。
また、カテゴリをVEXのilluminance loop内に任意の引数として使うとカテゴリベースのライトをループすることができます。
カテゴリエクスプレッションは、1つ以上のカテゴリ名を記述します。名前を複数指定するときは、名前を&
(and)または|
(or)シンボルで結合します。例えば、keylight|distant
と記述すれば、keylight
またはdistant
のどれかのカテゴリを持つオブジェクトすべてを指定します。一方、keylight&distant
と記述すると、keylight
とdistant
の両方のカテゴリを持つオブジェクトのみを指定します。
カテゴリエクスプレッションは、現在のバージョンでは括弧によるグループはサポートしていません。カテゴリエクスプレッションは左から右に処理され、&
(and)は|
(or)よりも優先順位が高いです。つまり、
a & b & c | d & e | f | g & h
は、次のカテゴリエクスプレッションと同じになります。
(a & b & c) | (d & e) | f | (g & h)
シンボル |
意味 |
---|---|
|
nameカテゴリのタグのオブジェクトに一致します。 |
|
nameカテゴリのタグで はない オブジェクトに一致します。 |
|
すべてのオブジェクトに一致します。 |
|
非オブジェクトに一致します。 |
|
なにかしらのカテゴリが定義されているオブジェクトに一致します。 |
|
なにもカテゴリを定義していないオブジェクトに一致します。 |
|
|
|
|
例えば、カテゴリパターン- | foo
は、foo
のカテゴリのタグが付いたオブジェクト または カテゴリ化されていないオブジェクトに一致します。
Light contributions(ライトの寄与度) ¶
LightとEnvironment Lightのオブジェクトには、 Lighting Contribution パラメータがあります。これは、スペースで区切ったコンポーネント名のリストです。
-
コンポーネントは、BSDFを生成するVOPの Label パラメータを使ってシェーダ内で名前が付けられています。Houdiniに含まれているシェーダは、
diffuse
、reflect
、coat
、refract
、volume
などのコンポーネント名を使用します。 -
仮想ラベル
direct
とindirect
を使って、サンプルが直接または間接の光線のどれかに基づいて、ライトのcontribution(寄与度)を制御することもできます。
これは、非現実的なライティングセットアップで役に立ちます。例えば、シーン内に非常に多くのフィルライトがあり、それらのライトを光沢のあるオブジェクトのハイライトとして表示したくないのであれば、それらのライトが反射率に寄与しないように設定することができます。
パラメータには、カテゴリの構文を使って、名前の合致、結合、削除をすることができます。例えば、 diffuse|volume
や-diffuse & -volume
。
Light Portal(光の入り口) ¶
環境ライトでは、特定のシーンのジオメトリを“Portal Geometry”に指定することができるので、外から光が入ってくる窓を表現することができます。
Portal Lightツールは、ジオメトリを選択して、ジオメトリをPortalに設定した環境ライトを作成します。
高度:ライトシェーダ ¶
標準の円錐やポイントのライトの代わりに、ライトシェーダ、独自にコードを記述したライトを使うことができます。HoudiniにはVEXでコードを記述した特別なライトが用意されています。
-
ネットワークエディタのシェーダレベルでTabメニューを使ってライトシェーダを作成します。
ライトシェーダを含むシェーダは、使用するレンダラーに特化しています。名前が
VEX
で始まるシェーダは、Houdiniの標準のMantraレンダラーでレンダリングします。名前がRMan
で始まるシェーダは、RenderManで動作します。 -
ネットワークエディタのオブジェクトレベルでTabメニューを使って Light Templateを作成します。
-
Light Templateのパラメータエディタの Render ▸ Shaders ▸ Light Shader パラメータに、作成したライトシェーダのパスを入力します。
See also |