まず大事なこと
Bakeは 今の結果を保存して、その後はその保存値を使う ためのものです- active の間は、このノードより上流の専用枝を 再評価しません
- ただし、その上流が他の枝でも使われているなら、そちら側の評価は残ります
- 一番よく使う場面は、もうあまり触らない重い上流処理を固定して、下流作業を軽くする時です
どういう時に使うか
- 重い procedural 処理がいったん決まって、以後はその結果を土台にしたい時
- 中間結果を「ここまでは確定」と決めて、下流だけ触りたい時
- バリエーション作業や後処理作業の前に、上流の結果を素材として固定したい時
- 処理結果は残したいが、毎回 upstream を再計算したくない時
どういう時には向かないか
- 少しの間だけ止めたいだけの時
- このノードの
mode = Freezeが自然です
- このノードの
- before / after 比較のために保存したい時
SnapshotNodeの方が自然です
- 上流の設定値そのものを保存して、あとでその設定に戻したい時
- これは
SnapshotNodeの役割ではありません - 設定保存は
PresetやVariantを使う方が筋が良いです
- これは
使い方
- 重い処理の出口に
BakeSubgraphを置き、modeをBakeまたはFreezeにします - Inspector でモードに対応する
Bake/Freezeを押します 保存値を使うの状態にすると、以後は live 入力ではなく保存値を返します- upstream を更新した後に反映し直したい時は
再Bakeを押します - もう一度 live で見たい時は
Liveに戻すを押します
例
PixelCanvas -> Brightness -> Outline -> BakeSubgraph -> Preview
この状態で Bake すると、Outline のその時点の画像が保存されます。
active = onBakeSubgraph.outputは保存画像を返しますPixelCanvas -> Brightness -> Outlineの専用枝は止まります
active = offBakeSubgraph.outputは live のOutlineを返します
もっと実務的な例
Noise -> Blur -> Threshold -> PaletteQuantize -> BakeSubgraph -> 後段の仕上げ
この場合、ノイズ生成やぼかしが重くても、形が決まった時点で Bake してしまえば、
- 後段の色調整
- 比較
- export 前の仕上げ
だけを軽く回せます。
何が保存されるか
- 保存されるのは その時点の出力結果 です
- 画像なら画像、Path なら Path、数値なら数値が保存されます
- 上流ノードの各パラメータ設定そのものを保存しているわけではありません
つまり、BakeSubgraph は「状態を保存する」のではなく、結果を固定する ノードです。
Bake / Freeze モード
Bake- 保存して使い回す前提です
- 完成済みの中間結果を焼いておく用途です
Freeze- 作業中の一時固定向けです
- 後で
Liveに戻すで live 評価へ戻す前提です
旧 freeze_node を含むプロジェクトはロード時にこのノードへ移行され、
mode = Freeze が自動注入されます。
注意
- 保存値は project に入るので、画像を Bake すると
.pplサイズは大きくなります capturedは比較用や確認用の出力です- 保存値は内部 envelope へ保存しています
- active にしても、他の枝で同じ upstream を使っていれば、その枝側の評価は止まりません
- 「重い枝を完全に止めたい」なら、どこを Bake 境界にするかを意識して置く必要があります