ノード一覧に戻る

リスト変換

list_map

各要素に constrained expression を適用して別のリストへ変換します

確認済み
解説あり

入力ポート

名前説明
リスト
list
List<Any>
必須
変換元のリストです
X
x
Number
必要なら使える数値変数 x です
Y
y
Number
必要なら使える数値変数 y です
Z
z
Number
必要なら使える数値変数 z です
W
w
Number
必要なら使える数値変数 w です
Vec
vec
Vec2
必要なら使える Vec2 変数です
フラグ
flag
Bool
必要なら使える Bool 変数です

出力ポート

名前説明
リスト
list
List<Float>
式を適用した後のリストです
要素数
count
Int
変換した要素数です

パラメータ

名前既定値範囲説明・選択肢
入力要素の型
item_type
Enum
Any

入力リスト要素の期待型です

  • 数値(汎用)Number
    Float と Int の両方を扱える数値リストです
  • 小数Float
    小数値のリストです
  • 整数Int
    整数値のリストです
  • ON/OFFBool
    ON/OFF のリストです
  • Color
    色のリストです
  • 文字Text
    文字のリストです
  • 画像Image
    画像のリストです
  • パスPath
    パスのリストです
  • ピクセル線PixelLine
    ピクセル線のリストです
  • Vec2Vec2
    2D ベクトルのリストです
  • Vec3Vec3
    3D ベクトルのリストです
  • OKLCH補正OklchAdjust
    OKLCH基準の明るさ・鮮やかさ・色相・透明度の補正セットのリストです
  • パレットPalette
    パレットのリストです
  • リストList
    リストのリストを作ります
  • マップMap
    マップのリストです
  • 文字レイアウトTextLayout
    文字レイアウトのリストです
  • ピクセルパッチPixelPatch
    ピクセルパッチのリストです
  • 記録レイヤーRecordedLayer
    記録レイヤーのリストです
  • アニメーションクリップAnimationClip
    アニメーションクリップのリストです
  • AsepriteファイルAsepriteFile
    Aseprite document のリストです
  • ルールグリッドRuleGridSpec
    RuleGridSpec のリストです
  • ルールタイルセットRuleTileSet
    RuleTileSet のリストです
  • ルールタイル素材RuleTileAsset
    RuleTileAsset のリストです
  • ルールセットRuleSet
    RuleSet のリストです
  • ルールキャンバスRuleCanvas
    RuleCanvas のリストです
  • 解決済みルール配置RuleResolved
    RuleResolved のリストです
  • ルールタイルアトラスRuleTileAtlas
    RuleTileAtlas のリストです
  • 9スライスNineSlice
    9スライスUI素材のリストです
  • 2D FX 状態FxState2D
    FxState2D のリストです
  • スプライトシートSpriteSheet
    スプライトシートのリストです
  • バリアントスナップショットVariantSnapshot
    variant snapshot のリストです
  • バリアントレシピVariantRecipe
    variant recipe のリストです
  • バリアントレコードVariantRecord
    variant record のリストです
  • IsoItemIsoItem
    IsoItem のリストです
  • IsoSceneIsoScene
    IsoScene のリストです
  • IsoWorldIsoWorld
    IsoWorld のリストです
  • タイル素材TileAsset
    タイル素材のリストです(tile_palette_create の入力などに使います)
  • タイルパレットTilePalette
    タイルパレットのリストです
  • タイルマップTileCanvas
    タイルマップのリストです
  • 解決済みタイル配置TileResolved
    解決済みタイル配置のリストです
  • Any(上級者向け)Any
    上級者向けです。どの型でも混ぜられますが、取り出した値の型が下流ノードの期待と合わないと実行時エラーになります。
出力要素の型
output_type
Enum
Float

式の結果として作る要素型です

  • 小数Float
    各要素を小数へ変換します
  • 真偽値Bool
    各要素を真偽値へ変換します
  • Vec2Vec2
    各要素を Vec2 へ変換します
expression
Text
0

未編集の間は、入力要素の型に合う安全な既定式へ切り替わります。item 系の変数は入力要素の型ごとに異なります。index, count, x, y, z, w, vec, vx, vy, flag, time, frame, total_frames は共通です。Map は有効なキー名と item_<キー名> を公開します。入力ピンがつながっている時は Inspector の既定値より入力ピンが優先されます。

X
x
Float
0-10000–10000 / step 0.01

入力ピンが未接続の時に使う x の値です

Y
y
Float
0-10000–10000 / step 0.01

入力ピンが未接続の時に使う y の値です

Z
z
Float
0-10000–10000 / step 0.01

入力ピンが未接続の時に使う z の値です

W
w
Float
0-10000–10000 / step 0.01

入力ピンが未接続の時に使う w の値です

Vec X
vec_x
Float
0-10000–10000 / step 0.01

vec 入力ピンが未接続の時に使う X 成分です

Vec Y
vec_y
Float
0-10000–10000 / step 0.01

vec 入力ピンが未接続の時に使う Y 成分です

フラグ
flag
Bool
false

flag 入力ピンが未接続の時に使う真偽値です

概要

リストの全要素に同じ式を一括適用するノードです。[1,2,3]item * 2[2,4,6] にする、という具合に、値の列をまとめて加工します。バリアントや バッチ処理に渡す数値列の下ごしらえが主な仕事です。

使い方のポイント

  • variant_range 等で作った等間隔の数列を、item * item(二次カーブ)や sin(item * pi)(山なり)のような式で非線形な列に変換するのが典型
  • index / count が使えるので「番号に応じた値」も作れる: 先頭を0、末尾を1にするなら index / max(count - 1, 1) を使う
  • 式は expression_float と同じエンジン。まず単体の expression_float で 式の挙動を確認してから持ち込むとデバッグが楽

関連ノード

  • expression_float — 同じ式エンジンの単値版
  • list_zip / list_enumerate — 複数リストの合流・番号付き化(このノードの前段)
  • variant_range / seed_range — 入力リストの生成元
  • list_create — 手動でのリスト作成

まず大事なこと

  • expression は、リストの各要素ごとに1回ずつ評価されます
  • つまり list = [1, 2, 3]expression = item * 2 なら、
    • 1個目では 1 * 2
    • 2個目では 2 * 2
    • 3個目では 3 * 2 が順番に実行されます

要素の型ごとに使える名前と既定式

要素そのものから作られる名前は型によって異なります。item がどの型でも使える わけではありません。item_type を変更すると、まだ自動既定式を使っている時だけ expression も次の有効な式へ切り替わります。自分で書き換えた式は維持されます。

要素の型 要素から使える名前 自動既定式
Number / Float / Int / Bool item item
Color item_r, item_g, item_b, item_a item_r
Vec2 item(Vec2), item_x, item_y item_x
Vec3 item_x, item_y, item_z item_x
Map 下記のキー名 0
Any と上記以外の構造化型 構造化値から作る共通名はありません 0

Any では、実際の各要素が数値・Color・Vec2・Vec3・Map なら、その実体に対応する 名前が評価時に使えます。混在リストでも常に成立する既定式として 0 を使います。

次の共通名は要素の型に関係なく使えます。

名前 意味
index 何番目の要素か。0始まりです index % 2
count 全体の要素数です index / max(count - 1, 1)
x, y, z, w 補助入力ピン、または Inspector で与える数値です item * x
vec, vx, vy 補助 Vec2 入力、または Inspector の vec_x, vec_y です length(vec)
flag 補助 Bool 入力、または Inspector の既定値です if(flag, 1, 0)
time, frame, total_frames 評価時の時刻情報です sin(time * pi * 2)

Map 要素の時

要素が Map の時、有効な識別子(value, a, _seed など)になっている非予約キーは そのキー名を式へ直接書けます。さらに、有効なすべてのキーは item_ を付けた名前でも 参照できます。

たとえば要素がこうなら:

{ "index": 0, "value": 0.25 }

式の中でそのままこう書けます。

value < 0.5
item_index + 1

index は常に「リスト内の現在位置」です。Map 内の index キーを読む時は item_index を使います。予約名 item, index, count, x, y, z, w, vec, vx, vy, flag, time, frame, total_frames は標準変数が優先され、同名の Map 値は item_<キー名> で参照します。先頭が英字か _、残りが英数字か _ で構成された 有効な識別子ではないキーは、式変数として公開されません。

よくある入力ごとの読み方:

入力元 要素の形 式で使える名前
普通の数値リスト 1, 2, 3 item, index, count
ListEnumerate { "index": 0, "item": 10 } 現在位置は index、Map 値は item_index, item_item
ListZip { "index": 0, "a": 1, "b": 10 } a, b、Map の index は item_index
CartesianProduct 複数キーの Map 非予約キーを直接、または有効な各キーを item_<キー名> で参照

よく使う式

  • item * 2
    • 数値を2倍します
  • item + index
    • 要素番号ぶんだけ値をずらします
  • item * x
    • 外から与えた係数で各要素をまとめて変換します
  • value < 0.5
    • Map の value を見て Bool を作ります
  • a + b
    • ListZip の2本を足します
  • vec2(item, index)
    • 数値リストから Vec2 リストを作ります

具体例

例1: 数値を2倍にする

入力:

[1, 2, 3]

設定:

  • item_type = Number
  • output_type = Float
  • expression = item * 2

出力:

list = [2.0, 4.0, 6.0]
count = 3

例2: Map を Bool に変換する

入力:

[
  { "index": 0, "value": 0.25 },
  { "index": 1, "value": 0.75 }
]

設定:

  • item_type = Map
  • output_type = Bool
  • expression = value < 0.5 && item_index == 0

出力:

list = [true, false]
count = 2

例3: ListZip の結果を足し算する

入力:

[
  { "index": 0, "a": 1, "b": 10 },
  { "index": 1, "a": 2, "b": 20 }
]

設定:

  • item_type = Map
  • output_type = Float
  • expression = a + b

出力:

list = [11.0, 22.0]
count = 2

例4: 変数や補助入力を使ってまとめて倍率を変える

入力:

[1, 2, 3]

設定:

  • item_type = Number
  • output_type = Float
  • expression = item * x
  • x = 10

出力:

list = [10.0, 20.0, 30.0]
count = 3

x は Inspector で直接入れてもよいですし、Variable Refx 入力ピンへつないでも使えます。

どういう時に使うか

  • range / seed / zip / enumerate の結果を別の値列へ変換したい時
  • BatchRender へ渡す前に、値候補を軽く加工したい時

注意

  • v1 は constrained expression です
  • 任意 subgraph を各要素に回すノードではありません
  • Map の予約名は標準変数が優先されます。同名の Map 値は item_<キー名> で参照します
ノード一覧に戻る
リスト変換 — PixPipeline ノード解説