ノード一覧に戻る

リスト絞り込み

list_filter

predicate が true になった要素だけを残します

下書き
解説あり

入力ポート

名前説明
リスト
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<Any>
条件を満たした要素だけを残したリストです
要素数
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 のリストです
  • Any(上級者向け)Any
    上級者向けです。どの型でも混ぜられますが、取り出した値の型が下流ノードの期待と合わないと実行時エラーになります。
条件式
predicate
Text
true

この式が true になった要素だけを残します。 使える名前: item, index, count, x, y, z, w, vec, vx, vy, flag, time, frame, total_frames。Map 要素なら各キー名もそのまま使えます。 記述例: - item >= 0.75 - item >= x - index % 2 == 0 - value < 0.5 && index == 0 入力ピンがつながっている時は、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 入力ピンが未接続の時に使う真偽値です

まず大事なこと

  • predicate は、各要素ごとに1回ずつ評価されます
  • 結果が true なら残り、false なら捨てられます
  • つまり list = [0.25, 0.75, 1.25]predicate = item >= 0.75 なら、
    • 0.25 >= 0.75false なので捨てる
    • 0.75 >= 0.75true なので残す
    • 1.25 >= 0.75true なので残す という動きになります

使える名前一覧

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

Map 要素の時

要素が Map の時は、そのキー名をそのまま条件式に書けます。

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

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

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

value < 0.5
index == 0

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

入力元 要素の形 条件式で使える名前
普通の数値リスト 0.25, 0.75, 1.25 item, index, count
ListEnumerate { "index": 0, "item": 10 } index, item
ListZip { "index": 0, "a": 1, "b": 10 } index, a, b
CartesianProduct 複数キーの Map 各キー名をそのまま使えます

よく使う条件式

  • item >= 0.75
    • しきい値以上だけ残します
  • index % 2 == 0
    • 偶数番目だけ残します
  • item >= x
    • 外から与えたしきい値より大きい要素だけ残します
  • value < 0.5 && index == 0
    • Map の複数条件で絞ります
  • a * 10 == b
    • ListZip の2本の関係で絞ります

具体例

例1: 0.75 以上だけ残す

入力:

[0.25, 0.75, 1.25]

設定:

  • item_type = Float
  • predicate = item >= 0.75

出力:

list = [0.75, 1.25]
count = 2

例2: ListZip の結果から一部だけ残す

入力:

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

設定:

  • item_type = Map
  • predicate = a * 10 == b

出力:

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

例3: 偶数番目だけ残す

入力:

[10, 20, 30, 40, 50]

設定:

  • item_type = Number
  • predicate = index % 2 == 0

出力:

list = [10, 30, 50]
count = 3

例4: 変数や補助入力をしきい値として使う

入力:

[0.25, 0.75, 1.25]

設定:

  • item_type = Float
  • predicate = item >= x
  • x = 0.75

出力:

list = [0.75, 1.25]
count = 2

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

どういう時に使うか

  • 量産候補から条件に合うものだけ残したい時
  • BatchRender に送る前に候補数を絞りたい時

注意

  • v1 は constrained expression ベースです
  • 任意 subgraph を predicate として回す用途ではありません
  • Map 要素のキー名と x, y, z, w, vec, flag が同名の時は、補助入力側の名前が優先されます
ノード一覧に戻る
リスト絞り込み — PixPipeline ノード解説