【Tips】MMDモデルの物理演算設定 ~剛体編~
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

【Tips】MMDモデルの物理演算設定 ~剛体編~

2014-12-04 23:38

    くぅ&みぃの配布物一覧に戻る

    ※個人の理解まとめなので、間違っている部分もあるかもしれないと思って
     読んでくださいませ。

    1.はじめにウエイトを倒す

    「物理演算」は「ボーンを勝手に動かしてくれる機能」です。

    よって、ボーンをそれっぽく動かしても、そもそもそのボーンのウエイトが
    おかしいときれいには動きません。
    物理演算の設定に取り掛かる前に、ウエイトは何とかして倒してきてください。

    倒せるかぁ!って方のために、以前作ったウエイト描画の参考画像を置いておきます。

    (こちらのツイートから再掲)

    とりあえずは、EditorのTransformViewかMMDで、物理演算を入れる前に
    手動でボーンを動かして「風になびいたらこんな感じ」というポーズを
    作ってみて、ボーンの配置やウエイトを軽く確認してから、その後の作業に
    移るのをおすすめします。


    ぐりんぐりーん。これがいい感じにいっていれば、あとは物理演算設定だけに
    専念できます。

    2.「剛体」を入れる

    (1)剛体の基礎知識

    ごくおおざっぱに一番重要な点だけ言うと、剛体とは「当たり判定」です。

      「体の剛体」=「体の当たり判定」で、
      「髪の毛の剛体」=「髪の毛の当たり判定」です。

    この「当たり判定」同士がぶつかることで、弾んだり、片方が片方を
    持ち上げたり色々するわけです。
    逆に言えば、この「当たり判定」と物理演算がなければ、MMDモデルは
    何かにぶつかったりしませんから、モデルがステージの壁をすり抜けたり、
    腕が胸にめり込んだり、なんてことが普通に起こっているのです。


    ①剛体のタイプ
      剛体には大きく分けて3つのタイプがあります。



     ■ボーン追従■:「自分で動かすボーン」と一緒に動く剛体です。
       腕とか足とかのように、重力に従って床に落ちたり、勝手に
       ゆらゆら動いたりしないボーンにくっついて動きます。
        動く順序:「関連付けられたボーン」→「剛体」
         基本的には体の当たり判定として使います。

     ■物理演算■:「勝手に動いてほしいボーン」に付ける剛体です。
       髪とかネクタイとかスカートとか、ゆらゆらいい感じに
       勝手に動いてほしい部分の剛体です。
       このタイプの剛体と関連づけられたボーンは、剛体の動きに
       合わせてボーンが動きます。
        動く順序:「剛体」→「関連付けられたボーン」
         ゆらゆらひらひらの当たり判定は基本的にこれです。

     ■物理+ボーン位置合わせ■:物理演算のための剛体の進化形。
       物理演算剛体と同じく、「勝手に動いてほしいボーン」に
       付ける剛体です。
       このタイプの剛体と関連づけられたボーンは、剛体の動きに
       合わせてボーンが動きます。
        動く順序:「剛体」→「関連付けられたボーン」
       そしてなんと、剛体が他の剛体とぶつかった結果として、
       ジョイントの制限(後で説明)をこえて遥か彼方にぶっとんで
       いってしまったとき、剛体を初期位置に連れ戻してくれます。
        →だから、処理が重くなります。
        ※使いどころ※
        ・多いのはネクタイ。なぜかというと、腕や手が好き勝手に
         動いてネクタイをぐちゃぐちゃに絡まらせてしまうことが
         ある&ただの胸リボンなどより長いのでそもそも絡まり
         やすいから。おまじないみたいなもの。
        ・MMDの世界では、ジョイントの移動制限を0-0にして
         「移動してほしくない!」と設定しても、実はちょっと
         誤差程度に移動します。するんです。
         そのどうしても移動してほしくない部分の剛体をこの
         「ボーン位置合わせ」にしておくと、誤差の移動がなく
         なり、完全に移動をなくすことが出来ます。
          →個人的には、あほ毛、髪の根本、スカートの最上段などに
           使うことが多いです。

    ※追記※
      要するに、
       「体のボーンを動かす」
          ↓
       「それにくっついて体の当たり判定剛体が動く」
          ↓
       「体の当たり判定剛体にぶつかって物理演算剛体が動く」
          ↓
       「物理演算のボーンが動く」
      という仕組みです。
    ※追記ここまで※


    ②剛体の形状・サイズ・姿勢
      剛体の形は「球」「箱」「カプセル」のどれかです。
      
    作りたい当たり判定に合わせてサイズや位置を調整します。



    この部分については感覚的に理解できると思います。
    サイズ・姿勢(=位置と傾き)については、PMDView画面で適当に見ながら
    いじってみればいいです。

    ここに数値を打ち込んで調整するなり、PMDView画面のハンドルで動かすなり
    お好きにどうぞ。
    (サイズについてはここに数字を打ち込む以外の編集方法はない気がします)
     ※PMDView画面のハンドルで動かしたあと、剛体タブに表示されている数値が
      移動後の数値に更新される前に剛体タブの情報を編集すると、ハンドルの操作は
      なかったことになるので注意が必要です。
      →一度別の剛体を選択して再選択すればハンドルでの移動後の数値になるので、
       直接編集はそのあとにするのが吉。
     ※ここの情報はPMXEditorではなくPMDEditorでの情報ですので変わってるかも
      しれません。


    ③剛体のグループ・非衝突設定
      剛体を、グループに分けて、それぞれのグループの剛体と衝突するか否か
      設定することができます。



    ここはちょっと分かりにくいのですが大切なところなので詳しく説明します。

    剛体=当たり判定なのですが、剛体は結局のところ、球・箱・カプセルのどれかの形で
    なければなりません。もし三角柱が作りたくても、それは無理なのです。
    ですから、「剛体をいくつか重ねることで作りたい形に近づける」ということをします。

     【具体例】リボンの先部分で、カプセル型の剛体が3つ互いに重なっている状態


    しかし、まずいことがあります。
    剛体は「他の剛体に当たった」と認識したら、「当たらないところまで遠ざかろう」と
    いう動きをします。
    なにせ当たり判定ですから。ぶつからないための当たり判定です。

    ですが、このリボンの先の3つの剛体は、最初から重なっています。
    この3つが「ぶつかったから離れよう!」と動いてしまうと、リボンはびょーんと
    伸びてぐちゃぐちゃになってしまいます。

    そこで登場するのが、「非衝突設定」です。

    要するに、剛体に対して、君たちはぶつかってるけど、気にしなくていいです、と
    指示することが出来るのです。

    このリボンの例では、リボンの剛体を全てグループ5にした上で、
    リボンの全ての剛体で、非衝突の「5」にチェックを入れています。



    ……見ての通り、他にもいっぱい非衝突が入ってますけど。
    どんなときに非衝突が便利かまとめると↓の感じです。

    ※非衝突の使いどころ※
    ・ネクタイ、スカート、髪、リボンなどはそれぞれ別のグループにしておいて、
     同じグループ内では非衝突にするのが鉄則です。
    ・ボーン追従の剛体は、他の剛体に当たっていようがお構いなしに、自分の
     関連ボーンと一緒に動くので非衝突をいちいちチェックしなくてもいいです。
    ・体とゆらゆらはグループを分け、非衝突にしないのが基本。
    ・肘から先の腕部分について、体の他の部分とグループを分けて、
     スカートの剛体は肘から先と非接触とした方が、スカートは破綻しにくいです。
    ・髪の剛体の入れ方によっては、髪の一番根元の剛体だけ、頭と非接触として
     「初期位置で既に頭と髪の剛体が重なっていて常にプルプルする」のを
     防ぐことができたりします。

    ※グループについて※
    ・グループ16は、MMDの世界での地面(Y=0平面)です。
     ですのでグループ16の非衝突にチェックを入れると、地面に当たらなくなります。
    ・この非衝突グループ設定は、他のモデルとの当たり判定でも使用されます。
     ですが、モデルのどの部分をどのグループに割り当てているかはモデラーやモデルで
     まちまちなので、「他のモデルの腕に当たってほしくないから~」ということは
     考えてもほとんど無駄です。諦めてください。
     (比較的、体部分にグループ1を割り当てるモデルが多いと感じていますが、
      絶対ではありません)



    ④物理演算パラメータ
      来ました、「物理演算パラメータ」!
      これぞ物理演算設定って感じのする項目ですね!!



    ここのパラメータの値によって、物理演算の結果としてのゆらゆらひらひらの動きが
    変わってきます。

    とりあえず、全てのパラメータについて言えることがあります。

    ボーン追従の剛体は、どんな値でもほとんど違いがないです。初期設定で放置で可。

    たくさん剛体がつながっている部分「ネクタイ」「長い髪」「スカート」などに関しては
     このパラメータはかなり劇的な挙動の違いにつながります

    ・揺れてはいるけど、剛体がつながっていない部分「前髪」「アクセサリ」などに関しては

     ちょっとは変わるけど、地味な違いだなー、という程度の差にしかなりません。

    ・ただし、「質量」は結構大事


    各パラメータをざっくりと解説。

    ■質量■:その剛体の重さです。
      この値が大きいと、ぶわんぶわん一生懸命振り回している感じの動きになるらしい。
      この値が小さいと、くるくる~んって軽やかに回っている感じの動きになるらしい。
      ですが個人的な経験で言えば、実際の重さを律儀に反映したら失敗します
      何となくで設定するパラメータです。
      とりあえず「質量1はかなり重い」ようで、スカートの剛体が全部質量1だと、
      明らかに重力に負けて、スカートの剛体が床まで落ちたくて仕方ない、みたいな
      動きをします。
      「質量は1が最大値」くらいのつもりで、「0.01~0.7」くらいの数値を適宜
      使うのがおすすめです。
      特にロングスカートでは、つながっている剛体の数が多くなるので、1個あたりの
      質量は軽すぎるくらいでちょうどいいです。
      あと、質量が大きいほど「他の剛体にぶつかったときの弾き飛ばす威力」が
      大きい気がします。
      ※追記※ 質量を0に設定するとエラーで物理演算が動きません。
           0.0001でもいいので、0より大きい数値に設定して下さい。

    ■移動減衰■:その剛体の移動しにくさです。
      移動減衰を極端に上げると、マトリクスの銃弾のように、ゆーっくり動いて
      最後には止まります。空気抵抗のようなイメージで考えると分かりやすいかも
      しれません。
      個人的には、重い生地のゆったりした動きは、質量パラメータではなくこちらの
      移動減衰や次の回転減衰を大きくすることで表現する方が好きです。
      理論的には0~1の範囲です。
      1を超える数字も設定できますし、実際挙動は変わりますけど。

    ■回転減衰■:その剛体の回転しにくさです。
      先程の回転バージョン。やっぱり空気抵抗の大きさです。
      MMDモデルの物理演算では移動させることより回転だけさせることの方が
      多い気がするので、移動減衰より少しだけ気を遣うかもしれません。
      ですがよく分からなければ移動減衰と回転減衰に同じ数字を入れておけば
      無難です。
      理論的には0~1の範囲です。1を超える数字も設定できますし、実際(ry

    ■反発力■:その剛体の弾みやすさです。
      数字が大きいとスーパーボール、数字が小さいと何かにぶつかっても弾まない球
      というイメージです。
      個人的には髪や布だと0にすることも多いです。
      理論的には0~1の範囲です。1を超える数字も設定できます(ry

    ■摩擦力■:その剛体のすべりにくさです。
      これは一般用語そのままのイメージで。
      理論的には0~1の範囲です。1を超える(ry


    設定した可動範囲の中で、どんな風に動くのかということがここで決まりますので、
    ぜひ納得いくまで試行錯誤してください。
    (可動範囲の設定=ジョイント設定)




    (2)剛体を入れる手順

    剛体についてだいたい分かったところで、実際にモデルに剛体を導入する手順についても
    少し説明しておきます。

    ①体の剛体を入れる



    ボーンを選択→「編集」→「選択ボーン」→「基礎剛体の作成-ボーン追従」



    なんだかそれらしい剛体ができます。
    自動で作られるのはカプセル型の剛体で、ボーンの長さに応じて適当に高さ(長さ)が
    変わります。(長さのないボーンは球になります)
    ここからサイズや位置(場合によっては剛体の形状)を丁寧に調整してください。

    最初に複数のボーンを選択した状態から「基礎剛体の作成」を行えば、一度の操作で
    複数の剛体を作ることも可能です。
    その場合「非表示ボーンは剛体/Joint作成不可」にチェックが入っていれば表示ボーンのみ、
    チェックが入っていなければ非表示ボーンについても剛体が作られます。



    こんな感じに。

    【ポイント】
      実際の体のポリゴンより、少し大きめになるように剛体を入れる!

    髪の毛が体に埋まってしまっている状態と、髪の毛が体から少し浮いている状態では、
    髪の毛が少し浮いている状態の方が違和感が少ない場合が多いです。
    揺れ物全般について、体に埋まるといかにも破綻した感じになってしまいます。
    ですので、体の当たり判定は実際より大きめに設定しておきましょう。

    スカートの下の下半身について、スカートと体の距離が近い腰の辺りはかなり剛体の
    大きさ設定がシビアになってきます。
    不自然にスカートが体から浮き上がらない、でも体より下にスカートが埋まってしまう
    ことのないようにするため、体の剛体の数を増やして少しずつ輪郭を作ってでも
    丁寧に丁寧に当たり判定を作りましょう。

    逆に、スカートの広がり方によっては、足先の方は実際よりかなり大きい当たり判定を
    作らなければならないこともあります(スカートのひだが深い場合など)。


    ②揺れ物の剛体を入れる



    揺れ物の剛体を入れるときには、ジョイントも一緒に作ってしまった方が後が楽です。

    「1列分のボーンを全て選択」→「編集」→「選択ボーン」→「基礎剛体/連結Jointの作成」



    こんな感じでジョイントも一緒に作ってくれますし、ジョイントの接続関係も
    ある程度自動で設定してくれます。

    同様に、大きさなどを調整します。

    【ポイント】
      実際のポリゴンより、少し大きめになるように剛体を入れる!

    理由は体の剛体を少し大きくしたのと同じです。



    ただしスカートについては、手動で全部調整していたら気が狂いそうになるので、
    PMDEditorの神プラグインである「曲面自動設定プラグイン」に
    ボーン入れ・ウエイトから全てお世話になるのがいいと思います。



    この後、物理演算の設定は、ジョイント編に続く……。
      ジョイント編できました! →ar788809


    この情報が、皆様の素敵なMMDライフの一助となりましたら幸いです。

    みぃ  .

     その他のTips→よくある物理演算が滅茶苦茶になる原因とその対策ar410658
            モデルやアクセサリの描画順についてar234462


    くぅ&みぃの配布物一覧に戻る



    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。