オブジェクトをモデリングしている時に
目標となるオブジェクト間を滑らかに繋ぐような曲線や曲面を作成したい場合が出てきます
また、BlenderにもNURBSサーフェイスがありますが 使い勝手がさほどよくありません
ジオメトリノードで扱いやすい方法を作成できたので書き留めておきます
キャプチャは4.5で作成しましたが 3.3以降のジオメトリノードでも同等のものになるかと思います
ターゲットを滑らかに繋ぐ曲線を作成する
まずは目標となるオブジェクトを用意して コレクションにまとめた状態を作成します
今回はTarget コレクションに入っているエンプティを順に辿ることを考えます
曲線を生成するためのカーブオブジェクトを適当に作成しておきます
まずは エンプティを直線状に接続する設定をカーブオブジェクトに作成してみます
カーブオブジェクトの情報は利用せず 新規にカーブを作成しています
カーブリサンプルでTargetコレクションにあるオブジェクトの数だけコントロールポイントのある状態にして
インデックスサンプルでインデックスを元に オブジェクトの位置を取得してコントロールポイントの位置を設定しています
カーブプリミティブのカーブラインで作成した場合 直線状で繋がれることになります
またオブジェクトのインデックスの順序は名前順になっているようです
ここでカーブタイプ設定を「カトマルロム」にしたノードを追加することで
オブジェクトを通過する滑らかな曲線 を作成することができます
複数のカーブ間を繋ぐ曲面を作成する
曲線と同様の方法で 複数のカーブをつなぐような曲面を作成してみたいと思います
まずは先のものと同様に カーブを並べたコレクションを作成し
ジオメトリオードを設定するためのメッシュオブジェクトを作成しておきます
カーブの種類が混在していても問題ありません
まずはカーブ同士をまっすぐ結ぶようなメッシュを作成してみます
カーブリサンプル で元になるカーブを定数で分割して
メッシュプリミティブのグリッドでYの頂点を分割数と同じ数だけ作成するように設定しています
こうすることで 頂点の並び順が揃うことになります
参考までに作成されたメッシュの頂点のインデックスを表示するとこうなります
もし ねじれた形状になった場合にはカーブの方の名前での並び順や
カーブの方向が逆になっていないか確認してください
カーブの方向は カーブの編集モードでポイントを全選択して
セグメントメニューの「向きの反転」で修正できます
複数のカーブ間を滑らかに繋ぐ曲面を作成する
オブジェクト間を滑らかに繋ぐカーブを利用することで
用意したカーブと交差する方向を滑らかにつなぐ座標を計算できます
まずは接続するカーブの作成
用意したカーブと交差するカーブを ポイントにインスタンス作成を利用して元のカーブを分割するのと同じ数だけ用意します
(ポイントにインスタンス作成 他のノードはCtrl+Hで利用しているソケット以外を非表示にしています)
また座標を設定するためのインデックスは今回は交差する方向になるため 計算で変更しています
これらを元に 曲面を変形するように設定して
モディファイアパネルに表示するグループ入力をまとめるとこういった感じになります
元のカーブ上の分割数を「U分割数」 生成した方向の分割数を「V分割数」としています
他のカーブを利用した方法に比べ制約が少ないので
うまく使えばマントのような形状を作るのに使ったりもできるのではないかと思います
何かの参考になれば幸いです