ある方から昨日の記事について情報を頂いたので追記します。
昨日の記事では、テクスチャをアサインしてレンダリングして色が合いましたねということでサラッと流してしまっていたのですが、内部でどのように扱われて色が合ったのか理解しておく必要がありますよねというご指摘をいただきました。確かにそうなので説明をします。
そして。チョロッと機能説明をすればサラッと終るかと思ったら、いろいろ調べ始めたらなかなかの沼に;;色管理恐ろしす。そして、改めて自分色管理周りわかってないなぁと実感することしきりです。
まず、KATANA はあくまでもレンダラが処理するシーンデータを作るためのフロトエンドでしかなく、シーンデータを生成してしまった後はレンダリング時に何か処理をすることは無いという前提があります。そのため、 KATANA で作成した image ノードで指定されたファイルの中身がどのように解釈されるかは、Arnold の Image ノード次第ということになります。
ここで、KATANA の image ノードでは、指定されたファイルの色空間をどのように解釈するか指示するパラメータとして color_space があります。
通常は auto を指定すればよいです。ここで指定された値は KATANA が自動的に何かを解釈してレンダラに指示をするという意味ではなく、文字通り “auto” という値を Arnold の image ノードに渡すという意味になります。
“auto” が渡されたときに Image ノードがどのように解釈するかはArnold のマニュアルに書いてあります。
The default value ‘auto’ will use sRGB for integer (8 or 16 bit) formats and linear otherwise.
8bit や 16bit の整数型フォーマットであれば sRGB を想定し、そうでなければリニアな画像が格納されているものとして扱うとのことです。今回は 8bit の png ファイルを指定したので、ここで sRGB → リニア 変換がおこなわれます。
その後、Arnold 内ではリニアなデータとして扱われ、画像がレンダリングされます。
レンダリングされた画像はそのままでは人間が見た時に望んだ色には見えないため、LUT を適用します。この LUT がデフォルトでは sRGB なので、最終的に見慣れたカラーチャートが表示されたのです。
ちなみに、Arnold 内部で色空間がどのように扱われるのか知らなかったので調べてみたところ、OCIO Color Manager が管理しているようです。
おそらく、Color Manager 関連の指定を何もしない場合は Built-in Color Manaer が適用され、sRGB linear が内部で使用する色空間ということになるのかなと思います。
この指定は NetworkMaterial ノードで Add Terminal をすると追加することができ、どうもこれを使っていろいろするらしいというところまでは調べました。具体的な使用方法は今後の課題です。ちょっとこの辺りはちゃんと調べてみないとわからないところだらけです。