まず大事なこと
- このノードは、
itemsに入ってきた候補を 1 件ずつ適用して画像を作る ノードです - 時間方向の反復をする
AnimationRenderとは違い、こちらは 候補方向の反復 です
何が起きるか
考え方はこうです。
itemsから 1 件選ぶ- その snapshot を graph に当てる
image入力の結果を 1 枚レンダリングする- それを全件ぶん繰り返す
出力の見方
| 出力 | 何が入るか | どう使うか |
|---|---|---|
records |
実際に使った候補一覧 | 候補の記録確認 |
frames |
1 件ごとの画像一覧 | 個別フレーム確認 |
spritesheet |
frames をまとめたシート |
再生・保存・書き出し |
count |
成功した候補数 | 全体件数確認 |
frame_count |
シートのフレーム数 | metadata 確認 |
まずはこの例
たとえば次の graph を作ります。
PixelCanvasBrightnessVariantRangeBatchRender
設定:
VariantRange.key = strengthVariantRange.start = 0VariantRange.end = 1VariantRange.count = 5Brightnessの強度パラメータを変数strengthに bindPixelCanvas.image -> Brightness.image -> BatchRender.imageVariantRange.variants -> BatchRender.items
このとき VariantRange 側の候補はこうです。
[
{ "snapshot": { "values": { "strength": 0.0 } } },
{ "snapshot": { "values": { "strength": 0.25 } } },
{ "snapshot": { "values": { "strength": 0.5 } } },
{ "snapshot": { "values": { "strength": 0.75 } } },
{ "snapshot": { "values": { "strength": 1.0 } } }
]
BatchRender はこれを 1 件ずつ graph に当てるので、明るさ違いの画像 5 枚が作られます。
records
[
{ "name": "strength=0.000", "snapshot": { "values": { "strength": 0.0 } } },
{ "name": "strength=0.250", "snapshot": { "values": { "strength": 0.25 } } },
{ "name": "strength=0.500", "snapshot": { "values": { "strength": 0.5 } } },
{ "name": "strength=0.750", "snapshot": { "values": { "strength": 0.75 } } },
{ "name": "strength=1.000", "snapshot": { "values": { "strength": 1.0 } } }
]
frames
[
"<Image strength=0.0>",
"<Image strength=0.25>",
"<Image strength=0.5>",
"<Image strength=0.75>",
"<Image strength=1.0>"
]
count / frame_count
count = 5
frame_count = 5
2軸の組み合わせ例
CartesianProduct を前段に置くと、2軸の候補をそのまま batch できます。
例:
VariantRange(key=strength, start=0, end=1, count=3)SeedRange(key=seed, start=10, count=2, step=1)CartesianProductBatchRender
このとき組み合わせ数は 3 x 2 = 6 件です。
BatchRender は CartesianProduct の中に入っている snapshot をまとめて、実際にはこういう候補として扱います。
{
"snapshot": {
"values": {
"strength": 0.0,
"seed": 10
}
}
}
snapshot key の当て先
v1 では、snapshot key は次の順で graph へ当てます。
- variable-bound param
variable_refノードnodeId:paramId形式の direct param
初心者向けには、まず 変数名に合わせる のが一番分かりやすいです。
注意
- 各項目は
VariantRecordに正規化されてから使われます ListZip/CartesianProductが返すMapもそのまま渡せますindex/a_index/b_indexのような bookkeeping key は自動で無視します
Solid 8方向素材
Solid Render のカメラ方位角を45度刻みで量産する時は、VariantRange から direct param key を作るのが最短です。
設定例:
Solid RenderノードID:renderVariantRange.key = render:azimuthVariantRange.start = 0VariantRange.end = 315VariantRange.count = 8Solid Render.frame_mode = FixedCanvasSolid Render.camera_angle_snap = 45BatchRender.columns = 8
BatchRender は各 snapshot を1件ずつ graph に当てるため、8方向の画像を同じフレームサイズでまとめられます。