ノード一覧に戻る

バッチレンダー

batch_render

variant 的な項目を 1 件ずつ適用して上流画像を評価し、フレーム群とスプライトシートを返します

下書き
解説あり

入力ポート

名前説明
項目一覧
items
List<Any>
必須
レンダリング対象の項目一覧です。VariantRecord / VariantSnapshot / snapshot 的な Map を受けます。
画像
image
Image
必須
各項目ごとに評価する画像レーンです

出力ポート

名前説明
スプライトシート
spritesheet
SpriteSheet
成功した項目をまとめたスプライトシートです
フレーム一覧
frames
List<Image>
レンダリングしたフレーム画像一覧です
レコード一覧
records
List<VariantRecord>
レンダリングに使うよう正規化した variant record 一覧です
名前一覧
names
List<Text>
正規化後の項目名一覧です
個数
count
Int
正規化した項目数です
フレーム数
frame_count
Int
結果スプライトシートのフレーム数です
FPS
fps
Int
スプライトシート metadata に入る再生 FPS です
列数
columns
Int
実際に使う列数です
行数
rows
Int
実際に使う行数です
フレーム幅
frame_width
Int
1フレームの幅です
フレーム高さ
frame_height
Int
1フレームの高さです
配置順
fill_order
Text
スプライトシートの配置順です

パラメータ

名前既定値範囲説明・選択肢
FPS
fps
Int
121–60

結果スプライトシートの再生 FPS です

列数
columns
Int
00–64

スプライトシートの列数です (0 = 自動)

配置順
fill_order
Enum
RowMajor

フレームをスプライトシートへ詰める順番です

  • 右へRowMajor
  • 下へColumnMajor

まず大事なこと

  • このノードは、items に入ってきた候補を 1 件ずつ適用して画像を作る ノードです
  • 時間方向の反復をする AnimationRender とは違い、こちらは 候補方向の反復 です

何が起きるか

考え方はこうです。

  1. items から 1 件選ぶ
  2. その snapshot を graph に当てる
  3. image 入力の結果を 1 枚レンダリングする
  4. それを全件ぶん繰り返す

出力の見方

出力 何が入るか どう使うか
records 実際に使った候補一覧 候補の記録確認
frames 1 件ごとの画像一覧 個別フレーム確認
spritesheet frames をまとめたシート 再生・保存・書き出し
count 成功した候補数 全体件数確認
frame_count シートのフレーム数 metadata 確認

まずはこの例

たとえば次の graph を作ります。

  • PixelCanvas
  • Brightness
  • VariantRange
  • BatchRender

設定:

  • VariantRange.key = strength
  • VariantRange.start = 0
  • VariantRange.end = 1
  • VariantRange.count = 5
  • Brightness の強度パラメータを変数 strength に bind
  • PixelCanvas.image -> Brightness.image -> BatchRender.image
  • VariantRange.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)
  • CartesianProduct
  • BatchRender

このとき組み合わせ数は 3 x 2 = 6 件です。

BatchRenderCartesianProduct の中に入っている snapshot をまとめて、実際にはこういう候補として扱います。

{
  "snapshot": {
    "values": {
      "strength": 0.0,
      "seed": 10
    }
  }
}

snapshot key の当て先

v1 では、snapshot key は次の順で graph へ当てます。

  1. variable-bound param
  2. variable_ref ノード
  3. 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: render
  • VariantRange.key = render:azimuth
  • VariantRange.start = 0
  • VariantRange.end = 315
  • VariantRange.count = 8
  • Solid Render.frame_mode = FixedCanvas
  • Solid Render.camera_angle_snap = 45
  • BatchRender.columns = 8

BatchRender は各 snapshot を1件ずつ graph に当てるため、8方向の画像を同じフレームサイズでまとめられます。

ノード一覧に戻る
バッチレンダー — PixPipeline ノード解説