BMS, Movie, Illustrations, Programming

Geometry Nodes で辺を点に変換する【Blender】

目的

Geometry Nodes で辺を頂点に変換するノードを考えます。

悪い例:頂点をそのまま使う

頂点の位置を Set Position で辺の中点にする方法が最初に思いつきますが、ひとつの頂点が複数の辺に接している場合は上手く行きません。

良い例:グリッドを作成する

今回のケースでは、頂点の数より辺の数が多い可能性があるため、既存の頂点を動かすのではなく、 Grid ノードなどでゼロから頂点を生成する必要があります。

グリッドの各頂点に対して、 Set Position で位置を指定していきます。中点の計算方法は先ほどと同じですが、 Sample Index ノードで、グリッドではなく元のジオメトリに対して値を計算します。

Sample Index Node – Blender Scrapbox

他の Geometry Nodes で Instance on Points を適用して完成

頂点のままだとレンダリングされないので、 Instance on Points を追加するなどして、メッシュが見えるようにします。

おまけ:辺の長さと向きを属性として保存する

Attributes として辺の長さや向きを保存して、他の Geometry Nodes から参照することもできます。

長さは Vector Math ノードの Distance で、向きは Subtract で計算しています。

応用例 1:点の大きさをメッシュで制御する

Blender では頂点に Attribute (属性) を持たせることが出来ますが、頂点の属性はエディタ上で視覚的に編集するのが簡単ではありません。

そこで、この方法を使えば、点群の属性を辺の長さで可視化することができます。

応用例 2:ワイヤーフレーム

パラメータを調整すれば、Wireframe Modifierのようなことを行うこともできます。

(ただし、 Curve to Mesh ノードを使うほうが簡単なので、普通はこの方法は使いません。)

ダウンロード

Blend ファイルをダウンロード (edge_to_points_with_grid.blend)

リンクを右クリックして保存してください。