リニア ワークフローとカラー管理

リニア ワークフローは、シェーディング、ライティング、レンダリングを行うアプローチであり、単純な方法よりも多くの利点があります。カラー管理は、入力、レンダリング、表示、出力用のカラーを適切に変換することで、リニア ワークフローを可能にします。

シーンリニア ワークフローの概要

現実の世界では、ライトは直線的に当たります。このことは単純に、2 つの光源を使用すると、全体の輝度はそれぞれの光源からの光の直和になることを意味します。

ほぼすべての 3D レンダラで使用されているアルゴリズムは、これと同じように機能します。リニア ワークフローでもこの事実を認め、レンダリング処理で使用するすべてのカラー値は、シーンの輝度に正比例します。これにより、ライティングとシェーディングの多くの問題が解決します。たとえば、追加ライトなどのテクニックを使用しなくても、ハイライトとシャドウのバランスによって、満足なライティングを実現しやすくなります。さらに、リニア出力は、追加の調整や修正をしなくても、合成などの高度な処理に適しています。

リニア ワークフローの問題の 1 つは、表示用に用意されているイメージ(テクスチャとして使用する .png ファイルなど)はリニア(直線状)ではない、という点です。つまり、数値のカラー値は、輝度に比例していません。このことは、数値のカラー値はリニア ワークフローで使用する前に変換する必要があることを意味します。

逆に言えば、リニア ワークフローでレンダリング結果はリニアであり、直接表示には適していません。モニタで適切に表示されるようにするには、変換する必要があります。

カラー管理のほうが適している状況

カラー管理では、必要に応じてカラー スペースを変換するために適切なトランスフォームが適用されます。これらのトランスフォームは、プレビューおよびレンダリング処理中の特定のポイントで適用されます。
  • 入力時は、イメージが保存されたカラー スペースからレンダリング スペースにイメージを変換するのにトランスフォームが適用されます。
  • 作業中は、プレビューするために、ビューポートとレンダー ビュー(Render View)表示にビュー変換が適用されます。
  • 必要に応じて、レンダリングされたイメージファイルを外部ビューアに表示するために、これらに出力変換を適用することができます。

イメージ入力を処理する

テクスチャなどの入力イメージを処理する適切な方法は、イメージがシーン内でどのように使用されているかによって決まります。また、適切な方法はイメージそのもの、現在のカラー スペースやエンコーディング、イメージの状態(カラー値がシーン参照輝度値と表示参照輝度値のどちらに比例しているか)などによっても異なります。

非カラー データに使用されるイメージに適用されるトランスフォームはありません。バンプ マップ、法線マップ、ディスプレイスメント マップ、その他のアトリビュート(半透明性、鏡面反射性、反射率など)で使用されるマップなどがこれに含まれます。

カラーを表現するために使用されるイメージの場合は、いくつかの選択肢があります。既にシーンリニアであるイメージは、入力スペースの原色とレンダリング スペースの原色が異なる場合に、入力スペースの原色からレンダリング スペースの原色に変換する必要がある場合を除いて、変換する必要はありません。OpenEXR、HDR、一部の TIFF ファイルなどのほとんどのハイ ダイナミック レンジ イメージがこれに含まれます。

特定のデバイスでキャプチャしたイメージには、そのデバイスに固有の入力トランスフォームを適用する必要があります。デジタル シネマ カメラの映像や、ADX 調整スキャナのフィルム プレートがこれに含まれます。他のタイプのスキャンしたフィルム プレートは、通常、なんらかの形で対数からリニアに変換する必要があります。

表示用に用意されているイメージは、ガンマを除去する必要があります。JPEG、PNG、BMP、Targa、一部の TIFF ファイルなどの多くの一般的なグラフィックス フォーマットがこれに含まれます。ただし、ガンマを除去した後、カラー値は表示の輝度に正比例するが、シーンの輝度には正比例しないことに注意することが非常に重要です。反転トーン マップを適用して値をシーンリニアにすることが望ましい場合もあります。その他の場合は、反転トーン マップで 1.0 を超える値を作成することができますが、この値は拡散反射(アルベド)、透明度、その他のマップで使用されるカラーには適しません。

レンダリングされた出力を表示する

シーンリニア イメージを表示するには、次の 2 つの手順でビューまたは出力トランスフォームを使用する必要があります。
  • 1 番目の手順では、ハイ ダイナミック レンジのカラーを[0, 1]の範囲に変換するのにトーン マップを適用します。
  • 2 番目の手順では、必要に応じて原色を変換し、必要なガンマを適用します。

3D シーンは実世界を模倣し、シーンでは輝度値の範囲が非常に広くなる可能性があります。一方、表示デバイスが出力できる輝度値の範囲には制限があり、最大値は 1.0 としてエンコードされます。さらに、屋外シーンまたは明るい色で照らされているムービー設定よりはるかに暗いライティング条件下で表示されます。このため、トーン マップを使用してハイダイナミックレンジ値を表示範囲に圧縮し、適切なイメージを生成する写実的な応答を得ます。通常トーン マップは、低いダイナミック範囲や暗い表示条件を補うために、コントラストと彩度を上げる S 字型のカーブを適用します。

表示用のシーンリニアを完全に準備するには、ガンマを適用するだけでは、不十分です。トーン マップを使用しないと、1.0 を超えるカラー値は 1.0 を超えたままとなり、モニタによってクリップされます。

Maya でカラー管理を使用すると、常に最終的な結果を正確にプレビューできるように、ビューポートとレンダー ビュー(Render View)の両方で表示変換を適用することができます。

1
カラー管理を使用。レンダリング スペースのリニア出力が表示用に適切に変換されています。
2
ビューを変換していない。イメージが暗すぎてシャドウの詳細が失われています。
3
未変換のイメージの暗さを補正するために露光を大きくすると、ハイライトが白飛びします。さらに悪いことに、補正するためにシーンのライトを大きくすると、レンダリングされた結果が不正になります。