ノード一覧に戻る

プロシージャルパレット

procedural_palette

ベース色、変数、OKLCH補正ルールから、連動して変化するパレットを作ります。

下書き
解説あり

出力ポート

名前説明
パレット
palette
Palette
レシピから計算された実際のパレットです。
レシピ
recipe
ProceduralPaletteRecipe
今後のレシピ編集・合成ノードで使うためのプロシージャルパレット定義です。

パラメータ

名前既定値範囲説明・選択肢
レシピデータ
recipe_data
CustomData
{"version":1,"variables":[{"id":"shadow_l_1","name":"Shadow L 1","comment":"影色を少し暗くします。","kind":"oklch_l","paramId":"variable_1","value":-12.0,"min":-50.0,"max":50.0,"step":0.1,"distribution":null},{"id":"shadow_l_2","name":"Shadow L 2","comment":"さらに暗い影色を作ります。","kind":"oklch_l","paramId":"variable_2","value":-24.0,"min":-50.0,"max":50.0,"step":0.1,"distribution":null}],"slots":[{"kind":"empty","index":0,"name":"Empty"},{"kind":"manual","index":1,"name":"Base Red","color":[0.9,0.18,0.28,1.0],"lightness_expression":"","chroma_expression":"","hue_expression":"","alpha_expression":"","variable_links":[]},{"kind":"oklchAdjust","index":2,"name":"Red Shadow 1","source":1,"lightness":0.0,"chroma":0.0,"hue":0.0,"alpha":0.0,"lightness_expression":"","chroma_expression":"","hue_expression":"","alpha_expression":"","variable_links":["shadow_l_1"]},{"kind":"oklchAdjust","index":3,"name":"Red Shadow 2","source":1,"lightness":0.0,"chroma":0.0,"hue":0.0,"alpha":0.0,"lightness_expression":"","chroma_expression":"","hue_expression":"","alpha_expression":"","variable_links":["shadow_l_2"]},{"kind":"manual","index":4,"name":"Base Blue","color":[0.2,0.38,0.95,1.0],"lightness_expression":"","chroma_expression":"","hue_expression":"","alpha_expression":"","variable_links":[]},{"kind":"oklchAdjust","index":5,"name":"Blue Shadow 1","source":4,"lightness":0.0,"chroma":0.0,"hue":0.0,"alpha":0.0,"lightness_expression":"","chroma_expression":"","hue_expression":"","alpha_expression":"","variable_links":["shadow_l_1"]},{"kind":"oklchAdjust","index":6,"name":"Blue Shadow 2","source":4,"lightness":0.0,"chroma":0.0,"hue":0.0,"alpha":0.0,"lightness_expression":"","chroma_expression":"","hue_expression":"","alpha_expression":"","variable_links":["shadow_l_2"]}],"slotOrder":[]}

プロシージャルパレットの変数とスロット定義です。

変数 1
variable_1
Float
-12-100–100 / step 0.01

レシピ式で使う変数です。入力ピン化すると、影色量などを外部から動かせます。

変数 2
variable_2
Float
-24-100–100 / step 0.01

レシピ式で使う変数です。入力ピン化すると、影色量などを外部から動かせます。

変数 3
variable_3
Float
0-100–100 / step 0.01

レシピ式で使う変数です。入力ピン化すると、影色量などを外部から動かせます。

変数 4
variable_4
Float
0-100–100 / step 0.01

レシピ式で使う変数です。入力ピン化すると、影色量などを外部から動かせます。

変数 5
variable_5
Float
0-100–100 / step 0.01

レシピ式で使う変数です。入力ピン化すると、影色量などを外部から動かせます。

変数 6
variable_6
Float
0-100–100 / step 0.01

レシピ式で使う変数です。入力ピン化すると、影色量などを外部から動かせます。

変数 7
variable_7
Float
0-100–100 / step 0.01

レシピ式で使う変数です。入力ピン化すると、影色量などを外部から動かせます。

変数 8
variable_8
Float
0-100–100 / step 0.01

レシピ式で使う変数です。入力ピン化すると、影色量などを外部から動かせます。

エディタ幅
_editor_width
Int
840520–1800

プロシージャルパレット編集画面の幅です。

エディタ高さ
_editor_height
Int
620360–1400

プロシージャルパレット編集画面の高さです。

  • type_id: procedural_palette
  • category: Palette/Create
  • editor: ProceduralPaletteEditor

目的

ベース色と変数から、連動して変わるパレットを作るノードです。

たとえば「赤の基本色」「赤の影1」「赤の影2」「青の基本色」「青の影1」「青の影2」のような色セットを、影色用の変数でまとめて調整できます。

このノードが出す主出力は通常の Palette です。そのため、IndexedImage RenderIndexedImage Apply Palette など、既存のパレット入力にそのまま接続できます。画像側の処理を特別に変える必要はありません。

レシピの考え方

レシピは大きく2つで構成されます。

要素 役割
変数 複数のスロットから参照できる数値。例: shadow_l_1 = -12
スロット パレットの各番号。手動色または派生色として定義

スロットには以下の種類があります。

種類 説明
手動色 その番号に直接色を入れる
OKLCH派生 別の番号の色を元にして、OKLCH基準で L / C / H / A をずらす

式には以下を使えます。

書き方 意味
-12 そのまま数値として使う
$shadow_l_1 shadow_l_1 変数を参照
var:shadow_l_1 同上

OKLCH派生の L はパーセントポイントです。-12 なら、元色より OKLCH の明るさを 12 ポイント下げます。

使い方

  1. Procedural Palette を追加する
  2. エディタを開く
  3. ベース色を 手動色 として作る
  4. 影色やハイライト色を OKLCH派生 として作る
  5. L$shadow_l_1 のような変数を入れる
  6. palette 出力を IndexedImage Render などへ接続する
  7. 変数スライダーを動かし、接続先の画像の色変化を確認する

変数パラメータ

このノードは variable_1 から variable_8 までの Float パラメータを持ちます。

専用エディタ内の変数は、このパラメータに紐づけられます。パラメータを入力ピン化すれば、波形ノードや数値ノードから影の強さなどを動的に操作できます。

v1 の制限

  • レシピの外部入力はまだありません。
  • 専用レシピ型は出力のみです。
  • 派生方式は OKLCH 補正から開始しています。
  • グラフ型の高度な式エディタではなく、まずは専用エディタ上の変数とスロット編集で運用します。

この構成にしておくことで、後から「レシピ合成」「スロット範囲生成」「色相環から自動生成」などを追加しても、既存の Palette 適用ノードを変更せずに拡張できます。

ノード一覧に戻る