コンピュータグラフィックス · UW CSE 457 最終課題

布シミュレーション

Unity で開発した、リアルタイムの質点バネ系による布ソルバーです。安定した積分、伸張制約、設定可能な固定点、衝突応答、インタラクティブな風を組み合わせています。

インタラクティブな風:風向きと強さをリアルタイムに操作できる帆のシーン。

ソルバー

粒子から布へ。

布を、3種類のバネで結ばれた粒子のグリッドとしてモデル化しました。構造バネは伸びに抵抗し、せん断バネは斜め方向の変形を安定させ、曲げバネは折れ曲がりに抵抗します。

毎フレーム、バネの力と全体にかかる力を蓄積し、固定されていない粒子を Verlet 積分で進め、衝突と過伸長の制約を解決したうえで、補正後の位置を描画用メッシュに書き戻します。

固定点のルールにより、複数の固定パターンに対応しています。ループには、プロジェクトの衝突処理と表面を考慮した風のユーティリティも組み込まれており、乱流による突風や、風向き・強さのリアルタイム操作が可能です。

開発環境
Unity / C#
基本モデル
質点バネ粒子システム
積分
Verlet 積分
応答
制約 / 衝突 / 風

実装

5つのシステム

01

質点バネのトポロジー

粒子グリッド全体に、伸びに抵抗する構造バネ、斜め方向を安定させるせん断バネ、曲げに抵抗する曲げバネを配置しています。

02

フックの法則による力

自然長、剛性、バネの向きをもとに、伸びたときは粒子を引き寄せ、縮んだときは押し離すバネの力を計算します。

03

安定した運動と制約

Verlet 積分に加え、非現実的な伸びが布を不安定にする前にバネを補正する過伸長制約を導入しています。

04

3段階の物理ループ

フレームごとのパイプライン:力の蓄積、積分と衝突処理、制約の解決、そしてメッシュ頂点の更新。

05

設定可能なテストシーン

複数の固定パターンに対応する固定点検出を備え、提供された衝突・風のヘルパーをシミュレーションループに統合しています。

シミュレーションシーン

1つのソルバー、4つのストレステスト。