概要
ペイントツールでおなじみの「トーンカーブ」です。明暗の対応関係を自由な曲線で
描き換えることで、コントラスト・ガンマ・フェードを1ノードで細かく制御できます。
brightness 系で足りない「暗部だけ持ち上げたい」ような非線形の補正はこれの出番です。
ノードを選択すると、インスペクタにカーブエディタが表示されます。 ダブルクリックで制御点を追加、右クリックで削除、ドラッグで移動できます。
使い方のポイント
- 定番のSカーブ(暗部を下げ・明部を上げ)でコントラスト強調。ドット絵の「眠い」下地が 締まる
gradient_mapの前に置くと効果的: カーブで明暗の分布を整えてから色を割り当てると、 各色の面積バランスを制御できるchannel = Alphaはフェードアニメーションの質感調整に便利(線形フェード→ イーズの効いたフェード)- 制御点は少なめ(3〜4点)が扱いやすい。多すぎると波打って階調が反転しやすい
よくある失敗
- 何も変化しない: 既定のカーブ((0,0)-(1,1)の直線)はパススルー。制御点を 追加・移動して初めて効果が出る
- 階調が反転して不自然: カーブが途中で下がっている(右下がり区間)。意図がなければ 制御点を整理して単調増加に戻す
- カーブデータ破損のエラーが出る: 壊れたJSONや制御点が2個未満のデータを、
無言で直線カーブとして処理することはありません。インスペクタのカーブエディタで
Linearプリセットを選ぶと、既定の直線へ安全に戻せます。 - ドット絵の色数が増えた: カーブは連続的な変換なので中間色が生まれる。
パレット厳守の素材では後段に
palette_quantizeを置くか、palette_adjust_*系で パレット側を調整する
技術詳細
- カーブはインスペクタのエディタと同じ Catmull-Rom 補間で評価されるため、プレビューと結果が一致します
- 内部では 256 段の LUT に変換して適用します
- 未編集のデフォルト((0,0)-(1,1) の2点)は入力を完全にパススルーします
- 読み取れない制御点データはノードエラーになり、元データを勝手に上書きしません。
Linearプリセットを選ぶと、有効な既定値へ明示的に置き換えられます。 Levels(レベル補正)が値域の切り詰め、Tone Curveは形の自由な階調カーブという住み分けです
使用例
- コントラスト強調: 暗部を下げ明部を上げるSカーブを作る(点を4つ置く)
- フェード調整:
channel: Alphaにして、透明度の変化カーブを整える - 色かぶり補正:
channel: Redなどチャンネル単位でカーブを調整する
関連ノード
levels— 値域の切り詰め(白点・黒点)だけならこちらが簡単auto_levels— 自動でレンジを広げたい場合brightness— 単純な明るさ・コントラストの上下gradient_map— カーブで整えた明暗に色を割り当てる定番の次段