【ジオメトリノードの選択を使いこなす】任意の面・辺・点にオブジェクト出し分ける方法(メッシュ編)その2
- 投稿日/更新日
【ジオメトリノードの選択を使いこなす】任意の面・辺・点にオブジェクト出し分ける方法(メッシュ編)の続きです。今回はジオメトリノードで生成したメッシュを選択する方法です。
ジオメトリノードで生成したメッシュを選択する

例では、まっすぐのカーブ(左)に六角形のチューブメッシュ(右)を生成しました。

geometry nodeは上図。カーブのチューブ化(Curve to Tube)はBlender5.0系から追加された新ノードです(なぜか知りませんが日本語環境なのに英語のままです)。メッシュにポイント化ノードで面にポイントを発生させていますが、これを任意の面だけにポイントを発生したい場合=選択するはどうすればいいのかを解説します。

わかりやすいように上記のようなノードを組み、画面にINDEXを表示させます。

すると右図のように、メッシュにINDEX番号が表示されました。この番号が表示されない時は、ビューポートオーバーレイメニューの中にある属性テキストにチェックが入っているか、ジオメトリノードエディターを同じ画面に表示させているか(モデリングワークスペースでは表示されません)、ビューアーの右上アイコンが白くなっているか(アクティブ状態)をチェックしてみてください。
数字が小さすぎてメチャクチャわかりにくいですが、黒い面(デフォルトで黒になる)が0になっており、そこから下回りで数字が増えて5まで続いています。黒い面の右横に移動して、今度は6から下回りで数字が増えているを繰り返しているようです。この時、手前の面の所だけにポイントを生成してみましょう。

INDEX番号が0・6・12・18…と6の倍数になっているため、6で割った時の余りが0の場合のみという条件式になります。以下ノードにしてますが、同じノードでも構わないと思います。

結果こうなりました。…っと、左の端の面にもポイントが発生してしまっていますね。たまたまINDEXが「36」と6の倍数のため、ここにも生成されてしまいました。めんどくさい場合はINDEXが36の場合のみ除外といった条件式を入れれば良いですが、可変の場合は工夫が必要です。左端の面を可変でも取得したい場合は、例えば次のような方法があります。

スプラインパラメーターノードの係数を、名前付き属性格納ノードに繋いで値を保存します。名前をここでは「スプライン係数」としておきました。これを右側にある名前付き属性で呼び出してビュアーに繋ぎます。

スプラインパラメーターの係数は、カーブの始まりを0、終わりを1とした時、頂点や面(面の中心)の位置を数値化したものです。円柱の左端の面が0、そこから側面が0.08、0.25…と続いていており、最終右端の面が1になっています。

一番簡単な条件式は、上記のように0以外の時とすればOKでしょう。

両端だけを除外したい場合は、対数を使うと便利です。ベース(底)を0.5にして対数を求めると、0は0に、1は-0という数値になります。その間の数値はプラスの数値から滑らかに減衰しながら出力されていきます。難しいので、そうなるんだなと思ってもらえれば。
この記事は随時追加していきます。
備忘録として残しておきます。
