使用ソフトウェア | バージョン | 備考 |
---|---|---|
Blender | 3.2 |
日本語:面にポイント配置
例えば板ポリがあるとすると
この面の上にランダムな点を生成するノード
Cubeのような場合も同様、各面にポイントが生成される。
これで生成した点の上にInstance on Points
等で更に別のジオメトリを生成するというのが良くある例。
キューブ上に配置した点から円柱を生やした例。
Points
=> Distribute Points on Faces
ベースとなるメッシュをDistribute Points on Faces
に入力するだけ。
Points
ソケットから出力されているデータには元のメッシュが含まれない。
つまりJoin Geometry
で元のメッシュを合成しないと
このように点だけの表示になる。
元のメッシュは描画せず、面上の点だけ欲しい場合はこのままでよい。
上の作例のままレンダリングしても何も映らなくなるので注意。
Distribute Points on Faces
で出力される点は一時的にプレビューされているだけなので、実際に点を点としてレンダリングしたい場合はInstance on Points
を使ってメッシュを配置しよう。
Density(密度), Seed(シード)
Density
はフィールドなので、場所に応じて密度を変化させることも可能。
フィールドの概念は次の記事を参照。
【Geometry Nodes】フィールドって何?PositionやIndexの使い方【Blender】 | 謎の技術研究部
こちらはTrue/False
を入れることにより各ポイントについて明示的に表示させるか消去するかを操作できる。
Selection
に次のノードを入れてみると
Blenderでは0より大きい値はTrue
、0以下はFalse
と扱われるため上のような結果になる。
Selection
の概念がわからなければ次の記事を参照。
日本語:ポアソンディスク
Poisson Disk
モードに変更すると少し細かい設定が使えるようになる。
Density Max
は名称が変わっているがDensity
と同じだと思っておけば良い。
日本語:最小距離
この数値を上げていくとDensity
を上げてもこれ以上の距離くっつかなくなる。
例えば、次のように密度を上げすぎると
球同士が重なってしまっている。
しかし、密度は落としたくないという場合にDistance Min
を球の直径と同じにしてみると
ある程度密度を保ちつつ、球同士が密着しなくなる。
Distance Min
ではなくDensity
を下げるだけではだめなのかというと、次のような状態になる。
日本語:密度係数
Density Max
の値にこのDensity Factor
が掛けられた値が最終的な密度になるような動きをする。
あまり使い道がわからないので詳しく解説出来ないが、入力がフィールドになっているため上で解説したように特定の範囲で密度を変化させたい時に使うのが主な目的か?
Rotation(回転)
このノードにはNormal/Rotation
のアウトプットがある。
これは単純にベースとなっている面の法線と角度が出ているだけである。
しかし、このソケットは正確に理解するのが難しいので上級者向けだと考えて良い。
簡単な例を示す。
たとえば
このノードの組み方では全てのキューブが同じ方向になっている。
そこでRotation
を接続すると、面の方向が引き継がれるので
このように面にそってキューブも回転する。
Normal
は法線の方向が出ているので、点をズラすときに便利。
こんな風にNormal
を演算してSet Position
でズラしてやると
こんな風に面からポイントを法線方向に引き剥がしてやることも可能。
Rotation
とNormal
は相互に変換が可能なので厳密には同じものとして考えても良い。
Rotate Euler
やAlign Euler to Vector
のノードを挟むことにより方向に変化を持たせて更に複雑な作例も作れそうだ。
ただ、これ以上は難しすぎて解説できないのでここまでとする。
あくまで元のジオメトリとなった面の表面だけに点が生成されるので、その内側は空洞になるので注意。
例えば閉じた円柱にDistribute Points on Faces
この円柱のフタ(円)の部分をカットしてみると
空洞になっている。
空洞にしたくない場合は内側にも複雑なメッシュを置くなど別の工夫が必要。
最後に少しだけ手を加えた作例を掲載しておく。
Distribute Points on Faces
あんまり関係なくなっちゃった。