各点が入力 PointCloud の位置を目標としてバネで追従する PointCloud を出力します。Stiffness が目標へ引き戻す強さ、Damping が速度の減衰で、Damping が小さいほど行き過ぎて震えます。Kick Trigger が発火したフレームは、全点に Kick Force の大きさの速度が一度だけ加わります(方向はインデックスから決まる疑似ランダムな単位ベクトル)。フレーム落ちで暴れないよう、1ステップの時間は0.05秒で頭打ちです。
- Stiffness(既定60、負値は0扱い)
- Damping(既定6、負値は0扱い)— 減衰は
exp(-Damping × dt) の指数減衰
- Kick Force(既定3)
- Velocity Stretch(既定0)— 0より大きいと、速さが0.05を超えた点が進行方向を向き、Zスケールが
1 + 速さ × Stretch 倍に伸びます
入力の点数が変わるとシミュレーション状態がリセットされ、全点が目標位置へ瞬間移動して速度が0に戻ります。上流で Count を動かすとバネの動きが途切れます。
入力ポート
| Port ID | 型 |
PointCloud | PointCloudInput |
Stiffness | float |
Damping | float |
Kick Trigger | trigger |
Kick Force | float |
Velocity Stretch | float |
出力ポート
| Port ID | 型 |
PointCloud | PointCloudOutput |
スクリプトから設定可能なメンバー
| パス | 型 |
stiffnessInput | float |
dampingInput | float |
kickForceInput | float |
stretchInput | float |
Synapse Apps(スクリプティング)
await synapse.modules.create({ type: "SpringPoints" })