元記事:blender.org - Softbody Enhancements



Softbody の強化



尼さんモデルSoftbody が大幅に進化しました。衝突判定が改良され、Rigidity(剛性)オプションにより非常に広い範囲のエフェクトを行えるようになり、クロスをある程度エミュレートできるぐらいまでになりました。



Rigidity(剛性)


SoftBody に、スプリングが複数の Edge を交差するようにし、Mesh に新たな剛性を加える、Rigidity 要素を持てるようになりました。SoftBody はこの Rigidity により、形状の保持が改善され、クロスと衝突判定のある Object とクロスがお互いにめりこむのを防ぐのにも役立ちます。


衝突判定の改良


Cube 上の布

Cube 上の布

衝突判定が大きく改良されました。SoftBody がシンプルなボールベースのセルフコリジョン(自分自身との衝突判定)をサポートするようになり、SoftBody の Vertex 同様、Edge や Face との衝突判定もされるようになりました。

シンプルなセルフコリジョン
Softbody のセルフコリジョンは、Object を形成する Vertex の一つ一つが粘弾性を持つボールにより包まれているというモデルをシミュレートしています。
このコリジョンボールの大きさは、手動(ManBall Size のみ)もしくは隣と繋がっているスプリングの長さ(Spring Length)を利用して設定できます。

Av: スプリング長と Ball Size の平均。
Min: 〃 の最小値。
Max: 〃 の最大値。
AvMinMax:(Min+Max)÷2+Ball Size。

弾性(Elasticity)は B Stiff、粘性(Viscous)は B Damp で、Edge 設定のように設定します。

セルフコリジョンの落とし穴
ある Vertex のコリジョンボールが、Edge によって繋がっていない他のボールと出会った場合、近づかないようにします。もし同じ Edge により繋がっている Vertex ボール同士の距離が大きすぎると、思いもよらない結果になることがあります。

Min で、Vertex を繋ぐ一番短い Edge(スプリング)をコリジョンサイズとして設定します。これは他の Vertex がすり抜ける可能性があります。
Max を選ぶと、Vertex を繋ぐ一番長い Edge(スプリング)をコリジョンサイズとして設定します。これは品質が上がりますが、Solver の処理量が上がり、作業時間が増大することから、より多くの時間を費やすことになるでしょう。



Solver の進化


SoftBody Solver が進化しました。前回のフレームを使用し、より効果的な衝突判定計算を行っています。実行するステップ数と組み合わせることで、衝突判定漏れの抑制に役立ちます。

MinS はフレーム毎の最小ステップ数です。SoftBody が速い動きの衝突判定に失敗するときは、この値を増やして下さい。0でこのオプションが無効になります。

MaxS はフレーム毎の最大ステップ数です。もし値が小さすぎる場合、Error Limit から計算された適切なステップサイズで上書きされます。ただしこの方法は、いくつかのケースで正確さが劣ります。0でこのオプションが無効になります。

Fuzzy オプションは、衝突判定の正確さを犠牲にしてスピードを向上します。高い値で精度が下がります。

M オプションは、Solver の監視用です。1フレーム中の Solver 実行の進行具合をコンソールに出力し、1フレームにどれだけ進んだかを最後に表示します。Vertex の数と、現在の衝突状況(1回の中で更に何度チェックが必要か)により、1フレーム進むのに時間がかかることもあります。Solver の設定の調整とシステム検査のため、このオプションは残されています。

Choke オプションは衝突が発生した時の Vertex/Edge のリアクションを沈静化するだけでなく、もし、Vertex/Edge が Mesh 内にめりこんでいる場合、Object の外側に押し出そうとします。


サンプルファイル


下のファイルは、cloth-on-cube (訳注:2番目の画像)のレンダリングに使用された物です。

 Softbody_Test.blend



元記事:blender.org - Softbody Enhancements