2022-06-21

【Geometry Nodes】Pick Instanceソケット解説(Instance on Pointsノード)【Blender】

Instance on Points(ポイントにインスタンス作成)にあるソケット「Pick Instance」の使い方。入力するインスタンスを単一ではなく複数の中から選ぶことが出来る。

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

はじめに

この記事を作るにあたって次の動画(英語)からかなり多くの情報を参考にさせて頂いています。

この場を借りてお礼申し上げます。素晴らしい動画をありがとうございます。

Pick Instanceとは何か

Instance on Pointsノードは誰もがよく使うノードだと思う。

しかしPick Instance(ポイントにインスタンス作成)のソケットを解説しているサイトが記事執筆時点で殆どないため解説することにした。

合わせてInstance Indexソケットの使い方も解説する。

ソケットの外観

Pick Instanceを使わない例

まず先に、次のような例は皆が使っているのではないだろうか。

よくあるノード例

Instance on Pointsを使って単一のメッシュをコピーして配置するようなケース。

球がコピペされている

Pick Instanceを使った例

Pick Instanceソケットを使うと、次のようにいろいろなオブジェクトを混ぜて配置することができる。

色々ごちゃごちゃに配置されている例

ノード例

使い方

まず重要なのはこの機能を使うには「コレクション」が必要となる。

コレクションはフォルダのような感覚で使っているユーザーも多いと思うが、コレクション機能に関してより詳しい情報は他に譲る。

コレクションを作成

今回は上のようにいろいろな形状のオブジェクトをTestというコレクションに入れている。

コレクションの中身

コレクションの中のメッシュを実際に見てみると次のようにバラバラになっている。

メッシュの外観

このように配置も座標も適当で良く、とにかくコレクションに纏められていれば良い。

コレクションをジオメトリノードに入れる

このTestコレクションをジオメトリノードに入れる。

直接コレクションをドラッグアンドドロップしてもいいしCollection Infoノードを出してから直接指定しても良い。

Collection InfoノードにTestコレクションを入れた

2つのチェックを付ける

次の2つにチェックをいれておこう。

Separate Children(子を分離)

これをチェックしないと内部のメッシュがマージされる。チェックすると別々のインスタンスとして処理されるため今回必須。

Reset Children(子をリセット)

座標がバラバラになっていたが、全て原点の座標にリセットする。

チェック済み

Testコレクション自体は画面に表示されると邪魔なので非表示にしてOK。

非表示

Instanceに入力

このままGeometryInstanceに入力する。

InstanceソケットにCollection Infoを接続

結果が変

そうすると次のように変な結果になる。

変な結果

これは一つの頂点に投入したコレクションの中身が全部表示されてしまっている状態なのでこうなっている。

Pick Instanceをチェック

ここでPick Instanceの出番。チェックを入れる。

チェック済み

無事に次のようになるはずだ。

色々ごちゃごちゃに配置されている例

どういうこと?

つまりInstanceにコレクションが入力されている場合にPick Instanceにチェックを入れるとコレクションの中から一つピックアップして表示してくれる。

出てくるメッシュの順番はランダムなの?

実はこれはランダムではない。

おそらく頂点番号ごとに順番に付与されることになっている。

したがって例えば直線のメッシュ上に配置していくと一定間隔で必ず同じものが現れる

Instance Indexを使ってランダムに

というわけで、この機能を使っている時点でランダムにしたいという需要も多いだろう。

「頂点番号とインスタンス番号の結びつき」をコントロールしているのがInstance Indexだ。

例えば

ランダムバリユーを追加

このようにランダム値入力すると順序をバラバラにすることができる。

重複が出る

ただ、このノードの組み方だと必ずどこかで重複(偏り)が出る。

偏りの例

場合によってはコレクションの中にはあるのに1度も使われない物が出るかもしれない。

冒頭の動画にてこの解決方法を解説しているがロジックの解釈が必要で非常に難しい。

英語だがやる気があれば挑戦してみてほしい。

Instance Indexで正確にコントロール

今度は逆に狙ったところに狙ったオブジェクトを配置する方法を考える。

Indexノードを使った例

結果

Indexノードを用いてグリッドの頂点12番をコレクションの0番(トーラス)にして、その他を1番(モンキー)にしている。

ここも少し難しく解説しきれないので色々試してもらえたらと思う。

ちなみにコレクション番号はオブジェクトにつけた名前の50音順になっている。

おまけ:ソケット使わないの?

お気づきの方もいるかもしれないがこれまでの解説でPick Instanceはソケットがあるのに使用していない(チェックボックスを使っただけ)

ソケット

当然これも上の例のように狙ったインデックスに対してTrue/Falseを切り替えられるのだが...

これを特定部分だけFalseにしても重複して見栄えが悪いインスタンスが現れるだけだ。

重複インスタンスが出る

このソケットはコレクションの中身が重複することにより完成するタイプのモデリングで機能しそうだ(パーツごとに分けられたロボットみたいな?)

ただ、ここまでくると上級者過ぎて私には良い事例が思いつかないので各自で考えてもらえたらと思う。

以上

今回は初心者には難しい概念の記事かもしれない。

正直なところ多用する機能でもないため、ぼんやり覚えておいて使う時にこの記事に戻ってきてもらえたら幸いだ。



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