スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

JOINT挙動について(訂正・改定)

さて、最初に私の勉強不足・調査不足と無理解にて誤った情報を出していた事をお詫び致します。
関係者各位には特に、深くお詫び申し上げます。

ですが、まだ勘違いや根本的な部分で間違ったままの可能性は捨てきれませんので、改めてご指摘頂ければと同時に、ここの情報を鵜呑みにせず独自でも調査などを行って検証する事をお勧め致します。

====

さて、ジョイントですが…。厄介ですねw
ジョイントを動かしたくない場合の話をここでは主にします。

ジョイントの移動制限を3軸とも「0-0」に設定した場合、想定上では移動は行われず、回転のみの処理となります。
Joint01

ですが現実というかBulletの(現在の)仕様では、この状態では完全に移動を制限する事にはなりません。
結果、ジョイントが想定どおりに動作せず、その場に取り残されたりしてしまってた訳です。

そこで対処する為に、2系統の内部処理をしているそうです。

1:ボーン位置合わせ処理
2:剛体強制引き戻し処理

これらは別々に動いています。←ここがポイント

さらに、2の剛体強制引き戻し処理はボーン位置合わせ設定がなくとも行われている、という部分も重要です。
(対象はジョイント移動制限0-0のみなのか、全てのものなのか不明)

それぞれの処理は…

1:ボーン位置合わせ処理 の場合
剛体による移動を破棄。
回転のみをボーン変形へ適用。
(剛体自体へのフィードバックは行われていない?)

2:剛体強制引き戻し処理
ジョイントに関連した剛体A-Bが、初期位置から一定距離を離れた場合、剛体をボーンの位置へ引き戻す
(推測:MMDでは判定距離は+2.0程度)

となるようです。

ですので、

きっちりかっちり、位置は(ボーンから)ズレないで欲しい = 剛体を「ボーン位置合わせ」の設定にする

ちょっとだけならいいよ♪ = ジョイント設定で移動制限を0-0にする


この二つを使い分ける事が、物理設定のキモとなるようです。

最終的には上記2の処理が入り、強制引き戻し処理が行われれて、最初に想定していた動きに(近く)なる訳です。

====

MikuMikuMoving、VMDViewではこれらの処理が盛り込まれており、挙動としてはMMDに近い形になっています。
(※VMDViewでは強制引き戻しは移動制限0-0のジョイントに関する剛体のみ、となっているようです)
MMD互換、もしくは類似系ソフト(PMD/PMXフォーマットを使い、かつBulletエンジンを組み込んでる)にて、剛体・ジョイントなどがおいてけぼりになったり、吹っ飛んだりする状態になるのはこれらの処理が足りないからだと推測されます。
(ARtoolKit for MMDなどで剛体飛びがあるのは、これの所為? かなり昔の記憶なので最新版は分かりませんが)

…という事です。

最後に私が今迄勘違いしてたのはどこかというと……

1:移動制限0-0で回転のみになる、という理想形が正常作動してるものだと思ってた
2:Bulletの6DOFジョイントでの挙動が特殊なものだと勘違いしていた
3:ボーン位置合わせの機能=剛体強制引き戻し処理 と勘違いしていた。つまりその設定が行われてない剛体は、ジョイントと通じて*必ず*剛体A側に追従していくもんだと。
4:そもそも、物理演算の基礎、Bulletの基礎などを理解してない(自称)女子中学生である

とまぁ、色々とあった訳です。
記事を書きながら整理していったつもりではありますが……本質的に理解しているかどうかは正直分かりませんw
関連記事
スポンサーサイト

コメント

非公開コメント

プロフィール

かんな

Author:かんな
ニコニコ動画などでMMD動画をうpしてるしがないユーザーの一人。
ブロマガ版みくだん
連絡先:mikudan3939葱gmail.com
(葱を半角@に変換してください)

カレンダー
08 | 2017/09 | 10
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Twitter
MMD関連物
カテゴリー
最近の記事
ブログ内検索
リンク
RSSフィード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。