【Blender】Geometry Node の使い方 / ジオメトリノードメモ

よくわからん。

Grid状に並べる

並べたいオブジェクトに(CurveではなくObjectに)下のようなGeometryNodeを割り当てる。
MeshPrimitiveのGridの値を調整して並べる個数やGridのサイズを変更する。

5*5だとこんな感じ。

Indexは左下からだった。

Selectionの例

手前側だけ出す例
MathノードのModulo(Indexを下線の値で割ったときの余りをアウトプットする)と BooleanMathノードを使って制御する。

手前と奥を出す例

Switchノードで条件分岐させてグリッドの各辺の表示非表示をおこなう

チェックが外れると非表示にするという感じ。

モディファイアのチェックボックスからはBool値を取得できる。
Gridのうち前列部分に該当するindexは、このチェックが入っていればSwitchを通ってSelectionに渡される。チェックが外されていればFalseなので前列部分は素通り

LeftRightも同様。

4辺の情報をBooleanMathでまとめてSelectionに渡している。

Geometry Node を使った複製や並べるといった操作

直線に並べる

方法A

MeshLine と InstanceOnPoints の2つのノードを接続する。
並べる数をCountで、どの方向に並べるかをOffsetの箇所で調整する。

方法B

左から
Geometry – GeometrytoInstance
Geometry – Operations – Duplicateelements(PointをInstanceに変更)
Utilities – Math – Math(multiplyに変更)
Utilities -Vector – CombineXYZ

カーブに沿うようにオブジェクトを配置する

方法A

ベジエカーブを出し形を整える。
そのベジエにGeometryNodeを割り当てノードを組んでいく。

一番左のGroupInputに項目を一つ増やしている。

これは並べたいオブジェクトをモディファイアの画面で指定できるようにするため。GeometryNode画面のGroupタブを開き、プラスアイコンで新規にスロットを作成。TypeをObjectにしておく。

そうするとモディファイアからどのオブジェクトを並べるか指定できる。

Resampleノードはカーブのポイントの間にいくつ並べるかの調整用で、InstanceOnPointsのPointスロットに接続する。
下の2つのノードはカーブに対するRotationの調整用。XYZはカーブに対しどのディレクションを平行にするかを指定している。いじって調整する。

こんな感じに並べられる。

方法B

ガイド用のカーブと並べたいオブジェクトを準備して下のように接続。

CurvetoPointsの数でオブジェクトの数を調整。
RotateEulerでオブジェクトのカーブに対する回転を調整。

Duplicate Instanceノードでを使用する

Selectionで表示非表示や条件を設定する

特定のインデックスでの表示非表示を指定する

InstanceOnPointsのSelectionを調整することで可能。

n番目のものだけ表示・非表示

Geometry – Read – Index
Utilities- Math – Compare でIntegerとEqualに設定すればそこだけ表示、NotEqualならそこだけ非表示に。

n倍のものは非表示・N倍のものだけ〇〇

MathノードのModulo関数を使う。
剰余を出力するので、CompareノードのEqual関数を使い、剰余が0ならというSelection。
下の画像だとindexを3で割って余りがゼロなら、という内容。

〇〇かつ△△や〇〇または△△の表示非表示

Utilities- Math – Compare でGreater than などの条件を指定。
Utilities – Math – BooleanMath でAndやORなどの論理値を指定
下の画像だとIndexが 25より小さいか35より大きい場合表示されるというノード

特定のインデックスでスケールを変更する

とりあえずScaleに色々繋いでみたが面倒くさい

左から解説

Index
2列目はGreater than などでどのインデックスかを指定
3列目はORやAndの論理演算であるインデックスが真なら
4列目はMathノードを Powerに設定。ここのBaseの値を調整しScaleを変更していく。

5列目はUtilities- Math – Mixノード
6列目はUtilities – Vector – CombineXYZ。今回は高さというかZのスケールだけ変更したいのでつなぐ。あとはこれをInstanceOnPointsに接続。

さらにそこにランダムに値を少しAddして高さにばらつきを出すノード

特定のインスタンスのみ回転させる

下記画像だとIndexが1のインスタンが回転する。

ランダムに間引く

例として下のようなノードを球状のオブジェクトに割り当てたものを使用する。

インスタンスが正確に並ぶ。

ランダムに間引きたいので、RandomValueを出し、0から1の間でランダムな値を生成。
次にCompareノードをつなぎ、下線の値よりランダム値が大きければ表示され、小さいければ非表示ということができる(Switchノードを介さずにSelectionに接続してもいける)。
RandomValueがちゃんと機能しているか、Seedの値を変更してみることで確認可能。

ランダム系

参考

Geometry Nodes Snippets — UH Studio
Basics of geometry nodes and curves. This an ever-growing collecting of simple processes that help achieve various actions, like ofsetting, culling, etc.

ランダムに回転させる

RandomValueノードをRotationに接続する

ランダムな値を加える・ノイズを加える

高さにばらつきを出す

例えば高さにばらつきを出したい場合。
Utilities – RandomValue と Utilities – Vector – CombineXYZを使うことで可能。

setpostionを使う

上のやり方はScaleをいじっている。Postionを操作してやる場合。
これはランダム値の大きさをXYZでそれぞれ指定できるようにしている。

条件分岐させる / Switchノード

AとB2つを出し分ける単純な例

Switchスロットにに入るBool値がTrueならTrueの側のジオメトリがinstanceに渡される。
FalseならFalse側が渡される。

True

False

2つ以上を出し分ける / 整数値により制御する

TypeをIntegerにして

モディファイアの画面から操作可能。

具体的なノード例

カーブに沿って並べつつScaleにランダムさを加える

全体像

上の方。Resampleで個数調整,Alignでカーブに沿わせる。
ObjectInfoとCollectionInfoの両方指定できるようにしている。

AlignEulertoVectorがカーブに対し並行するような

後半。
赤で囲った部分がランダムの幅を決める調整用。

XYZ軸それぞれに個別で値を指定したかったが、RandomValueノードをGroupInputに3つ繋ぐとモディファイアでの表示がゴチャッとなった。InputのTypeをVectorにすると集約することができる。

例えばZ軸のRandomScaleに2を入力すると、並んだオブジェクトの高さにこんな具合のランダムなばらつきを出せる。

その後のVectorMathのMultiplyはScaleの調整用。

タイトルとURLをコピーしました