2022-10-25

Mesh to Points(メッシュのポイント化)ノードを解説【Blender - Geometry Nodes】

メッシュのポイント化はメッシュから頂点を抽出するだけでなく面の中央を取得したり面コーナーを使用するなど少し変わったことができる。

Article Image
使用ソフトウェアバージョン備考
Blender3.3.1

Mesh to Pointsノード

日本語:メッシュのポイント化

メッシュのポイント化ノード外観

概要

例えばキューブがある場合

単なるキューブ

キューブの頂点だけを抽出して表示する事ができる

頂点だけ

頂点だけではなく、面の中央を頂点にすることなども可能

面の中央

上の例は、わかりやすいよう元のメッシュを合成している

いつ使う?

使い方の例としてはInstance on Points面の中央をポイントとして使いたい時には便利

他にもデバッグ的に頂点の可視化などでも使える。

他にも設定で様々なアウトプットができるので、このページで解説する。

出し方

Mesh => Mesh to Points

モードを選択

まずはどこのポイントを取るかを一番上のセレクトボックスから選択する。

モード一覧

次のようなノードを組んで解説する。

picture 10

Join Geometryを使って元のキューブと同時に表示させている点に注意。

Mesh to Points単体では元のメッシュは消える。

Vertices

日本語:頂点

こちらはそのまま各頂点を出力。

頂点モードのボックス

特に解説も必要ないかと思う。

Edges

日本語:辺

Edgesモードにすると辺の中央がポイントとなる。

辺モードのボックス

Faces

日本語:面

上で解説したようにFacesモードにすると面の中央にポイントが現れる。

Facesモードのボックス

Corners

日本語:コーナー

コーナーは面コーナーにポイントを配置する例。

コーナーを選択したボックス

ここで重要なのはコーナーの場合は面ひとつに対してポイントが1個生成されているということだ。

したがって上の例では1頂点に対して3個のポイントが生成されている。

解釈が難しいので次の項で詳しく解説。

コーナーとは何か

ここは少し難しいのでよくわからなければ読み飛ばしても良い。

Mesh to PointsのコーナーとはBlenderでは「面コーナー」と呼ばれているものを指していると思われる。

あまり使わないがスプレッドシートにちゃんと面コーナー(Face Corner)のドメインが存在している。

面コーナーのドメイン

面コーナーという概念がいつからBlenderに実装されたのかは不明。

2020年ぐらいから法線マップの記事で利用されている。

これがジオメトリノード以外でどのように利用されるのかという点についてはこの記事では取り扱わないが、次のサイトで頂点ペイント時に違いが出る記事があるので参照してもらえたらと思う。

外部サイト:3DCGの謎用語を解説! 「ジオメトリ」「メッシュ」「法線」ってなに? - Blender ウォッチング - 窓の杜

※この場を借りて、良い記事をありがとうございます。

頂点とコーナーの違いは?

VerticesモードとCornersモードはパッと見おなじに見える。

この2つにはどのような違いがあるのだろうか。

例として次のようなノードをPositionに入れてやると、生成されるポイントをわずかに法線方向へ移動することができる。

ノード例

移動した例

上は単純にVerticesを使っているが、これをCornersにしてみると

モードをコーナーへ

コーナーにした場合

ポイントが増えているのがわかる。

何がおこったか

これは各面の角1個に対してポイントが1個生成されているため。

ポジション移動処理を何もしないと生成される複数のポイントが1個の頂点上に重なってしまうので実質Verticesと同じ処理に見えてしまうが実は違う。

Positionによって法線が面の方向にズラしてやると重なっていたポイントが分かれて見える。

面コーナーの法線はそれぞれの面方向となるため、面が違えば移動先が変化する。

で、コーナーはいつ使うの?

ハードサーフェスで板にねじがとまっている表現などに使えそうだ。

ネジっぽい表現

また、上のリンク先と同様にジオメトリノード内で色を扱う場合は有用かもしれないが試していない。

Selection

日本語:選択

Selection外観

このソケットは他のノードに実装されているSelectionと同じでFalseが入ったポイントは非表示になる。

使用例としてはRandom Valueノードなどを使うとポイントの間引きができる。

Random Valueノード

間引き後

Selectionの使い方は次で詳しく解説している。

【Geometry Nodes】Selection(選択)って何【Blender】 | 謎の技術研究部

Position

日本語:位置

こちらは各ポイントの位置を調整するソケットだが注意が必要

Positionソケット

基本的には次のようにPositionの赤ノードの間に演算を挟んで使用する。

ポジションを挟む

実行結果

意図的に生成されるポイントの位置を調整することができる。

ポジションを挟まないと想定外の結果に

例えば次のようなつなぎ方をしてしまうと

固定値を入れる

なぜか点が一つ

ポイントが一つしか生成されていないように見える。

何が起こったのか

このノードの組み方だと、すべての点を絶対値で指定した点へ移動するという処理になる。

つまりいくつものポイントが特定の座標一箇所に集まってしまっている。

Positionノードを挟んでの演算が一般的と覚えておこう。

このミスはSet Positionノードでもよくやりがちなので覚えておくと良い。

なぜこうなるのかはフィールドの概念理解が必要なので、より理解を深めたい場合は次も参照。

【Geometry Nodes】フィールドって何?PositionやIndexの使い方【Blender】 | 謎の技術研究部

Radius

日本語:半径

Radius外観

このソケットは生成されるポイントのプレビュー用のサイズを指定している。

設定違いの比較

単にプレビュー用の設定なので、この後にInstances on Pointsを繋いだときにインスタンスのサイズなどには影響しないので注意。

現状スプレッドシート上でRadiusが影響してないのでプレビュー用のみと判断。

しかし、カーブのRadiusのように外観上は変化がなくても後ろにつなぐノードの種類によって は影響するものがあるかもしれないので念のため注意。

さいごに

簡単なノードなのだが、ここぞというときに役立ちそうだったのでかなり詳しく紹介した。

正直ここまで詳細に覚えなくてもFaceEdgeモードだけ覚えておけば十分だ。



謎の技術研究部 (謎技研)