| 使用ソフトウェア | バージョン | 備考 | 
|---|---|---|
| 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あんまり関係なくなっちゃった。
