【サンプル集】Geometry nodes レイアウトの基本的な使い方 Blender3.2版
- 投稿日/更新日
Blender3.0あたりから本格的に導入されたGeometry Nodes。若干分かりづらいのと、バージョンアップごとに名称や機能が頻繁に変わるため、ドキュメントや解説が追いついていない状態になっています。ということで、基本的なGemetry Nodesにおけるオブジェクトのレイアウト・配置関連についてサンプルを載せておくことにします。
グリッド状に単体のオブジェクト配置したい


使用するのはグリッドノード
とオブジェクト情報ノード
、ポイントにインスタンス作成ノード
の3つのみ。グリッドノードで9つのポイント(X軸に3・Y軸に3)を格子状に作成し、そのポイントにインスタンス(オブジェクトを配置)するといったイメージですね。パーティクルの頂点に配置に似てますね。
回転
やスケール
は場合によっては繋げてもよいかと思います。
ちなみに色がランダムで付いていますが、マテリアルでオブジェクト情報
のランダム
が適用されます。モディファイアの配列と大きく違う点はここですね。

グリッド上に複数(コレクション)のオブジェクトを配置したい


コレクションに複数のオブジェクトが入っていることが前提です。今回はキューブと円筒の2つを入れています。使用するのはグリッドノード
とコレクション情報ノード
、ポイントにインスタンス作成ノード
の3つのみ。子を分離
とインスタンス選択
にチェックを入れるのがポイントです。子を分離にした場合、コレクションに入っているオブジェクトは名前順にソートされて配置されるようです。
グリッド上に複数(コレクション)のオブジェクトをランダムに配置したい


新たにドメインサイズ
とランダム値
を上図のように繋ぎます。ランダム値は、コレクションに入っているインスタンスの数を指定することになるので、今回の場合はインスタンスが2つなので2となります。ドメインサイズはそのインスタンス数(つまり2)を自動で取得してくれます。
ランダム値
から下に伸びているものは、下記のようにデバッグで数値を確認しているためです。

このデバッグは画面上部のビューアーノードに出力することができ、数値を確認することができます。

カーブに沿ってオブジェクトを配置



この場合は生成したカーブオブジェクトがポイントの元になるので、グループ入力
を繋げるのが重要です。オイラー回転
はあってもなくてもかまわないと思います。今回は柵にオブジェクトが変な方向を向いていたのでその向きを変えるために入れています。
モディファイアの配列とパスを使用しても同じようなことができますが、モディファイアを利用した場合はオブジェクトの形がパスに沿って変形してしまうのに対して、Geometry Nodesでは変形しないところが良いところだと思います。


直線状にオブジェクトを配置したい/階段状に配置したい


直線状に配置するには、メッシュラインノード
を利用します。階段状に配置するにはさらにポイントにインスタンス
とメッシュライン
を追加し、上図のように繋ぎます。モディファイアの配列を2回使用しているのとほぼ代わりはありません。
Geometry Nodesがよいところ
オブジェクトを複製やランダム配置するシーンは多々ありますが、従来はモディファイアの配列やパーティクルなどを使ってランダムに配置などをしていました。ジオメトリノードを利用して良い点は幾つかあります。
- モディファイアの配置ではオブジェクトの大きさなどによってレイアウトが崩れたりするが、Geometry Nodesはレイアウトの元となるグリッドやオブジェクト・パスなどを作るので、レイアウトが崩れる心配がない
- マテリアルのランダムが利用できる。
- パスに沿って配置した際に、オブジェクトが変形しない
- 複製する元のオブジェクトのグローバル位置が影響しない。
- 複製する元のオブジェクトは非表示にしていても良い(ことがある)
ただ現状できないこともあります。例えばコレクションに入れたオブジェクトのサイズがバラバラなとき、そのオブジェクトのサイズにフィットした配置などは、かなり難しいノードを組まないといけません。たとえば大きさに違う書籍を横並びにしたい場合などはどうやっても隙間が出来てしまいます。どうしても隙間を埋めたい場合かつ大きさの違うものを並べたい場合は、オブジェクトの個々の大きさを同じにしておき、それをランダム係数でスケールを変えるといった方法でしか実現できません。こちらの動画が参考になるでしょう。
備忘録として残しておきます。