Instance インスタンス - 文系の blender 4.3 はじめての Geometry Nodes 基礎編 5
ジオメトリノードのごく基礎、基本から学んでみます。第 5 回では、ジオメトリノードによる操作が視覚的にもわかりやすくチュートリアル等でも頻出するインスタンスです。
ジオメトリノードの解説やチュートリアルには英語の情報が多いため、ここでは言語を英語とし、日本語は可能なかぎり併記します。なお、ジオメトリノードの初歩的な作成方法等は、基礎編 1 - そもそもジオメトリノードとは を参照してください。
環境 Blender 4.3.0 , Mac Mini M1 OS 14.4
基本
インスタンスは、通常、同形状のオブジェクトを複数表示する際に使われ、「ポイント」と呼ばれるマーカーに収めるかたちで配置する。

インスタンスとは、オリジナルオブジェクトのコピーのような存在で、ジオメトリデータを持たないためデータサイズが少なく、とくにオブジェクトを大量に配置する場合では、単に複製するよりも、大幅に処理負担が少ない。
1 ) 頂点上に配置
たとえば、下のように 9 個の頂点を持つ平面に、下のジオメトリノードを適用する。


結果はなにも表示されない。9 個の頂点上にポイントが生成されてはいるのだが、ポイントは表示されないので、なにも見えない。
メッシュオブジェクト Cube をインスタンスとして、Instance ソケットへ接続する。
インスタンスの基本。なんらかのベース上にポイントを発生させ、 Instance on Points ノードを介して、各ポイント内に、特定のオブジェクトをインスタンスとして収める。

頂点上に配置された各ポイントに、立方体が収められ配置された。表示されるのはインスタンスのみで、ベースの平面は表示されない。ベースも表示させる場合は下のように Join Geometry を接続する。
同様に、ICO 球オブジェクトの各頂点に、高さを縮めた Cylinder(円柱)をインスタンスとして配置した場合。

Normal(ノーマル)、Align Rotation to Vector(回転をベクトルに整列)ノードを、Rotation(回転)ソケットに接続する。

ICO 球の各頂点のノーマル(頂点の向き)を、インスタンスの回転値に適用している。
2 )Grid、Curve に配置
Grid
Grid(グリッド)と呼ばれる格子状のベースや、カーブオブジェクトにインスタンスを配置させるパターン。
たとえば、 6 角形のオブジェクトを作成し、ジオメトリノードを適用、下のようにノードを組む。


ここでは、6.2 m x 6.2 m の格子状のグリッドに、4 x 4 計 16 個のインスタンスを生成させた。
なお、インスタンスに指定するオブジェクトには、上述のように、立方体などの、Mesh > Primitive の各メッシュや、別途作成したオブジェクトを Object Info(オブジェクト情報)ノードで指定することもできる。

既存の Torus オブジェクトを指定。
Object Info ノードはアウトライナー上のオブジェクトをドラッグ&ドロップでも作成できる。
Curve
カーブ上に配置するパターン。たとえば、適当なオブジェクトにジオメトリノードを適用し、下のように、Spiral カーブノードを接続する。

Group Input ノードは削除
インスタンスとして、立方体メッシュオブジェクトを指定した。

Spiral ノードの Resolution(解像度)x 2(Rotation)の計 32 個のポイントに、それぞれ立方体が配置された。
3 ) オブジェクト表面に散布
オブジェクト表面のランダムな位置へ配置するパターン。
デフォルトの平面に下のジオメトリーノードを適用する。

ポイントが平面上にランダムに配置される。このノードでは、ポイントがマーカーとして表示される。マーカーなので、レンダリングはされない。
Mesh Circle(メッシュ円)をインスタンスとしてポイントに配置した。

メソッドを Poisson Disk(ポアソンディスク)に変更。

インスタンスのメッシュ円の半径(Radius)が 0.1、直径 0.2 m なので、Distance Min(最小距離) 0.2 とし、円が重ならないよう配置できる。発生数は、Density Max(最大密度) および Dencity Factor(密度係数) で調整。
UV 球に同様のジオメトリーノードを適用した場合。

Rotation(回転)ソケット同士を接続することで、インスタンスの回転を球の表面の向きに合わせることができる。
インスタンスの回転、スケール、移動
配置したすべてのインスタンスを拡大縮小、回転させるには、Instance on Points ノードの、Scale および、Rotation の値を変更するが、各インスタンスに異なるスケールや回転を与えたい場合は、ひしがたのソケットを持ち、連続した値を出力できるノードを接続する。

Random Valueノードからは、0 〜 1.0 までの乱数が出力され、それぞれのインスタンスの大きさが、0 〜 100%に変化する。

Wave Texture から出力される波形の数値が、それぞれのインスタンスの回転に反映される。
その他のパターンについては、はじめての Geometry Node | Read ノード も参照してください。
一部のインスタンスのスケール、回転、移動
また、インスタンスのスケール、回転、移動には、それぞれ、
Rotate Instances(インスタンス回転)
Scale Instances(インスタンス拡大縮小)
Translate Instances(インスタンス移動)
ノードが用意されており、Selection で選択された一部のインスタンスの回転等に利用される。

Rotate Instances ノードの場合。Position(位置)ノードから各インスタンスの位置 X を抽出し、その値がゼロより大きい(右側)インスタンスを選択、Y 軸に 90 ° 回転させている。
インスタンスの実体化
なお、これまでのノードのままでは、作成したオブジェクトにジオメトリ(形状)データがないため、モディファイアプロパティで Apply したり、他のモディファイアと組み合わせることができない。

この場合は、ノードの最後に Realize Instances(インスタンス実体化)ノードを接続し、形状データに変換する。

Apply したり、他のモディファイアと組み合わせることが可能になる。ただし、データも大幅に増えるため、あまり複雑で、数も多い場合は処理に負担をかけることがあるだろう。
まとめ
インスタンスによるジオメトリノードは、ノードの組み合わせによって、多様で複雑な形状を生成できるので、ジオメトリノードのサンプル的な存在でもあり、また、実用的にもアニメーションと組み合わせた幾何学的な効果など、応用範囲もほぼ無限です。
また、各種ノードによる操作が視覚的にもわかりやすく、練習台にも最適かもしれません。参考まで。
