質点バネのトポロジー
粒子グリッド全体に、伸びに抵抗する構造バネ、斜め方向を安定させるせん断バネ、曲げに抵抗する曲げバネを配置しています。
コンピュータグラフィックス · UW CSE 457 最終課題
Unity で開発した、リアルタイムの質点バネ系による布ソルバーです。安定した積分、伸張制約、設定可能な固定点、衝突応答、インタラクティブな風を組み合わせています。
ソルバー
布を、3種類のバネで結ばれた粒子のグリッドとしてモデル化しました。構造バネは伸びに抵抗し、せん断バネは斜め方向の変形を安定させ、曲げバネは折れ曲がりに抵抗します。
毎フレーム、バネの力と全体にかかる力を蓄積し、固定されていない粒子を Verlet 積分で進め、衝突と過伸長の制約を解決したうえで、補正後の位置を描画用メッシュに書き戻します。
固定点のルールにより、複数の固定パターンに対応しています。ループには、プロジェクトの衝突処理と表面を考慮した風のユーティリティも組み込まれており、乱流による突風や、風向き・強さのリアルタイム操作が可能です。
実装
粒子グリッド全体に、伸びに抵抗する構造バネ、斜め方向を安定させるせん断バネ、曲げに抵抗する曲げバネを配置しています。
自然長、剛性、バネの向きをもとに、伸びたときは粒子を引き寄せ、縮んだときは押し離すバネの力を計算します。
Verlet 積分に加え、非現実的な伸びが布を不安定にする前にバネを補正する過伸長制約を導入しています。
フレームごとのパイプライン:力の蓄積、積分と衝突処理、制約の解決、そしてメッシュ頂点の更新。
複数の固定パターンに対応する固定点検出を備え、提供された衝突・風のヘルパーをシミュレーションループに統合しています。
シミュレーションシーン