2 / 4 Textureのチャンネルとコマの対応
照明情報とAlphaの対応を読み、二枚の素材を一組として扱います。
RGBを表示色と決めつけない
六方向分の係数は、二枚のTextureのRGBへ分けて格納できます。各成分は、ある方向から光が来たときの反応です。赤く見える部分を「赤い煙」と読んでしまうと、素材の意味を取り違えます。Alphaには不透明さや発光用データなど別の役割があります。
説明用の方向対応で一画素を読む
次は仕組みを理解するための仮の格納規約です。製品や素材に共通する規約ではありません。実際に使う素材では、その素材とシェーダーが指定するチャンネル対応を確認します。
方向は煙を記録した座標を基準とし、+Xを右、+Yを上、+Zを手前とします。ここで「右からの光」は、煙から光源を見た方向が+Xという意味です。光線が進む向きとは逆です。
| Texture | R | G | B |
|---|---|---|---|
| A | 右(+X)から照らした反応 | 上(+Y)から照らした反応 | 手前(+Z)から照らした反応 |
| B | 左(−X)から照らした反応 | 下(−Y)から照らした反応 | 奥(−Z)から照らした反応 |
ある画素でAのRが0.8、BのRが0.2だったとします。光の強さを1とし、右から照らす場合は0.8、左から照らす場合は0.2の反応を読みます。同じ画素でも、光の方向で明るさが変わります。Rの値を読んでも、それを赤色として表示するという意味ではありません。
斜めから照らす場合は複数方向の反応を重み付きで組み合わせます。例えば右と上の重みをそれぞれ0.5とする説明用の合成で、右が0.8、上が0.4なら、結果は 0.5×0.8+0.5×0.4=0.6 です。実際の重みの算出方法は使用するシェーダーの方式に従います。
コマと透明度をそろえる
二枚のFlipbookは、同じ格子数・同じコマ・同じ煙の形で対応していなければなりません。一方が3コマ目でもう一方が4コマ目なら、異なる形の照明情報が混ざります。
この説明用の対応ではAのAlphaを不透明さとし、BのAlphaは使わないことにします。実素材では発光など別のデータが入る場合もあるため、Alphaの役割も確認します。照明係数が0.8でも、Alphaが0ならその画素の煙は表示しません。照明への反応と煙が占める範囲を別々に読みます。
基本では素材制作を行わず、コマ番号とチャンネルの役割を読み取ります。通常の煙の色画像を二枚指定しただけで、六方向の照明データになるわけではありません。対応した素材を前提にする方式です。
確認課題
本文の仮の格納規約で、AのGが0.6、BのRが0.2です。上から照らす場合と左から照らす場合に読む成分を答えてください。左の反応が0.2でもAのAlphaが0なら、煙は表示されますか。
考え方の確認
上はAのGで0.6、左はBのRで0.2です。この規約ではAのAlphaが不透明さなので、0なら煙は表示されません。照明係数と表示範囲は別です。実素材ではその素材の規約を確認します。
- 説明用の表を使い、右と左から照らす場合に読む成分と反応値を答えられる。二枚の同じコマを読む理由と、照明係数とAlphaの違いを説明できる。