Houdini 20.0 レンダリング

リニアなライティングとカラー

On this page

概要

“リニアカラー”を扱うということは、数値のカラー値と“絶対カラー”間のマッピングにおいて、カラー空間内のライティングとレンダリングが一直線であることを意味します。これは、デジタル映画では標準になっており、現実的なライティングを生成する上で一番良い方法です。Houdiniは、すべての内部カラーをリニアカラー空間で計算しています。

しかし、多くの画像フォーマット、モニター、いくつか古いビデオ製品のワークフローは、 ノンリニア カラー空間を使っています。ノンリニアカラーが必要な(つまり、ガンマ値を“ベイク”する必要がある)フォーマットでリニアカラーデータを出力すると、暗くて過度にコンストラストが効いた画像が生成されてしまいます。逆に言えば、ノンリニア画像データ(例えば、sRGB)を補正しないでリニアパイプラインに読み込むと、過度に明るくて、色が落ちたような画像が生成されてしまいます。

これを回避するために、Houdiniは、画像を読み込んで保存/表示する時に、リニアカラー空間をそれに合わせて変換します。Houdiniは、モニタがベイク前のガンマを持つ画像データを必要としていると想定して、デフォルトのガンマ補正値である2.2を表示に適用します。ノンリニアカラー空間を想定するフォーマットへ画像を保存する時、Houdiniは、そのデータを画像フォーマットのカラー空間に変換したり、または、オリジナルのカラー空間をメタデータとして保存します(フォーマットの機能に依存)。

入力と出力でノンリニアカラーを使う場合でも、なぜHoudiniはリニアカラー空間で動作しているのでしょうか?リニアカラーを扱えば、より正確な計算結果が得られ、コンピュータがカラーを扱うのが、より高速且つ簡単になります。リニアカラー空間でカラーの数値を倍にすれば、強さが倍になり、精度の損失がありません。ノンリニアカラー空間で値を倍にすると、強さがおよそ倍になり、 且つ 精度の損失があります。ノンリニアカラー空間では、色々なライトと透明なサーフェスからのカラーの寄与度を合算すると、この問題が起こるので、現実的でないレンダリング結果になってしまいます。

背景

ガンマ補正の根源は、陰極線管(CRT)ディスプレイです。CRTでは、電子ビームをスクリーン上の蛍光体に ノンリニア で刺激させています。つまり、ビームのパワーを倍にしても、蛍光体の明るさは倍にはなりません。その代わり、x2.2に非常に近いカーブで反応します。

その結果として、CRTのノンリニアな反応を打ち消すために、x1/2.2の信号を生成するようにキャリブレーションしたレコーディング機器が製造されました。これが、“2.2のガンマ補正値”として知られるようになりました。

今では、CRTのほとんどがLCD(液晶ディスプレイ)とデジタルテクノロジーに置き換わり、技術的にはガンマ補正はもはや不要ですが、2.2のガンマ補正値が標準になっています。JPEGなどの画像フォーマットは、表示前の補正を回避するために、ガンマ補正をピクセルにベイクしています。Houdiniは、これらの画像フォーマットを読み込む時にリニアカラーに変換しなければなりません。

よく使われるノンリニアカラー空間は、sRGBREC709で、これらには、ガンマ2.2の他にもいろいろなマイナーなカーブを持っています。

ディスプレイの設定

  • グローバルなガンマ設定を変更するには、 Edit ▸ Color SettingsColor Correction タブをクリックします。

  • Houdiniは、いろいろな場所のカラーに対して、ディスプレイのガンマ補正をすることが可能です:

    MPlay

    前景と背景の両方の画像。画面下部にあるカラー補正ツールバーを使います。

    Scene View

    ユーザが生成するジオメトリと背景画像すべて。

    ディスプレイオプションを開いて、 Viewport タブをクリックします。

    カラー補正ツールバーにカラーコントロールをもっと表示させるには、ビューポートオプションメニューを開いて、“Corrections Toolbar”をオンにします。

    Render View

    前景と背景の画像。画面下部にあるカラー補正ツールバーを使います(デフォルトでは折り畳まれています)。

    Composite View

    前景と背景の画像。画面下部にあるカラー補正ツールバーを使います。

    Imageファイルブラウザ

    画像プレビュー。

    Colorスウォッチ

    カラーエディタとカラーパラメータに表示される色のついた四角。

    これらの場所すべてには、ガンマ補正と一緒に適用する ルックアップテーブル (LUT)を持たせることができます。

  • 推奨しませんが、Houdiniの指定した領域に対してカラー補正を無効にすることができます。

表示にOpenColorIOを使用する方法

表示用OpenColorIOを参照してください。

リニア画像のインポートとエクスポート

画像をテクスチャやコンポジットレイヤーとしてインポートする時、Houdiniは自動的にカラー空間を検出したり、リニアと想定することができます。

  • File COPには、 Linearize Non-Linear Images パラメータがあります。画像がリニアカラー空間であると想定するには、これをオフにします。さらに、画像をリニア化する前に、フォーマットから推測されたカラー空間、または画像ファイルに保存されたカラー空間を上書きすることができる Image Color Space パラメータもあります。

  • Texture VOPには、 Source Color Space パラメータがあります。画像がリニアカラー空間であると想定するには、これを“Linear”に設定します。

  • Houdiniは、OpenGLレンダリング用のテクスチャとして、またはビューポート背景画像としてインポートした画像を自動的に変換します。この変換を回避するには、まずFile COPを使って画像を読み込んでから、op:構文を使って、COPからテクスチャを取得します。

画像を保存する時、リニア画像を出力、または出力ガンマを設定することができます(画像フォーマットが出力ガンマをサポートしている場合)。

  • Compositeレンダーノードには、 Convert to Image Format’s Colorspace パラメータがあります。このパラメータがオンなら、ノードは、 Output Gamma パラメータを使って、ベイクするガンマを設定します。変換をオフにするなら、画像データが補正なしで書き出されます。

  • Image Save Fileダイアログ(コンポジットノードをクリックして、 Save Image を選択した時に利用可能)は、Compositeレンダーノードと同じように動作します。

画像フォーマット

フォーマット

カラー空間

Houdini .pic

カラー空間を平面単位のメタデータとして保存します。

Houdini .rat

8ビット平面用の2.2ガンマで、他の平面フォーマットに対してリニアです。

OpenEXR

リニア。

PNG, JPEG, TIFF, Targa

sRGB

その他

データが8ビット固定のフォーマットで保存されていれば、sRGBと見なし、そうでないならリニアと見なします。

Note

プラグインを使って実装したカスタム画像フォーマットは、IMG_Format仮想メソッドを使って、カラー空間を指定することができます。詳細は、HDKドキュメントを参照してください。

MPlay

MPlayとは、Houdiniに含まれている画像のプレビュー/表示をするプログラムのことです。

デフォルトでは、MPlayは2.2のガンマ補正を適用します。つまり、画像をそのカラー空間で ビュー します。例えば、JPEG(事前にsRGBに補正されています。これは2.2のガンマ値に非常に近いです)を読み込むと、ビューアは画像を修正しません。しかし、リニア画像(例えば、浮動小数点の.ratテクスチャ)を読み込むと、ビューアは、それを2.2のガンマ補正値に変換します。(ディスプレイガンマを1.0に設定していると、JPEGが補正され、RATは補正されません。)

言い換えると、 無条件に画像に適用した ガンマでは なくて 、ビューアが条件を満たすためにそのデータを変更しなければならない“ターゲット”のガンマです。

  • ディスプレイオプションの Corrections タブで、ディスプレイガンマを設定することができます。

  • -g gammaオプションを付けてMPlayを立ち上げれば、ビューアのガンマ補正を設定することができます。

  • デフォルトでは、MPlayは、PPzNBVMAfなどの形状データを含む既知の画像平面をガンマ補正しません。

  • 画像やフリップブックを(ipの特殊ファイルを使って)MPlayにレンダリングする時、カラー空間(通常では、リニア)が画像データと一緒に渡されるので、必要に応じてカラー補正が適用されます。

  • “ビューティーパス”のみをフリップブックすると、リニアカラーがMPlayに送られ、全体のビューポート(ハンドルと他のUIを含む)をフリップブックすると、ビューポートと同じカラー空間(デフォルトでは、2.2のガンマ値)が使われます。

役立つ情報

  • モニタをsRGBカラーモードに設定するか、2.2のガンマ値にキャリブレーションします。キャリブレーションなしのモニタのほとんどが、2.1から2.4のディスプレイガンマを持ち、画像を微妙に変化させる場合があります。

  • Gamma COPは、カラー空間を変更しません。このCOPは、補正を画像のピクセルにベイクしますが、その結果のデータは、まだリニアカラー空間です。このCOPを使えば、ガンマ補正を適用したり、元に戻すことができます。また、画像のコントラストを制御することもできます。

  • カラー空間に関する情報とHoudini LUTファイルを生成するツールに関する情報については、opencolorio.orgにアクセスしてください。

  • 全体的にリニアワークフローを無効にするには、HOUDINI_IMAGE_DISPLAY_GAMMAを1.0に、HOUDINI_AUTOCONVERT_IMAGE_FILESを0に設定します(それぞれの環境変数のデフォルト値は、2.2と1です)。

See also

レンダリング

Mantraユーザガイド

基本

ライティング

次のステップ

導師レベル

他のレンダラー