色と値
2011年05月27日(Fri)
企画中に作った絵のことでも書こうかと思ったんだけど、ちょろっと実験したらまとまった画像になったので覚え書き。ものすごい今さら感だけど、基本的なことを確認しておこうと思う。

こんな感じでテスト形状を作る。マテリアルグループが10個並んでる平面。で、各マテリアルグループにディスプレイスメントを設定する。

ウチでは使用単位をセンチにしているので、とりあえず10cm刻みで100cmまで変化させることにする。変化量の指定は数値演算ノードで0.1から1までを出力。上の図は5番目のマテリアルグループで、ノード間の数字は乗算されるので最終的に100×0.5=50cm変位することになる。
で、レンダオプションで「ディスプレイスメントマップ使用」にチェックを入れてレンダするとこんな感じ。

それぞれのマテリアルグループが移動して階段状になっている。10番目のマテリアルグループで新Poser単位系の100cm移動していることになる。ちゃんとは測ればいいんだけど、今回はそれが目的じゃないので割愛。

次に、ディスプレイスメントの変位量を色で指定する。シンプルカラーノードで単色のグレーを出力。Poserはどうもカラーパレットを表示すると値を1バイトに丸めてしまうみたいだけど、あまり気にせずに輝度をパーセンテージで指定。10%グレーから100%の白まで変化させる。図は50%グレーを出力している。

で、レンダしたところ(見分けやすいように拡散色にも同じ色を指定)。変位量を数値で指定したものと色で指定したもの、どちらも結果に違いはないことがわかる。つまり値を扱うノードに色を接続した場合、白を1、黒を0として、均等に値が変化している、ということになる。
何を今さらみたいな話だけど、おさらい的に(笑)。
では、グレー以外の色を接続した場合はどうなるか。まずは赤を10段階変化させる。

結果はこんな感じ。

グレースケールを繋いだ時より変位量が少なくなっている。具体的にどれぐらい少ないのかを調べるために、ざっくり元の変位量を3倍にしてみる。

すると、今度は高さ(変位量)がキッチリ揃った。つまり赤は白の1/3の値だということになる。

同じようにして緑と青についても変位量を3倍にした状態で確認する。

このことから、赤と緑と青はそれぞれ値としては互いに等しく、その量は白の1/3であるということになる。
当たり前だと思うかもしれないけど、そもそも赤と緑と青は現実では明るさが違う。大事なのはPoserはノードに色を接続したとき、現実の明るさに変換するような処理はせず、単純にRGB値をそのまま値として扱っているということだ。

次、今度は赤と青の混色を確認する。赤と青がそれぞれ1/3なのだから、合計すると2/3、1.5倍すれば白と等量になるはずである。

結果、推測通り変位量が等しくなった。このことから、RGB値の色をスカラー量として扱う場合、その値は(R/255+G/255+B/255)÷3ということになる。

では、今度はシンプルカラーノードとディスプレイスメントの間に数値演算ノードを挟んでみよう。式や値は何も指定せずそのままに。ディスプレイスメントには数値が入力されているはずだ。

試しに数値演算ノードの結果をカラーピッカーで拾ってみると、33%グレーとなった。(127/255+0+127/255)/3で0.333だから、50%マゼンダの値は0.33ということになる。

結果は先ほどカラーを直接繋いだ時とまったく同じ(使い回しじゃないよ)。
さて、このことから何が言えるかというと。
まず第一にイメージマップノードを色でなく(バンプやディスプレイスメント、そのほか拡散値や鏡面値などの)値を扱うノードに接続した場合、色を値に変換した上で計算される、ということ。ごくたまに拡散色のテクスチャマップを数値演算ノードでグレースケールにしてからバンプ等に繋いでいる人を見かけるけど、あれはまったくの無意味だということである。そのままイメージマップノードを繋げば同じ結果になる。ノードを挟んでも負荷を増やすだけである。
また、まずいないだろうとは思うけど、バンプマップを作成するときにテクスチャマップをそのままグレースケールにしただけ、という人。ファイル容量とメモリの無駄なので、それぐらいなら添付自体をやめてしまおう。明るさやコントラストの調整程度ならバンプ値を調整すれば済む話である。
第二に、赤も緑も青も重み付けが同じ値として扱われるということ。あんまり考えられないケースだけど、Poser上でカラー写真を現実的なグレー写真に変換するような場合、RGB各値の重み付けをユーザー定義ノードとカラー演算ノードで再現する必要が出てくるだろう。Photoshopの白黒フィルタ使った方がいいと思うけど(笑)。
要は白は1、黒は0、赤や緑や青は0.33、マゼンダやシアンや黄色は0.66。それだけである。
ま、たまには基本を振り返ってみるということで。