頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


Bulletでメッシュからsoft bodyを作る

Bulletでsoft bodyを扱う、の続き。
頭と尻尾はくれてやる! / Bulletでsoft bodyの布に剛体を衝突させてみた
↑ここで下側にある布っぽいのがsoft bodyなんだけど、これは平面。
今度は立体でやってみようとしたんだわ。
平面でもBullet内での各点をOpenGLで扱えるようにするのに難儀したので、立体だとどうすんだろ?と思ってたら
btSoftBodyHelpers::CreateFromTriMesh

なんてのがあって、これを使えばBlenderで作って出力したデータを使うことができるみたい。
でやってみたんだけど、、、

Bulletのsoft body 1

ふーん、元のデータが持つ三角形のメッシュ一つごとに剛体を作ってるのか、、、?
確かにBlenderから作ったメッシュのデータをBulletは理解しているっぽい。
ただこのデータは剛体としては問題なかったけど、soft bodyとしてはメッシュが粗いようで上の画像ではもろ三角形が見えている。
じゃあちょっと細かくしてデータを作ってみるか、とBlenderで単純な立方体を細かくして出力。

Blenderで作成した立方体

これ、頂点が900あるの。一辺を5個に分けてるから一つの面に25個の正方形があるでしょ。iOSのOpenGLは三角形しか扱えないからBlenderでも三角形で出力するようにしてる。で、一つの面に50個の三角形、よって50x3=150個の頂点。それが6面で150x6=900個の頂点。
頂点一つでfloatがx,y,zの三つ必要になるわけだけど、、、
これで落ちるのよ(stack over flowじゃないよ)、iPhone 5sでも。
仕方なく頂点の数を1/3くらいに減らして実行してみたんだけど、、、

Bulletのsoft body 2

soft bodyらしくぷるぷる動いてたけど、、、これじゃ使えない。
なんとなく俺の設定が悪いのかなあ?という気がしないでもないけど、soft bodyに注力するより剛体をバネとかで連結した方がいいんじゃないのって気がしてる。
今度はバネを試してみようっと。

<< OpenGLでカメラっぽいことを考えた  TopPage  Bulletでsoft bodyの布に剛体を衝突させてみた >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/899-f1a286e6




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad