よくわからん。
便利Tip
Geometryの情報をビューポートに表示する / Viewer
ViewerのValueになんらかの値を接続し、OverLayの設定から、AttributeTextの項目にチェックを入れると、Geometryの情報を表示することができるので便利
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の値を変更してみることで確認可能。
ランダム系
参考
ランダムに回転させる
RandomValueノードをRotationに接続する
ランダムな値を加える・ノイズを加える
高さにばらつきを出す
例えば高さにばらつきを出したい場合。
Utilities – RandomValue と Utilities – Vector – CombineXYZを使うことで可能。
setpostionを使う
上のやり方はScaleをいじっている。Postionを操作してやる場合。
これはランダム値の大きさをXYZでそれぞれ指定できるようにしている。
条件分岐させる / Switchノード / Menu switch
AとB2つを出し分ける単純な例
Switchスロットにに入るBool値がTrueならTrueの側のジオメトリがinstanceに渡される。
FalseならFalse側が渡される。
True
False
チェックボックスで出し分ける
TypeをBooleanにするとモディファイア画面ではチェックボックスに
それをSwitchノードに繋いでチェックなしならA、ありならB
2つ以上を出し分ける / 整数値により制御する
TypeをIntegerにして
モディファイアの画面から操作可能。
Menu Switch
複数回使いたいのに Invalid Link になる
グループ化することで複数回使える
Repeat Zone
使い方
RepeatZoneノードを出す。
CubeとJoinGeometryとSetPositionノードを接続する。
Iterationsの回数分だけループで下のようになる。
BezierSegmentで下のようにつなぐとこんな感じ。3回ループ
具体的なノード例
カーブに沿って並べつつScaleにランダムさを加える
全体像
上の方。Resampleで個数調整,Alignでカーブに沿わせる。
ObjectInfoとCollectionInfoの両方指定できるようにしている。
AlignEulertoVectorがカーブに対し並行するような
後半。
赤で囲った部分がランダムの幅を決める調整用。
XYZ軸それぞれに個別で値を指定したかったが、RandomValueノードをGroupInputに3つ繋ぐとモディファイアでの表示がゴチャッとなった。InputのTypeをVectorにすると集約することができる。
例えばZ軸のRandomScaleに2を入力すると、並んだオブジェクトの高さにこんな具合のランダムなばらつきを出せる。
その後のVectorMathのMultiplyはScaleの調整用。