2022-06-15

【Geometry Nodes】Selection(選択)って何【Blender】

Instance on Pointsの入力項目「Selection(選択)」ソケットとはなんなのか。

Article Image
使用ソフトウェアバージョン備考
Blender3.2

Selection(選択)って何?

おそらくこのソケットを最も見かけるのがInstance on Pointsの「Selection」だろう。

Selectionソケット

これは何なのだろうか。

今回は

  1. これにはどういう意味があるのか
  2. どうやって使うのか

の2点がわかるように解説する。

読者のレベル

次のレベルを想定

  • ジオメトリノードでInstance on Pointsを使ったことがある(簡単な作例は作ったことがある)
  • プログラミング一般においてif文とその条件の概念がわかる

少しプログラミングの概念が入るので注意。

ソケットの色と形状

Selectionのソケットをよく見ると、ちょっと変な形をしている。

ソケット形状

この形、色、中央のドットに意味があり次のようになっている

ピンク色

Boolean型(True, False)を受け取る。

ここに数値で0以下を入力した場合false, 0より大きければtrueとしても扱われる。

中央のドット

現在の入力値が単一の値であることを示している。

ドットが表示されているということはつまり、今は全ての頂点に同じ値が適用されている。

フィールドを入力するとドットは消える。

ひし形

フィールドであることを示している。

ここでは難しいことは説明しないがこの仕様により各頂点に別々の値が適用できる。

今は配列のような複数の値が入ってくるイメージで良い(厳密には関数が入っているので違うが)

フィールド(ひし形)の概念は次の記事で解説(2022/06/25追記)

【Geometry Nodes】フィールドって何?PositionやIndexの使い方【Blender】 | 謎の技術研究部

Selectionの基本

まずは「どういうものか」を解説する。

次のような例を用意した。

作例ノード

実行結果

グリッドの各頂点にキューブを配置しただけ。

単一のfalseを入れてみる

上で説明した通り、ここはBooleanを受け取っているので

picture 5

こうすることで全ての頂点のSelectionfalseのデータを送る事ができる。

結果は

なにもなし

何も描画されなくなる。

逆にTrueを入れると元通りになる。

元通り

つまり?

かなり乱暴な例ではあるが、Selectionは各頂点それぞれに対して「描画するかどうか」を決定している。

Trueが入っていればその頂点は描画される。

Falseを入れるとその頂点は消える。

今回の例ではすべての頂点に同じBoolean値を入れているので全部の表示/非表示が一斉に切り替わっているだけだ。

使い方

さて、そうなると任意の頂点だけを表示(それ以外は非表示)するということができそうだがどうやればいいのだろうか。

次のようなノードを組んでみた。

Indexを使ったノード例

  1. Indexはそれぞれの頂点に対して、そのまま頂点番号が出てくる。
  2. CompareノードのEqualを使ってIndexがBの値かどうかを比較してBoolean(YesならTrue)を出している。

フィールド(ひし形)の概念は次の記事で解説(2022/06/25追記)

【Geometry Nodes】フィールドって何?PositionやIndexの使い方【Blender】 | 謎の技術研究部

つまりこのノードでは頂点番号が0の頂点のときだけTrueが入る。

さて、実行結果は当然ではあるが次になる。

左下だけ描画された

このように特定の頂点だけ表示することができるので、左下の1個だけが表示された。

Bに値を入力してコントロール

先程のノードの一部を次のように変更した。

Scene Time

Scene Timeというノードを使うとタイムラインを再生した時の時間やフレームを取ってこれる。

この値をBに入れたので、表示されるキューブが次々と変更されるはずだ。

実行結果は

フレームと同じ番号のボックスが表示されるノードの完成だ。

座標で選択

つよく使いそうな例として座標範囲で箱を選択してみる。

XかYが0.1以上でTrueを返すノード

このノードではXかYのどちらかが0.1より大きくなっているキューブが表示され、それ以外は非表示になる。

実行結果

  • Positionノードは各頂点の座標を返す。
  • Separate XYZノードはVectorFloat3つにバラす。
  • Or演算はBoolean Mathというノードを使っている。

ランダムに間引き

こちらもよく使いそうな例。ランダムに間引きする。

Random Valueを使う

Random ValueノードのBooleanを使おう。

間引き結果

Probabilityをいじると間引き量がコントロールできる。

Selectionが使われている他のノード例

よく使いそうなもの例を上げると

  • Instance on Points(ポイントにインスタンス作成)を始め頂点やカーブに変換するもの
  • Extrude Mesh(メッシュ押し出し)
  • Set Position(位置指定)
  • Set Material(マテリアル設定)

他、上げたらキリがないぐらいたくさんあるので覚えておきたい。

出力にも同様のソケットあり

Selectionは入力ソケットだけではなく、出力として同じような物を持っているノードもある。

次がその例

【Geometry Nodes】Starノード【Blender】 | 謎の技術研究部

以上

複雑な作品を作っていく場合はSelectionが使えるようになると一気に幅が広がると思う。

しっかり覚えておきたい。



謎の技術研究部 (謎技研)