概要
Surface に簡易的な光を当てて、影やハイライト、発光の見え方を確認するノードです。
法線マップがあればそれを使います。法線マップがない場合は、高さマップから簡易的に面の向きを作ります。発光マップがあれば、暗い場所でもその色が足されます。
使用例
Image to Surfaceに高さマップを入れ、angleを動かして影の向きが変わるか確認する。- ランプの
emission_mapを入れ、emission_strengthで光り方を調整する。 height_strengthを上げてレンガの目地がどのくらい影になるか確認する。- レンガやブロックの
Surfaceでcast_shadow_strengthを上げ、elevationを低くして、段差から影が伸びるか確認する。 tone_grade_mode = OKLCHにして、shadow_oklch_adjustのHを少しプラス、highlight_oklch_adjustのHを少しマイナスにすると、影とハイライトに絵全体で同じ色味のルールを付けられる。tone_grade_steps_mode = Steps、shadow_grade_steps = 2にすると、影がなめらかなグラデーションではなく、影1・影2のような少ない段階にまとまる。shadow_tone_detail_mode = PerStageにして、shadow_grade_steps = 4にすると、定義管理では影1から影4までの補正欄が出る。弱い影は軽く、強い影ほど暗くするように並べると、絵全体で影段階のルールをそろえられる。cast_shadow_tone_mode = Separateにして、cast_shadow_grade_steps = 3にすると、落ち影も落ち影1から落ち影3まで別の補正を持てる。接地影やブロックの段差を普通の影より濃くしたい時に使う。paletteに作品用パレットを接続し、palette_stage_mode = StageIndicesにして、影1・影2・ハイライト1・ハイライト2をパレット番号で固定する。
光の向きと高さ
angle は画像の平面上で、光がどの方向から来るかです。角度パラメータなので、インスペクターでは循環ノブで操作できます。315度は左上から光が来る向きです。
elevation は光の高さを表す縦方向の軌道角です。Angle パラメータなのでインスペクターでは循環ノブで操作します。0 は光の向き側の水平、90 は真上、180 は反対側の水平、270 は下/裏側から照らします。光の向き を固定して elevation を 0→180 に動かすと、太陽が昇って真上を通り反対側へ沈む動きになります。高さマップの落ち影は上側ライト(0〜180)で有効です。下側ライト(180〜360)では、不自然な投影を避けるため高さマップ由来の落ち影は無効です。
shadow_strength はAOマップでくぼみを暗くするための値です。cast_shadow_strength は高さマップを見て、実際に高いピクセルが低いピクセルへ落とす影の濃さです。
OKLCH差分
tone_grade_mode = OKLCH にすると、ライト計算で「影になった量」「ハイライトになった量」を見て、色を OKLCH 基準でずらします。
tone_grade_mode = Off の時は、OKLCH差分に関係する詳細パラメータはインスペクターで非表示になります。値は消えずに残るので、もう一度 OKLCH に戻すと前に調整した値がそのまま出ます。
たとえば shadow_oklch_adjust を L=-12, C=0, H=8 にすると、影は少し暗くなり、同時に色味も少し回ります。全体の影が同じルールで色づくので、ノードごとに影色を手で合わせるより一貫した見た目を作りやすくなります。
tone_grade_steps_mode = Steps は、補正のかかり方を少ない段階に丸めます。shadow_grade_steps = 2 なら、影なし・影1・影2のように分かれます。パレットへ完全に丸める前に、OKLCH差分だけでドット絵らしい段階影を試したい時に使います。
shadow_tone_detail_mode = PerStage にすると、影の強さごとに別の補正値を使います。shadow_grade_steps = 1 なら影1だけ、4 なら影1から影4までを使います。定義管理画面では段数に合わせて補正欄が増減します。固定の影色ルールを作りたい時は、弱い段階を軽く、強い段階ほど深く暗い補正にしておくと扱いやすくなります。
処理の順番は、ライト計算、OKLCH差分、パレット段階化の順です。そのため、OKLCHで色味を整えてから、最後に palette_stage_mode = Nearest で作品パレットの近い色へ丸めることもできます。
落ち影は、初期設定では普通の影と同じ shadow_oklch_adjust を使います。これはドット絵で色数や影ルールを増やしすぎないためです。段差や接地感をもっと強く出したい時だけ cast_shadow_tone_mode = Separate にします。Smooth なら cast_shadow_oklch_adjust で落ち影全体を調整し、Steps なら cast_shadow_grade_steps に合わせて落ち影1・落ち影2...の補正を設定できます。
ハイライトも tone_grade_steps_mode = Steps の時は highlight_grade_steps に合わせて補正欄が増減します。たとえば2段なら弱いハイライトと強いハイライト、4段ならより細かい光の当たり方をパレット的にそろえられます。
パレット段階化
StageIndices は、ライト計算でできた色をそのまま使うのではなく、影やハイライトの段階をパレット番号へ置き換えます。
たとえばパレットの 1 番を「影1」、2 番を「影2」、3 番を「ハイライト1」、4 番を「ハイライト2」にしておくと、影の色味はライト計算ではなくユーザーが作ったパレットで制御できます。palette_snap_strength = 1 なら、最終結果は必ず接続したパレット内の色になります。
この仕組みは、定義管理のライティング定義でも同じ考え方を使います。ノードごとに色を直接変えるのではなく、まず作品全体で「影段階とハイライト段階をどのパレット番号へ対応させるか」を定義し、必要な時だけノード側で上書きできる形にします。
同じ考え方で、OKLCH差分の影段階もライティング定義で管理できます。作品全体の影1・影2・影3...、落ち影1・落ち影2...、ハイライト1・ハイライト2...のルールを定義し、個別ノードでは必要な時だけ上書きする、という運用にできます。