Blender Sverchok Pulga Physicsノードを見る (Fit と Springs と Pin と Obstacles)

Sverchok

はじめに

Sverchokのサンプルを覗いている時に見かけたノード。

前回はパラメータ解説とAttraction、Collision、Dragなどを見た。

今回もいくつか見ていきたい。

参照元

github.com

前回

ken26u.hatenablog.jp

使用例

公式には複雑な例が多くあるのでそちらも見てください

Fit

Fitは公式マニュアルにも無いが下記リンクに簡単な説明が描いてある

github.com

The “Fit” parameters Grow, max Radius and min Radius will make the initial radius to change if the spheres collide (shrink) or don’t collide (grow)

Fitは円または球がぶつかるまで縮小する、またはぶつからない内は大きくなる。

  • Radius は円または球のIteration 1(初期)の半径のサイズ
  • Grow は1ステップ(反復)毎の変動幅
  • Min Radius は最小の半径サイズ(縮小する最大サイズ)
  • Max Radius は最大の波形サイズ(拡大する最大サイズ)

  • Random Num Genで3つの疑似乱数を生成し60個のVectorを作っており、これはランダムに球を配置するのに使う
  • Frame infoはフレーム数に応じてiterationを変えるために配置
  • Pulga Physics Fit
    • 初期半径サイズは1
    • Growは0.05で反復の度に大きくなるまたは小さくなる単位
    • ぶつかっている状態が解消されるまでMinまで小さくなるか、ぶつかるまでMaxまで大きくなる
  • Sphereは配置する球
  • BV Alpha で最終的にオブジェクトにしている

  • 1から200反復までのアニメーション
  • 近接する球にぶつかっているものは小さくなり、ぶつかっていないものはぶつかるまで大きくなっているのがわかる

Springs と Pin と Obstacle

spring Stiffness バネ剛性で画像検索するとバネについての画像が出てくるのでバネに関するものかと思いきやサンプルにあるのは伸縮性のある布を表現する方法。

サンプルとほぼ同じ事を順番にやっていく。

布として使うメッシュ

  • Polygon Grid
    • このノードでは三角のメッシュが良く登場するみたいなのでそれに合わせて Type は三角にしている
  • Viewer Index +
    • 各頂点のインデックスを表示させている
    • この内外側の角にある [0, 6, 28, 36, 55, 60] の部分を引っ張る
引っ張るポイントを追加 (Pin)

  • List Input
    • Pinで固定する index の番号を設定したリストを作成
      • Viewer Index + で確認した index を設定している
  • List Item
    • 最初に配置した Polygon Grid の頂点を接続
    • 抽出する index は List Inputを接続する
  • Scale
    • Multiplier を適当に設定して元の頂点の位置よりも外側に位置するように調整

  • Pulga Physics
    • Springs と Pin を有効架
    • Iterations は 1
    • Springs Length は 0
    • Springs Stiffness は 0.01
    • Initial_Pos は細分化後の頂点を接続
    • Springs には細分化後の辺を接続
    • Pins には固定するインデックスのリストを接続
    • Pins Goal Position には引っ張るポイントを接続
  • Viewer Draw Mk3 で結果を確認している
Iteration を増やす

  • Iteration 1から100までのアニメーション
  • 自然に伸縮しているような感じになっている事がわかる
Spring Length を変えてみる

  • Springs Stiffness = 0.01
  • 中央の数字が Spring Length の値
  • 1から0.04まで変えている
  • 生地のゆとりのように見え、小さいほどゆとりがない
Obstacles 障害物

  • Pins Goal Position を上に上げてみた
  • Obstaclesはまだない
  • Iteration = 1

この状態で Iteration を上げてみる

  • Pinに引っ張られて布全体が上に持ち上がっていっている


  • Obstacles 障害物を追加
  • Iteration = 1
  • Springs Length = 0.00
  • 障害物も三角メッシュである必要があるみたいなのでTriangle Mesh で三角メッシュ化

  • Iteration を1から100に上げた図
  • 障害物に引っかかっている
  • しかしサンプルにあるほどキレイに引っかかっていないのが気がかり
タイトルとURLをコピーしました