Blender GeoNodes: Plexus

Animation Nodesでできてた事をGeometryNodesでシリーズ、2本目。今回はPlexusのアレ。

「Blender Tutorial: Connect The Dots with Geometry Nodes, The “Plexus” Effect」(Youtube)を理解しつつまんまコピーです。内容的には、

  1. 距離を計算するペアになる頂点インデックスペアを作成して保存、保存先はオリジナルの2乗個のポイントを持つ新しいジオメトリへ
  2. 距離を測って閾値より大きいインデクスペアを削除、ダブってるやつ、自分どうしのペアも削除。
  3. Instance on Pointsでセグメントカーブを複製
  4. セグメント終点をインデクスペアの終点座標へ移動

空間分割をせずに全ての距離の比較をしているのでちょっと重い。

Animation Nodesは「Find Close Point」ノードひとつでサックリ作れましたが、この先同等のノードが追加されてくのでしょうか。開発がノードの粒度についてどういうポリシーを持ってるかによりますね。


Blender: GeometryNodes 軌跡を描く

Simulation Zone内で頂点の押し出しをすれば軌跡を描ける事が分かったのでテスト。

ExtrudeMeshノードで押し出した結果のコンポーネントへ「Top」というアトリビュートが「True」になった状態が与えられるので次フレームでもその「Top==True」なコンポーネントに対して押し出しをするって具合です。

通常のパーティクルシステムで使うForceFieldから力を取得できるといいんですが残念ながら出来ず、ノイズで動かしても面白くないので万有引力の式を使ってシミュレーションしてみました。重力の相互作用はありませんが。

以下Blender3.6用ファイルです。パーティクルの重さをランダムで指定している所で最小値にマイナスを入れれば斥力も働きます。クーロン力(りょく)ですね、式は万有引力と等価です。

時間を1フレーム目に戻して再生してください、たぶん途中のフレームのまま保存しちゃったかも。


Blender3.6LTS

Geometry Nodesにシミュレーションゾーンが追加されて自前でパーティクルシステムを作れるようになりました。パーティクルでは無いですが下のようにするだけでキューブが動きます。

シミュレーションゾーンの外側のソケットは初期状態の入力と計算結果の出力。内側は前フレームの状態の出力と現フレーム状態の保存って感じでしょうか。

まだダウンロードしてませんがデモファイルが5つも公開されています。上のスクリーンショットでも「Velocityにデルタタイムを乗算してオフセットに~」なんてやってるぐらいですから、結構敷居は高そうですね。

衝突とかどーうすんのかな?まさかその為に今回「Index of Nearest」ノードが追加されたとか…、それだけでは無理か。デザイナーからするとシミュレーションと聞くと物理計算やってくれる所と勘違いしそうですが、ここはワガでシミュレーションをつくるトコロですね。『現フレームの計算結果を保存しておくようにしたから次のフレームでその結果使って良いよ、後よろしく』みたいな仕組みが追加されただけです。

やっぱり敷居高いわ。