繰り返しますけど物理シミュですから

jonigata2008-10-26

partixのサンプルに人体シミュを加えました。

http://d.hatena.ne.jp/jonigata/20070722

とだいたい同じやつです。


死蔵させても誰の得にもならないし、ソースを公開しておけば誰かの役に立つかもしれないので公開します。

ソースの取得方法についてはこちらを参照のこと:
http://d.hatena.ne.jp/jonigata/20080328

あとついでに実行ファイルも置いておきます(前のやつはダウンロードできなくなっているし、いくつかバグをとったので)。実行できなかったら教えてください。


papiko.zip


必要環境は結構高いです(C2D+shader3.0世代くらいを希望)


右ドラッグで回転
なにもないところで左ドラッグでズーム
中ドラッグで移動
なにかあるところで左ドラッグでアクション
Sキーで種明かし

テーマ
  • 疎な物理判定用モデルを使って密な表示用モデルを制御すること。
やっていること
  • まず、全身を剛体として用意。
  • 次に、胸部・臀部(それぞれ左右別)を柔体として用意。
  • 臀部・胸部を全身に縫い付ける。
  • 上記の物理用モデルはすべて疎モデル。これを内部的にsubdivideしておく。
    • このとき、subdivide後に生じた頂点と元の頂点との関係を記録しておく。
    • subdivision methodはsqrt(3) (pdf)(別になんでもいいけど、このケースではこれがもっとも適切に思えた)
  • 表示用の密モデルを上記のsubidivide後のモデルに関連づける。
    • これ(pdf) でやろうとしてあんまりうまくいかなくて
    • これ(pdf)にしたような気がするが、あまりよく覚えていないのでソース読んでください
    • subdivideしないと明らかに精度が足りない感じの絵が出る。
    • これ(pdf)も関係あったかも
  • 球を用意し、指先として使う。クリックしたところにぶつける。

要するに、表示用の密メッシュをsubdivide後の物理用の疎メッシュに関連づけておくが、subdivide時に元になった頂点がどれかを記録してあるので、subdivide後のメッシュは疎メッシュの変形に追従できるという仕組み。