布のシミュレーション-布のモデル化-
maaaaakunです。
以前、僕が作成した布と自由形状の物体の衝突シミュレーションプログラムの概要をご紹介しました。
これから3回にわけて、ある程度詳しく書けたらな―と思ってます。
ただし、数式などは出さず、どんな過程を経ているのかを理解してもらうことを目標とします。
ちなみに後2回書けるかは未定です。。。でもがんばります!
さて、今回は「布のモデル化」についてのお話です。(間違いが潜んでいる可能性は否定できません。。。)
尚、記事の最後に動画がありますので良ければご覧ください。
・布のモデル化
コンピュータ上で布の動きを再現するために、まずは布をモデル化する必要があります。
布のモデル化には、「二次元バネ-質点系モデル」というものが一般的に用いられています。
これは、上図において、
格子状にならんだ各頂点→質量をもつ質点
各頂点を結ぶ直線→質量を持たない仮想的なバネ
とみなすものです。
このように布をモデル化し、各頂点の次の位置を計算していくことで、布の動きを表現することができます。
各頂点の次の座標は、ニュートンの運動方程式を解くことで求めます。
これは、頂点に働く力を求める→頂点の加速度を更新→頂点の速度を更新→頂点の位置を更新
という簡単なプロセスで求めることができます。(これはオイラー法という解法です。)
では、頂点にはどんな力が働くのでしょうか。それには以下の様々な力を考慮します。
・重力
・摩擦力
・バネ減衰力
・空気抵抗(粘性抵抗)
・バネによる復元力
など。
ここで注意したい事が一点。これらの力は現実世界の布に働くものもあります。
しかし、バネと質点という非常に単純なモデルを用いているため、あまり現実世界で起こっている事を数値的に再現しているとは言えません。CGの世界では「それっぽく見える」ことが重要視される世界もあります。今回はその部類に入るわけです。
説明は以上です。もっと分かりやすくかければいいのですが。。。文章力不足です。精進します。
最後に、上に述べたことをプログラムに実装した実行結果をお見せします。
これは頂点数20×20の400個の場合の動画です。
如何でしたでしょうか。次回は球体との衝突判定について書く予定です。


モデルのようにきれいになる
モデルになりたいと思ったことはないかもしれません。
でも、
モデルみたいになりたいと思ったことはあるのでは?