Bullet プラグインお披露目

ミクの件で公表していたBulletプラグインが何とかかんとか動いているみたいなので、
β版として事前公開することにしました。
但し、プラグインは、Windowsの64ビット版のみです。
性能は、Shadeがリアルタイム系ではないので、まったく考慮してません。
めちゃくちゃ簡素な取説と単純なサンプルを添付してます。
機能は、基本形状の剛体と、Bulletのp2pの拘束ジョイント機能をShadeのボール/ボーンジョイントに
貼り付ける機能とアンカー付きクロスを実装してます。
メッシュの剛体や、ロープは実装してません。まだまだ、Bulletに不慣れなので、MMDで使っている
範囲の機能ですませました。
仕様や使い勝手(勿論バグも)に対してご意見があれば、返信願います。
shade_bullet_beta.zip (574.5 KB)

「いいね!」 1

Bullet Worldフォルダにポリゴンメッシュソフトボディオブジェクトを入れてモーションのシーケンスにチェックを入れると動作が停止するようになりました。
画像

私の使い方が間違っているのでしょうか???
ご指導ご鞭撻お願いします。

ソフトボディのエラーチェックがまだ今一なので、たまにクラッシュするデータ構造でも
許容するため、時々落ちることがあります。
またクラスタ周りには、バグがある様です。
ソフトボディの登録データとか、
登録時および再編集時「必要な面を確実に選択」したかどうかとか、
情報があれば、お教えください。
また、クラッシュするデータを提示出来れば、原因の究明に役に立ちます。

現時点で、ソフトボディの仕様として複数のアンカーに複数の剛体を登録させるべきかどうかとか、
アンカー剛体の自動生成が必要かどうかとか、
アンカー登録に「要素マーク」でなくて、頂点カラーが使えないかどうかとか、
アンカー頂点がずるずる動くのを完全に止める方法とか、
クロスと剛体のコリレーションが、今一弱い(食い込んでしまった後、すり抜けやすい)のに対する
対策とかいろいろ課題があります。

わかりました!
つまり、頂点編集等で面選択にしてからソフトボディにするのですね?(上の図の球体を面選択でドラッグしたら作動しました)

たぶん、面~頂点選択がうまくできていなかったのが原因と思われます。
お手数をおかけしました。

すみません、また躓いたので質問させていただきます、
アンカーの作り方が説明を読んでも飲み込めませんでした、

要素 マーク15をどのようにしたらいいのでしょうか??

アンカーにしたい頂点を頂点選択モードで選択して、要素マークで、マークします。
次に面選択モードでソフトボディにしたい範囲の面を選択して、Bullet編集を起動して
ソフトボディにすると、
選択された面の中にマークされた頂点があれば、その頂点がそのままアンカーになります。
もし、同じ階層に剛体があれば、アンカー形状に候補として現れるので、
その中から選びます。無ければ、アンカーは、完全固定になります。
添付のsoft…shdを参考にしてみてください。

ソフトボディ周りをリファインしました。
チェックを増やしてエラーになりにくくしたり、
クラスタ化のバグを修正しました。
クラスタ化すると、剛体とのコリレーションがより正確になると思ってましたが、
逆に、すっぽ抜けたり、衝突したらしたで妙にガチガチになったり、
設定がおかしいのか、一般的メッシュデータからソフトボディに変換する場合は、
色々制限があるのかも知れません。
クラスタ化しない場合は、全リビジョンと同じになりますので、当分はそちらを使って
みてください。
バグが見つかれば、修正しますが、今のところまずは、
MMDインポーターに物理演算部分を装着する方に移ります。
(577.3 KB)shade_bullet_beta2.zip (577.3 KB)

返信が遅れすみません。
了解しました。ところで、駆動型はボーン等を適応することができる剛体(と、言うかボーン等ジョイントに剛体を組み込む??)という認識であってますでしょうか??

認識は基本的にそれでいいと思います。
Shade側で動かすとすれば、ジョイントで動かす以外はないですから。
剛体にスキンを掛けても動きません(と思います)ので、ジョイントの子においてください。
また、使い方の1つとして、作っておいた剛体(パート側)をコピー&ペーストしても
新規の剛体になります。複数選択しておいて、一気にコピーして、それぞれをその場所に
移してつかうことも出来ます。

MAC版も何とか動作するようなので、同梱します。
ご意見よろしく。
shade_bullet_beat3.zip (1.9 MB)

とりあえず、不具合っぽいのを報告です。
厚みをつけたポリゴンメッシュをソフトボディ化すると動作が停止しました。
他にも条件は不明ですがドゥ・サビン等で分割したポリゴンをツール→変換→ポリゴンメッシュに変換で分割を固定したオブジェクトもソフトボディ化すると動作が停止することがあります。

あと、厚みのない閉じてないポリゴンメッシュ(板ポリの筒みたいなの)をソフトボディ化した後数値を弄ると挙動がおかしい感じと、数値を戻してもそれが反映されず異常な挙動(確認できたのはすごい勢いでアンカーを中心に回転しだす)のままという私のほうでは確認されました。

動作確認有り難うございます。
とりあえず簡単なポリゴンメッシュに厚みを付けてソフトボディ化させたものを
シミュレーションさせてみましたが特にクラッシュはせずに普通に動きました。
全ての面の選択をされたでしょうか?勘違いで、プラグインでは面選択不備のチェックが
抜けてました。
また分割でBulletから見て不自然な構造があっても、プラグインでそれをチェックはしてません
のでクラッシュする可能性はあります。
この辺の安定性を上げる方法がないか考えてみます。

次に「数値を戻す…」の件ですが、
数値とは何でしょうか?どの辺の数値か具体的に表現してもらうとわかりやすいです。
数値を修正しても、ダイアログで変わらなかったということか、
変わってもその数値にあった動きにならなかかったのかちょっと分かりません。
挙動がおかしいので、ダイアログで修正時に、シーケンスモードを抜けたと思いますが、
その時点のフレーム位置はどうなってましたでしょうか?
再シミュレーションするときは、モーションウインドウの最上行のボタンの
「最初のフレームに移動」ボタンを押して最初に戻った後でシーケンスモードを抜け、
再設定して、シーケンスモードに移るという手順が安全です。
この辺のプラグイン側での安全側への対処も考えてみます。

了解しました。

どうもソフトボディにするポリゴンを弄った後編集モードを形状編集のままモーション→シーケンスにチェックで落ちてるっぽいです(一旦編集モードをオブジェクトに切り替えると正常に作動するのを確認)

ポリゴンメッシュについてはまだ何かこちらで手順に問題がないか検証してみます。

ソフトボディの挙動
ダイアログ(数値を弄る際のウィンドゥ)の数値は変わっていますので、数値にあった動きにならなかかったの方です。

ソフトボディの数値はとりあえずこちらで弄ったのは「マージン」と「体積維持係数」「姿勢整合係数」です。
同時でも別々でも弄るとアンカーを中心に回転する動作の挙動をする


(当たり判定や体積維持・姿勢整合が機能しているかは不明、動作に変化なし)ので、
初期設定ボタンを押してダイアログ上数値が戻っているのを確認してから再シミュレーションの際に「最初のフレームに移動」行っても同様の挙動をします。

ただ、微妙にマージンが挙動にかかわってる感じはしますがまだ未検証です。

……もしかして、オブジェクトが小さすぎて剛体のマージンが反応しすぎてる???

ちょっと検証してみます。

多分ですが最初のアンカーを軸に回転を始める挙動は小さく作りすぎたソフトボディがマージンの範囲内に包み込まれたためそこから逃れようとして起こる現象という結論になりました。

数値が反映されていないように感じたのは小さく作りすぎたため相対的に数値が大きくなり(?)数値を増減させても変化が起こる範囲内にならなかったのかもしれませんがよくわかりませんでした。

逆にソフトボディのオブジェクトを大きく作りすぎると消滅(一瞬で画面から消える)すると言う謎の挙動を確認しましたがこちらについては何が原因かはわかりませんでした。

全体的に安全面とより正確な動作になるよう調整しましたが、動かした感じは、前とあまり変わってないみたいです。
ソフトボディは、アンカー周りに衝突用の剛体を配置すると、その影響の方が、アンカーによる拘束より
強くなるみたいな挙動になります。ですので、最初は衝突対象を外して挙動を調べて、その後追加して
いくようにした方が、何が影響しているか分かり安いと思います。
実の所、各種のパラメータの正確な意味は、把握できてはなくて、ただドキュメントにあるものを
そのままBulletに設定しているだけです。一部のパラメータは、クロスが膨らみを持つ閉じた形状で
ないと意味がないものもあるようです。
後、MMDモデルは、大体実寸の13倍くらいの大きさでBulletを動かしてますね。
shade_bullet_beta4.zip (1.9 MB)

すみません、復躓きました、
拘束ジョイントを作ったらモーションで



このように一番上のジョイントとプリミティブだけ残して消失しました。
ボーンを適応したポリゴンも適応部分ごと消失します。

何か製作の手順を間違っているのでしょうか?(どのような手順で作るのが正しいのでしょうか?)

見た感じ、地面にめり込ませているようですが、こんな場合どんな挙動するかBulletの仕様ですので、
私には分かりかねます。
また、ポリゴンメッシュは、プリミティブではないようですし、剛体でもないようですので、
物理演算の対象外です。
消滅ってどういう意味でしょうか?全ジョイントが重なってしまっているのでは、ないでしょうか?
実の所、拘束ジョイントは、剛体の変形情報から、ジョイントの回転を逆算してジョイントを回転させてます。そのため、Bulletの本来の動きと完全に一致してない可能性があります。(この辺は、実際に使ってBulletの挙動がはっきりした後、微調整してしたいと思います。)
形状情報を開いて各ジョイントの回転をチェックしてみてください。どんな風に回転しているか分かります。
後、どんな構造なのか、ボーンジョイントをブラウザで開いた状態にでもしてもらわないと予想つきません。
拘束ジョイントの作り方ですが、
1.もし、最上位のジョイントを駆動型剛体に繋げたい場合(でない場合は、最上位のジョイントの回転部分は固定されます。、駆動型の剛体の場合は、その剛体の動きにつれて移動します。)
ジョイントブラウザ上の直上にその剛体を作って適当な位置に配置します。このとき、ジョイントの頭の部分とは少しずらして配置した方がちゃんとした動きになるようです。
2.ジョイントの連なりを作ります。それぞれのジョイントの回転制限値をちゃんと指定します。
3.最上位ジョイントを選択して、「Bullet編集」を選択すると、ドキュメントで説明したダイアログが
でますので、拘束ジョイントを選んで、その他のアイテムを設定して、okを押せば、各ジョイントの
真ん中辺りに球の剛体が配置されると思います。基本は、これだけです。
後は、シーケンスモードにして、動かすと動型剛体が、重力や最上位の駆動型剛体の動きに合わせて
動き、それにつれてジョイントが動くはずです。
4.通常その後、他の剛体やクロスとの衝突の為に、各剛体の大きさなどを修正して仕上げます。
基本的には、以上ですが、出来た高速ジョイントは、後で自由に編集して、ジョイントの両端の
剛体を自分で勝手に作った剛体に置き換えたり出来ます。

見た感じ、地面にめり込ませているようですが

盲点でした、なるほど、ワールド設定の地面にめり込まないようにする。
判りました!

ただ、なんか今回の挙動には関係ないっぽいようです???
というのも、上記の投稿後いろいろやってみた結果
まずBullet Worldを作ってからそのファイル(階層)内にボーンを作ってからBullet編集で拘束ジョイント化すると消失はしないようです(ただ衝突判定も働いていない??)

消滅ってどういう意味でしょうか?

私にも何が起こって入るのかさっぱり判りません。
とりあえずボーンジョイントをブラウザで開いた状態(これで良いんでしょうか??)がこちらになります


で消失(?)してる部分は

このように♯♯♯と表示されどう曲がっているのかよくわかりませんでした。
ただ、xyz軸いずれかを弄ったら(3つ中2つは弄っても効果のない軸有り)消失したボーンが現れる事があります。


因みに一番上のボーンはこのように曲がっているみたいです。

ところで、ここってZIPファイルはアップできるみたいですけどこういったの挙動を検証するためのshdファイルをアップするのって大丈夫でしたっけ?

試作プラグインを先日DLしました、今MASAさんのサンプルを試しに実行してみたのですがrigids_falling2の傾斜板の当たり判定をすり抜けて床面まで落っこちてコロコロ転がってましたw傾斜版のスティックが動いてたのでサンプルは傾斜版を転がってくるオブジェを適当に打ち返すサンプルだと思ったので書かせてもらいました、また2個目のサンプルsofts_with_rigidも棒状の剛体にクロスによる物理でふわっと乗っかりましたが球体のオブジェになんの反応もないのでこの球体はなんの為のものか解らずクロスでユラユラするオブジェを眺めておりました、しかしクロスがシーケンスウィンドウ上で物理で動いてるの見ているとニヤニヤしますね、ちゃんとコリジョン判定で布っぽく動いているのでこれがちゃんと機能してくれば凄くなると思います


shade_bullet_beta4
WINDOWS10 64bit home
Shade3D ver17.1.0
PC: Lenovo X250 (corei5,mem8G,SSD480G)

「いいね!」 1