| 使用ソフトウェア | バージョン | 備考 |
|---|---|---|
| Blender | 3.2 |
おそらくこのソケットを最も見かけるのがInstance on Pointsの「Selection」だろう。
これは何なのだろうか。
今回は
の2点がわかるように解説する。
次のレベルを想定
Instance on Pointsを使ったことがある(簡単な作例は作ったことがある)if文とその条件の概念がわかる少しプログラミングの概念が入るので注意。
Selectionのソケットをよく見ると、ちょっと変な形をしている。
この形、色、中央のドットに意味があり次のようになっている
Boolean型(True, False)を受け取る。
ここに数値で0以下を入力した場合false, 0より大きければtrueとしても扱われる。
現在の入力値が単一の値であることを示している。
ドットが表示されているということはつまり、今は全ての頂点に同じ値が適用されている。
フィールドを入力するとドットは消える。
フィールドであることを示している。
ここでは難しいことは説明しないがこの仕様により各頂点に別々の値が適用できる。
今は配列のような複数の値が入ってくるイメージで良い(厳密には関数が入っているので違うが)
フィールド(ひし形)の概念は次の記事で解説(2022/06/25追記)
【Geometry Nodes】フィールドって何?PositionやIndexの使い方【Blender】 | 謎の技術研究部
まずは「どういうものか」を解説する。
次のような例を用意した。
グリッドの各頂点にキューブを配置しただけ。
上で説明した通り、ここはBooleanを受け取っているので
こうすることで全ての頂点のSelectionにfalseのデータを送る事ができる。
結果は
何も描画されなくなる。
逆にTrueを入れると元通りになる。
かなり乱暴な例ではあるが、Selectionは各頂点それぞれに対して「描画するかどうか」を決定している。
Trueが入っていればその頂点は描画される。
Falseを入れるとその頂点は消える。
今回の例ではすべての頂点に同じBoolean値を入れているので全部の表示/非表示が一斉に切り替わっているだけだ。
さて、そうなると任意の頂点だけを表示(それ以外は非表示)するということができそうだがどうやればいいのだろうか。
次のようなノードを組んでみた。
Indexはそれぞれの頂点に対して、そのまま頂点番号が出てくる。CompareノードのEqualを使ってIndexがBの値かどうかを比較してBoolean(YesならTrue)を出している。フィールド(ひし形)の概念は次の記事で解説(2022/06/25追記)
【Geometry Nodes】フィールドって何?PositionやIndexの使い方【Blender】 | 謎の技術研究部
つまりこのノードでは頂点番号が0の頂点のときだけTrueが入る。
さて、実行結果は当然ではあるが次になる。
このように特定の頂点だけ表示することができるので、左下の1個だけが表示された。
先程のノードの一部を次のように変更した。
Scene Timeというノードを使うとタイムラインを再生した時の時間やフレームを取ってこれる。
この値をBに入れたので、表示されるキューブが次々と変更されるはずだ。
実行結果は
フレームと同じ番号のボックスが表示されるノードの完成だ。
よく使いそうな例として座標範囲で箱を選択してみる。
このノードではXかYのどちらかが0.1より大きくなっているキューブが表示され、それ以外は非表示になる。
Positionノードは各頂点の座標を返す。Separate XYZノードはVectorをFloat3つにバラす。Or演算はBoolean Mathというノードを使っている。こちらもよく使いそうな例。ランダムに間引きする。
Random ValueノードのBooleanを使おう。
Probabilityをいじると間引き量がコントロールできる。
よく使いそうなもの例を上げると
他にもたくさんある。
Selectionは入力ソケットだけではなく、出力として同じような物を持っているノードもある。
次がその例
【Geometry Nodes】Starノード【Blender】 | 謎の技術研究部
複雑な作品を作っていく場合はSelectionが使えるようになると一気に幅が広がると思う。
しっかり覚えておきたい。
