Back to Node List

Quick Shade

quick_shade

Adds light and shadow to a sprite in one node. Estimates volume from the silhouette, so no height or normal maps are needed.

Draft
Guide available
The node name and summary are available in English. Port, parameter, and article details are currently shown in Japanese.

Input Ports

NameTypeDescription
画像
input
Image
Required
光と影をつけたい画像です。

Output Ports

NameTypeDescription
画像
output
Image
光と影がついた画像です。
高さ
height
Image
シルエットから推定した高さマップです。細かく調整したくなったら「画像からサーフェース」の高さ入力につなぐと、Surface 経路へ移行できます。

Parameters

NameTypeDefaultRangeDescription / Options
光の向き
angle
Angle
315— / step 1

光がどの方向から来るかです。315度は左上からの光です。

光の高さ
elevation
Angle
45— / step 1

光源の縦方向の軌道角です。0は光の向き側の水平、90は真上、180は反対側の水平、270は下/裏側から照らします。

光の強さ
intensity
Float
0.850–2 / step 0.01

光の強さです。

最低の明るさ
ambient
Float
0.350–1 / step 0.01

光が当たりにくい側にも残す最低限の明るさです。

立体の形
volume
Enum
Round

シルエットからどんな立体を推定するかです。

  • 丸いRound
    風船のように丸く膨らんだ立体として扱います。キャラクターや柔らかい物に向きます。
  • とがるSharp
    円錐のように直線的にとがった立体として扱います。結晶やトゲに向きます。
  • 平らな天面Flat
    縁は丸く、中心は平らな立体として扱います。レンガや箱に向きます。
立体感の強さ
height_strength
Float
20–8 / step 0.1

推定した立体がどれだけ強く光に影響するかです。

陰影の段階
shading_style
Enum
Steps2

陰影をドット絵らしい段階に区切るか、なめらかにするかです。

  • くっきり2段Steps2
    影とハイライトを2段階に区切ります。定番のドット絵らしい仕上がりです。
  • くっきり3段Steps3
    3段階に区切ります。大きめのスプライト向きです。
  • なめらかSmooth
    段階に区切らず、なめらかなグラデーションで陰影をつけます。
光の色
light_color
Color
[1,0.9599999785423279,0.8799999952316284,1]

光の色です。夕日なら暖色、月明かりなら青にします。

技術詳細

内部処理は次の3段で、すべて既存の共有基盤を使う薄いラッパー:

  1. pxn_core::height_field::height_from_silhouette() — アルファシルエットの距離変換で高さマップを推定
  2. 推定高さを SurfaceDocument に包む
  3. surface::render_surface_light()サーフェース光プレビュー と同じレンダラで光を当てる
  • shading_style の Steps2/Steps3 は拡散光を段階に量子化し(SurfaceLightSettings::diffuse_steps)、OKLCH 段階トーンも合わせて適用する
  • 落ち影(キャスト)はシルエット由来の高さではノイズになりやすいため無効
  • angle の意味は サーフェース光プレビュー と同一(315 = 左上からの光)

使用例

  • 画像読み込み → かんたん陰影 だけでスプライトに立体感がつく
  • 光の向き を変数にバインドすれば、複数スプライトの光源方向を一括変更できる
  • 細かく制御したくなったら height 出力を 画像からサーフェース につなぎ、サーフェース光プレビュー 側でライティング定義・パレットスナップを使う

限界

シルエットだけから立体を推定するため、絵の内部の段差(窓のくぼみ等)は反映されない。その場合は 画像から高さマップ の明るさモードや手描き高さマップで Surface 経路を使う。

Back to Node List
Quick Shade — PixPipeline Node Reference