(This page uses CSS style sheets)
物理ベースモデリングについて
インターネット上のリソースをざっと調べてみました
物理ベースモデリングには,衝突判定部と動力学モデル部があります.
衝突判定について
などがあります.
凸形状の距離計算アルゴリズムには,SOLIDが用いている
GJKアルゴリズムと,SWIFT++,I,V,H-Collideが用いているLin-Cannyアルゴリズムがあります.
GJKは2つの凸形状の差も凸形状になることから,差の凸形状内の点のうち原点にもっとも近い点を探索することで最近傍点を求めます.
Lin-Cannyアルゴリズムは,ボロノイ領域を利用して最近傍点を求めます.
動力学について
-
Brian Mirtich (Impulse based simulation)
-
David Baraff's Home Page (とても有名)
-
DynaMo - Dynamic Motion library
-
GDC Projects(Utah大Alpha_1)
-
古典力学プログラミング小屋
-
SOP Software Open to the Public, Kimura & Suzuki Lab.
-
Open Dynamics Engine (Baraffの方法を改良して実装している)
があります.
動力学シミュレータは,衝突や重なりやちょうつがいなどの機構による拘束を満
たすための計算をしますが,計算手法がいくつかあります.
- A ペナルティ法を用いるもの
- B 拘束条件を用いるもの
- C 拘束をたくさんの回数の衝突として扱うもの
Aは,物体間にバネダンパを仮定する方法です.1ステップの計算は簡単ですが,安定
なシミュレーションのためにはステップをとても小さくする必要があります.
Bでは,2のDavid Baraffというひとが有名で,SIGGRAPHというCGの学会で講義
をしていたりします.拘束条件を満たすような反力の組を求めます.
7にBaraffの方法を改良したもののソースがあります.
Cの方法を1のBrianMirtchがまとめています.
6の東大鈴木研の人が改良してソースを公開しています.
3はAとBのあいのこと言えると思います.拘束を式に組み入れず,拘束からのずれを求め,ずれを修正するために必要な力を毎ステップ求めています.3はソースがついているので試すことができます.
4は,Bですが,機構を限定してあらかじめ拘束を計算しておくことで,高速に
シミュレータを動かしています.
5に解説といろいろなところへのリンクがあります.