【Blender 5.2】Lists(リスト)系ノードについてデータ型や使い方について解説:ジオメトリノード

blender
記事内に広告が含まれています。

Blender 5.2で新たに追加されたLists(リスト)データ型と、それに対応するリスト系ノードについて解説します。

リストの基本的な概念から、各ノードの役割や使い方、並べ替え(Sort)やフィルタリング(Filter)の方法まで、実例を交えながら分かりやすく紹介しています。

スポンサーリンク

Lists(リスト)とは?

Lists(リスト)は、数値や文字列などのデータを、任意の長さでまとめて保持できる新しいデータ型です。

Blender 5.2で追加され、これまでの

  • 単一の値(Value)
  • フィールド(Field)
  • ボリュームグリッド(Volume Grid)

に続く、新しい基本データ型となります。

Blender 5.2ではリストを扱うための基本的なノードのみが用意されていますが、今後さらに機能が拡張される予定です。

スポンサーリンク

リストの作成

リストを作成する方法は主に2つあります。
※それぞれのノードの詳細な使い方については下のセクションで紹介しています。

Field to Listノード

Field to Listノードは、指定した長さのリストを作成します。

各要素はフィールドを評価して生成されるため、Indexノードを利用して要素ごとに異なる値を設定できます。

フィールドに対応しているデータ型であれば利用でき、リストを作成する方法として最も高速で効率的です。

Closure to Listノード

Closure to Listノードも指定した長さのリストを作成します。

こちらはインデックス入力を持つClosure(クロージャ)を評価して各要素を生成します。

あらゆるデータ型のリストを作成できますが、Field to Listよりも処理負荷が高くなります。

スポンサーリンク

リストの取得

List Lengthノード

リストに含まれる要素数(アイテム数)を出力します。

Get List Itemノード

リスト内の指定した位置(インデックスを指定)にある要素を取得します。

クロージャから作成した頂点数の違うメッシュのリストが存在しています。

例えば上の図では頂点数が(0,1,2,3,4,5,6,7)のメッシュのリストが出来ていて、Get List Itemノードでインデックス6番の六角形のメッシュを取得しています。

スポンサーリンク

リストの操作

Mathノードにリストを入力すると、リスト内のすべての要素に対して同じ計算が実行されます。

また、2つのリスト同士を演算することも可能です。

この場合、長さが異なるリスト同士では、短い方のリストが繰り返し使用され、長い方の長さに合わせて計算されます。

例えば、

  • リストA:[1, 2]
  • リストB:[10, 11, 13, 14]

を加算すると、

[11, 13, 14, 16]

のように計算されます。

Filter Listノード

Filter Listノードは、条件に一致する要素だけを取り出して、新しいリストを作成します。

Sort Listノード

Sort Listノードは、指定したWeight(重み)を基準にリストを並べ替えます。

Weightには自由に値を指定できるため、数値だけでなく、任意の基準でリストをソートできます。

Filter List, Sort List ノードに関しては下記のセクションで詳細に解説しています。

スポンサーリンク

それぞれのノードの紹介

以下がBlender5.2で追加されたリスト関係のノードです。

  • Field to List
  • Closure to List
  • List Length…以下解説なし
  • Get List Item…以下解説なし
  • Filter List
  • Sort List
スポンサーリンク

Field to Listノード

Field to Listノードは、フィールド(Field)を評価し、その結果をリスト(List)へ変換するノードです。

フィールドを評価し、その値を順番にまとめたリストを作成します。

フィールドを入力として受け取るノードではなく、リストを扱うノードへデータを渡したい場合に使用します。

入力

  • Count(数)
    生成するリストの要素数(アイテム数)を指定します。
  • +/Field Inputs(フィールド入力)
    • フィールドを入力します。
      • +を押すとリストの名前やデータの型を入力できます。
      • ソケットをつなぐと自動でリストが作成されます。
    • 複数のフィールドを追加でき、それぞれが個別のリストとして出力されます。

出力

入力した各フィールドごとに、それぞれ対応するリストが出力されます。

※ただジオメトリに依存する位置などのフィールド値はSample Indexノードなどを介さないと取得できませんでした。

使用例

例えば、各ポイントのPositionIndexをリストとして取得したい場合や、Index Switchノードなどを使ってただのリスト型のデータを作成することができます。

ジオメトリに付随させたい場合はSet Geometry Bundleなどでセットすることもできます。

作成したリストは、Get List ItemFilter ListSort Listなど、リスト対応ノードで利用できます。

従来はフィールドとして扱っていたデータをリストへ変換することで、複数の値をまとめて処理したり、並べ替えたり、抽出したりできるようになります。

スポンサーリンク

Closure to Listノード

Closure to Listノードは、Closure(クロージャ)を指定した回数だけ評価し、その結果をリスト(List)として生成するノードです。

各評価では現在のインデックスなどを利用できるため、要素ごとに異なる値を持つリストを手続き的(プロシージャル)に作成できます。

Field to Listノードが既存のフィールドをリスト化するのに対し、Closure to ListノードはClosureを実行して新しいリストを生成するために使用します。

入力

  • Count(数)
    生成するリストの要素数(アイテム数)を指定します。
  • Closure
    リストの各要素を生成するためのClosureを入力します。

Closureはリストの要素ごとに1回ずつ評価され、現在のインデックスなどを利用して異なる値を生成できます。

出力

それぞれ対応するリストが出力されます。

使用例

Closure内で現在のインデックスを利用すれば、

  • 0, 1, 2, 3, ...
  • 0, 2, 4, 6, ...
  • sin(Index)の値

のように、規則性を持つリストを生成できます。

Field to Listが「既存のフィールドをリスト化する」ノードであるのに対し、Closure to Listは処理を繰り返し実行しながら、新しいリストを生成するノードです。

スポンサーリンク

Filter Listノード

Filter Listノードは、ブール値(True / False)のリストを条件として、入力したリストを2つのリストに分けるノードです。

Selection(選択)がTrueの要素はSelection出力へ、Falseの要素はInverted出力へ振り分けられます。

リストから条件に一致する要素だけを抽出したい場合に使用します。

入力

  • List(リスト)
    フィルタリングする対象のリストを入力します。
  • Selection(選択)
    各要素を振り分けるためのブール値リストを入力します。

入力リストとSelectionリストはインデックスごとに対応付けられます。

例えば、

List       : [10, 20, 30, 40]
Selection  : [T,  F,  T,  F]

の場合、

  • Selection出力:[10, 30]
  • Inverted出力:[20, 40]

となります。

スポンサーリンク

Sort Listノード

Sort Listノードは、リスト内の要素を指定した重み(Sort Weight)に基づいて並べ替えるノードです。

並べ替えは昇順(小さい値から大きい値)で行われます。

また、要素をグループごとに分けて個別に並べ替えたり、一部の要素だけを並べ替えたりすることもできます。

入力

  • List(リスト)
    並べ替える対象のリストを入力します。
  • Selection(選択)
    並べ替えの対象となる要素を指定します。Trueになっている要素だけが並べ替えられ、Falseの要素は元の位置のまま保持されます。
  • Group ID
    リストをグループごとに分けて並べ替えます。
    同じGroup IDを持つ要素同士だけが並べ替えられ、異なるGroup IDの要素には影響しません。

例えば、

List      : [1, 3, 2, 5, 4]
Group ID  : [0, 0, 1, 1, 1]
Weight    : [2, 1, 2, 3, 1]

の場合、

  • Group 0 → [2, 1]
  • Group 1 → [5, 3, 4]

のように、それぞれ独立して並べ替えが行われます。

  • Sort Weight
    リストを並べ替える基準となる値です。
    値が小さい要素ほど先頭に配置されます。
    並べ替えの基準はリスト内の値そのものではなく、このSort Weightで指定した値になります。

使用例

例えば、名前のリストを年齢順に並べ替えたい場合、

名前      : ["A", "B", "C"]
年齢      : [25, 18, 30]

とし、

年齢をSort Weightへ入力すると、

["B", "A", "C"]

のように、年齢の小さい順へ並べ替えられます。

Sort Listノードは、リストの値そのものではなく、任意の重み(Sort Weight)を基準に柔軟な並べ替えができるのが特徴です。また、SelectionやGroup IDを組み合わせることで、一部の要素だけを並べ替えたり、複数のグループを独立してソートしたりできます。

スポンサーリンク

まとめ

Lists(リスト)は、Geometry Nodesで複数のデータを一つのまとまりとして扱うための新しいデータ型です。

従来は複数の属性やフィールドを組み合わせて表現していた処理も、リストを使うことでより直感的に扱えるようになります。

Blender 5.2ではまだ基本的な機能のみですが、今後さらに多くのノードが対応することで、Geometry Nodesの表現力や柔軟性が大きく向上していくことが期待されています。

今のところ他のオブジェクトやモディファイアを超えて使う場合はジオメトリにバンドルすることが必要だったりしますが、おそらくジオメトリに依存しないデータを扱えるような流れになっているんじゃないかと思います。

スポンサーリンク

関連記事

コメント