ノード一覧に戻る

かんたん陰影

quick_shade

1ノードでドット絵に光と影をつけます。シルエットから立体を自動で推定するため、高さマップや法線マップを用意する必要はありません。

下書き
解説あり

入力ポート

名前説明
画像
input
Image
必須
光と影をつけたい画像です。

出力ポート

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

パラメータ

名前既定値範囲説明・選択肢
光の向き
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 経路を使う。

ノード一覧に戻る
かんたん陰影 — PixPipeline ノード解説