Volume conserving finite element simulations of deformable modelsを読んでいましたが,全然内容を理解できません.ですので,次の論文読みに移ろうと思います.
別の機会に,運悪くこの論文を読む羽目にならないように,ここでメモって残しておこうと思います.
この論文に書かれている有限要素法は,2章 Time Discretizationと3章 Spatial Discretization,4章 Collisions and Contactを理解しなければ実装はできない気がしているのですが,正直2章の時点でつまずいています.この章には,1タイムステップの処理内容が記述されています.1から9ステップで構成されていて,位置と速度を計算します.次のタイムステップの位置は現在の位置と速度(なんか色々ややこしい処理したあとの速度)から計算しますが,次のタイムステップの速度は,式を見る限り(ステップ8の式に7の式を代入することで),加速度にタイムステップをかけた値になるはずです.この速度では,現在の速度は失われてしまいますので,加えられた力の分しか計算しません.しかし,その加速度も明確に計算式が記述されておらず,同著者の論文をちょっと漁ってみても,加速度の計算の記述はありません.何を計算すればよいのかさっぱりわかりません.
体積を一定にするために,位置を決定する速度を適当な値に調整し,次の速度を適当な値に調整するのは,わかりましたが,これらの計算方法がわからないので,どうしたもんか,といったところです.論文の売りは,Divergence freeとone-ringの体積の保持でしょうから,動きの計算は適当でいいのかもしれませんが,この論文に書いてあることは,実装できないので,もう読むのをやめます.次の論文に移ろうかと思います.
Sunday, May 31, 2009
Monday, May 25, 2009
次はElasticモデル
次は,Elasticモデルについて,IrvingさんらのVolume conserving finite element simulations of deformable modelsを読もうと思います.
Sunday, May 24, 2009
球の衝突判定実験










Bridsonさんらの論文に書いてある衝突判定法を用いてFEM法で作った球で衝突判定の実験をし,この衝突判定法で判定ができることを確認した.
実験のために以下の準備をした.
・球のメッシュの頂点を移動可能にし,速度と加速度を設定できるようにした.高い精度が必要ないので,オイラー法でシミュレーション.
・球の下に面を配置し,衝突判定をする.ここでのリアクションは,衝突していると判定された頂点は動かないようにする.
・球に下向きに加速度をかけ続ける.なんとなく重力加速度を意識した.
この実験の結果が上の数枚の画像.左側はメッシュのエッジの描画で,右側はそれに面をつけてレンダリングした結果.
ここでは,Bridsonさんらの論文の説明が不親切な部分があるので,少しメモを残しておく.
この衝突判定法は,三角形x1x2x3と点x4の衝突を検知する手法.というか,結構一般的な手法なので,Bridsonさんらの論文を読まなくても,CGの数学関係の本には書いてあること.
まず,点x4と三角形x1x2x3を含む平面の距離を計算し,接触の距離h以下の点x4を判定する.準備として2個のベクトルを計算する.1個は,頂点x3(実はx1でもx2でも十分)から点x4までのベクトルを計算したベクトル.もう1個は,三角形の法線ベクトルnを計算したベクトル.これら2ベクトルの内積は平面からの距離であり,条件(x4-x3)・n < hが満たされるとき,x4と三角形x1x2x3の平面は接触しているとする.
次に,点x4を平面上に射影した点x'4が,三角形x1x2x3の内側か判定する.内側ならば,三角形と点は接触している.次の連立方程式を解き,その解を条件式にはめることで判定できる.
(x1 - x3)・(x1 - x3)w1 + (x1 - x3) ・ (x2 - x3)w2 = (x1 - x3)・(x4 - x3)
(x1 - x3)・(x2 - x3)w1 + (x2 - x3) ・ (x2 - x3)w2 = (x2 - x3)・(x4 - x3)
1 = w1 + w2 + w3
点x'4は,x'4 = w1 x1 + w2 x2 + w3 x3である.また,w1とw2がw1>=0, w2>=0, 1-w1-w2>=0を満たしていれば,点x'4は三角形の内側である.
以上のように,接触の判定を行う.
ちなみに,今回のリアクションは,適当に設定したため,論文のモデルに則っていない.
Sunday, May 17, 2009
collisionについては,そろそろいいかな
BridsonさんらのRobust Treatment of Collisions, Contact and Friction for Cloth Animationを読ませてもらっているが,最後まで読もうという気になれない.
その理由として,以下3つ.
1.とにかく一章が長い.
2.求めている情報以外の文章が多い.
3.大袈裟
7章の半分まで読み,まとめの10章まで,あと3章だけど,面倒なので萎えた.
ここでは,論文に記された「布以外の一般的な動的シミュレーション」に関する内容をざっくりと説明する.
・オイラー法やルンゲクッタ法などの一般的な微分方程式と同様に,設定したタイムステップ⊿t後のオブジェクトの表面の位置と速度を推定する.
・ものと当たっていたら,そこに急ブレーキをかける.
・近づいたり,当たりの判定は,法線ベクトルと三角形のある頂点からもっとも近い点までのベクトルの内積が,設定した厚み以下なら当たっているとする.
・高速に処理するために,空間分割を用いる.
といっただけのこと.
売りが布の摩擦なだけに,シミュレーション方法に驚きはない.
三角形上での当たり位置は,一般的な平面と点の距離で求まる.論文には,わざわざ式が書いてある.空間上の当たりの位置は,tタイムステップ時の距離が0になる位置を計算することで求める.布のシミュレーションはばねモデルで計算している.大した話じゃないと思う.
ここに記したようなタイムステップと当たり判定に関しては参考にするけど,布のシミュレーションはあまり納得できないので,気にしないことにする.
時間かけて読んだ割には,得られる知見が乏しい.
読むポイントが見いだせなかったことに原因があるような気がする.反省.
その理由として,以下3つ.
1.とにかく一章が長い.
2.求めている情報以外の文章が多い.
3.大袈裟
7章の半分まで読み,まとめの10章まで,あと3章だけど,面倒なので萎えた.
ここでは,論文に記された「布以外の一般的な動的シミュレーション」に関する内容をざっくりと説明する.
・オイラー法やルンゲクッタ法などの一般的な微分方程式と同様に,設定したタイムステップ⊿t後のオブジェクトの表面の位置と速度を推定する.
・ものと当たっていたら,そこに急ブレーキをかける.
・近づいたり,当たりの判定は,法線ベクトルと三角形のある頂点からもっとも近い点までのベクトルの内積が,設定した厚み以下なら当たっているとする.
・高速に処理するために,空間分割を用いる.
といっただけのこと.
売りが布の摩擦なだけに,シミュレーション方法に驚きはない.
三角形上での当たり位置は,一般的な平面と点の距離で求まる.論文には,わざわざ式が書いてある.空間上の当たりの位置は,tタイムステップ時の距離が0になる位置を計算することで求める.布のシミュレーションはばねモデルで計算している.大した話じゃないと思う.
ここに記したようなタイムステップと当たり判定に関しては参考にするけど,布のシミュレーションはあまり納得できないので,気にしないことにする.
時間かけて読んだ割には,得られる知見が乏しい.
読むポイントが見いだせなかったことに原因があるような気がする.反省.
Sunday, May 10, 2009
Robust Treatment of Collisions, Contact and Friction for Cloth Animation読み始め
BridsonさんのRobust Treatment of Collisions, Contact and Friction for Cloth Animationを読ませてもらっているが,なかなか難しく感じる.知らないことが多いだけに.
イントロだけさらっと目を通したが,わかった(ような気になっている)ことは3点.
・布地のようなヘナヘナなモデルだと,衝突判定の演算がめちゃくちゃ多いということ.
・布地の伸縮や曲がったりの変形は難しい
・手で何か操作する
布のアニメーションの何が難しいんだ?って思っていましたが,この論文のイントロを読んで難しいことはわかりました.
布地の面ってメッシュで作られていて,ヘナヘナな布だと,ものにかぶったり,布自体がくしゃくしゃになって,メッシュの頂点すべてに対して,衝突判定が必要になったりします.しかも,動きのあるシミュレーションだと,タイムステップの取り方次第で,布の面が貫かれたりします.
だから,一回一回計算する必要があるんだよ,ということでした.
これは確かに面倒な処理だと思います.
ただ完全に理解したわけでもないので,このまま読み進めてみようと思います.
読み進めていれば,そのうち理解が深まると思いますので.
イントロだけさらっと目を通したが,わかった(ような気になっている)ことは3点.
・布地のようなヘナヘナなモデルだと,衝突判定の演算がめちゃくちゃ多いということ.
・布地の伸縮や曲がったりの変形は難しい
・手で何か操作する
布のアニメーションの何が難しいんだ?って思っていましたが,この論文のイントロを読んで難しいことはわかりました.
布地の面ってメッシュで作られていて,ヘナヘナな布だと,ものにかぶったり,布自体がくしゃくしゃになって,メッシュの頂点すべてに対して,衝突判定が必要になったりします.しかも,動きのあるシミュレーションだと,タイムステップの取り方次第で,布の面が貫かれたりします.
だから,一回一回計算する必要があるんだよ,ということでした.
これは確かに面倒な処理だと思います.
ただ完全に理解したわけでもないので,このまま読み進めてみようと思います.
読み進めていれば,そのうち理解が深まると思いますので.
Subscribe to:
Comments (Atom)