概要
2本のリストの全組み合わせを作るノードです。「サイズ2種 × 色3種 = 6通り」の
ように、多軸のバリエーション表を機械的に展開します。素材の量産
(batch_render)の前段として使うのが典型です。
使い方のポイント
- 量産の定番構成:
variant_range(強度) + seed_range(seed) → cartesian_product → batch_render。「強度5段階 × seed4個 = 20枚」が一撃で出る - 件数は掛け算で増える(
a.len() × b.len())。3軸目が要るときは 出力をさらに別の cartesian_product に通せるが、件数の爆発に注意 - 「対応するペアだけ」でいいなら
list_zipの方が件数が増えない
関連ノード
list_zip— 全組み合わせではなくペア対応variant_range/seed_range— 軸の候補生成batch_render— 展開結果の量産先list_map— 組み合わせ表の後加工
まず大事なこと
ListZipが「同じ番号どうし」なのに対して、CartesianProductは 全組み合わせ です- 2 件 x 3 件なら 6 件になります
まずはこの例
次の 2 つのリストを入れます。
a = ["small", "large"]
b = ["red", "blue", "green"]
このとき entries はこうなります。
[
{ "index": 0, "a_index": 0, "b_index": 0, "a": "small", "b": "red" },
{ "index": 1, "a_index": 0, "b_index": 1, "a": "small", "b": "blue" },
{ "index": 2, "a_index": 0, "b_index": 2, "a": "small", "b": "green" },
{ "index": 3, "a_index": 1, "b_index": 0, "a": "large", "b": "red" },
{ "index": 4, "a_index": 1, "b_index": 1, "a": "large", "b": "blue" },
{ "index": 5, "a_index": 1, "b_index": 2, "a": "large", "b": "green" }
]
count = 6
後段からどう見えるか
ListMap や ListFilter にこの entries を入れると、
indexa_indexb_indexab
をそのまま式で使えます。
例:
a_index == 0
a + b
Variant 系との相性
a と b に VariantRecord のリストを入れると、後段の BatchRender は a と b の中の snapshot を自動でまとめて使えます。
つまり、「強度候補 x seed 候補」のような多軸量産の前段として便利です。
どういう時に使うか
- seed 候補と別パラメータ候補の全組み合わせを作りたい時
- 2軸の候補空間を明示データとして作りたい時
- variant 候補生成前の batch 候補テーブルを作りたい時
注意
a.len() * b.len()件になるので、候補数が一気に増えますPaletteはList<Color>として扱います