MMD/MMMでの物理挙動と設定

 個人的にモデルセットアップ四天王と思っている、その中の一人であらせられるででさんの生放送などで学んだというか、理解した内容をメモがてらに。
 基本的な各設定項目については、かこみきさん著「3DCG日和。Vol.2」(BNN出版)、第4章5項(P.182~)についての知識がベースにあるものとします。
 以下の説明は、ででさんの言葉を借りつつとなります。
 また、文字だけで図はありませんし、間違った情報(勘違いや勉強不足)の可能性もあります。ご了承を。

■ エンジンの違いと挙動の違い
 繰り返しになりますが、MMDとMMMでは使用しているエンジンこそ同じであれ、搭載しているエンジンバージョン違いで挙動変更がなされていますので、たとえ同じソースにしても挙動が一致する事はまず有り得ません。
 それでも、出来るだけ似せるような動きになるように再々調整を繰り返されたのが、MMM Ver1.0.2以降となります。

 MMMの方がある意味、より素直に物理特性設定の数値に反応するようになったとも言えますし、別な表現とすればより設定にシビアになったとも言えます。
 MMM用に物理設定をくみ上げておけば、差異はあれどMMDでもほぼ理想どおりに動きます。
 MMD用に組んであるものをMMM側で使う時には、その差異が少々大きく見えたり、場合によっては予想外の動きになる可能性も孕んではいます。
 MMD搭載のBulletエンジンの方がバージョンが低いので、ある意味当然の帰結とも言えるでしょう。

 そういった意味では、動作確認をMMM側でする事で、MMD/MMM共通で使える物理設定を組み上げる事ができるのではないかという所です。

 ですが、具体的にどう組み上げれば良いのか、という部分に関してはパターンによって変わってくるのもありますし、そのうちででさんがまとめてくれるかもしれないという淡い期待を抱きつつ、別な機会などにしたいと思います。

■ 剛体質量
 剛体の質量設定そのままですが、大きさとも関わりがあるような挙動をするので、質量というよりは密度と表現したほうがイメージしやすいかもしれません。
 剛体形状が大きく質量が少なければ発泡スチロールのようなすっかすかなものとなりますし、形状が小さく質量が大きければ鉄の塊となります。
 質量が大きいと振り回された時の挙動も大きくなりますが、駆動部分(ボーン追従との接続)から大きな力が伝達さる必要があります。
 この辺りは後述の剛体タイプ設定、ジョイントとの兼ね合いになります。

 入力する数値が何に対してなのかはよく分からない部分もありますが、恐らく重力加速度との兼ね合いとなるのではないかと。

 実際の入力としては、剛体の大きさに合わせて適当な数値を入れつつ、実際の動作確認をした方が理解は得やすいかもしれません。

■ 移動減衰・回転減衰
 文字通りの減衰ですが、正確には減衰「率」と考えても問題はないでしょう。入力する数値は0~1の範囲なので、そのまま0~100%と考えれば分かりやすいかと思います。
 0.1で10%の減衰、0.5で50%の減衰です。
 空気抵抗、もしくは粘性みたいなものと考えても良いかもしれません。
 落下移動で考えれば、減衰がゼロに近ければそのままストンと落ちますし、減衰が高いと水の中を落ちるようにゆくりとなります。
 スカートなどでいえば、減衰が低いと防御力が低下し、減衰が高いと程よい具合にチラっと見える程度になったりという感じです。

■ 反発力
 剛体同士がぶつかった時の挙動設定ですね。基本的にはこちらも0~1の範囲内ではありますが、1以上でも効果はあります。
 反発力を1に設定すれば、高さY=10から落とすと、跳ね返った時にY=10へ戻ってくる挙動となります。反発力が0.5ならY=5に跳ねるという感じです。

 とはいえ、人物系モデル、特に女の子モデルで使う場合は髪とスカートとなりますが、体本体となるボーン追従剛体も含めて、ほとんど反発力を設定する事はないでしょう。
 下手に設定すると剛体が飛んで行ったり、他剛体の中にめり込んでしまって動かなくなる事もあります。
 ボールや何かの発射装置とか、そういったギミックを作る時に使う項目ともいえます。

■ 摩擦力
 文字通りではあります。剛体同士がこすり合わさった時の挙動設定。こちらも基本的には0~1の範囲内で十分でしょう。
 摩擦力が低ければワックス廊下のようにツルツルいきますし、高ければゴム床のように滑らなくなります。
 こちらもスカートや髪にはやたらと設定しないほうがよさそうです。
 要所要所で0.5くらいで十分かと思います。

■ 剛体タイプ
 ボーン追従は物理演算させない剛体、物理演算は文字通り演算させる対象となる剛体ですね。
 さて、残る「物理演算+ボーン追従型」ですが…
 基本的には元のボーンから大きく外れないように、剛体とボーンの位置を半ば無理やり合わせるといったものです。

 演算スタート ⇒ ボーンと剛体の位置が離れる ⇒ 剛体をボーンの位置に(内部設定の範囲内)に無理やり引き戻す

 というような機構だと思って良いのではないかと。
 これの計算はやや負荷が高く、やたらとモデルに組み込むと挙動が重くなります。
 基本的には、髪のような複数個の物理挙動剛体が連なっている構造では、1本目となるボーン追従と物理挙動剛体のものだけをこの設定にし、それ以降の剛体は単純に物理演算剛体としたほうが素直です。

 引き戻す範囲は内部設定なのでどうなっているかはユーザーには分かりません。また、完全に位置を同一化させるようなものでもなさそうで、「ある程度」引き戻されるという感じなので、よく挙動を見ないと分からなかったりします。

 挙動がふにゃふにゃして固めにしたい場合、この設定を使っても悪くはないのですが、これを使うよりもジョイントの設定などで追い込んだ方が素直には動くと思います。
 腰ひもなど、ボーン追従剛体と絡みやすい部分などには使った方が良いでしょう。

■ Joint設定
 ジョイントの設定は名称通りの事が多いので詳しい説明は書籍や他を参考にしてください。
 ですが前述の通り、MMMではここの数値設定に対して割と厳密というか数値通りに動くようになってますので、特に制限とバネの設定は少々綿密にしたほうが理想の挙動に近づけられます。

 回転制限などの計算順番は、X軸の制限を行った後にY軸へ、そしてZ軸へという感じなので、3軸一度に制限が掛かるようではありません。
 スカートのような構造では、Y軸よりもX・Z軸の挙動幅の方が大きいので、計算順もそれに合わせるように、ジョイントのZ軸を90度回転させて設定し、計算順番を任意的に変えるというテクニックもあります。
 移動制限の方も、裾側へいくほど0-0でかっちり固めるよりは、-0.5~+0.5のようにちょっとだけ動いても大丈夫なようにしつつ、下記のバネとの兼ね合いで設定すると挙動が良くなったりします。

 バネは文字通りバネっぽい動きをする設定です。最終的には元に戻ろうとする力が働くのですが、元に戻るまでに何度か反復運動をしながら収束していく動きとなります。
 びよーんびよーん ⇒ ぷるぷる ⇒ ピタっ
 って感じですね。
 なので、こちらもまたスカートなどの挙動では、回転制限などでかっちり決めるよりは、制限を少々緩やかにしつつ、バネの方で元に戻ろうとさせた方が、柔らかさと防御力を兼ね備えた挙動にしやすいです。

 バネの数値は何を基準とされているかはいまいちよく分かっていませんが、割と50とか100とか思い切った数値を入力した方が挙動のコントロールはしやすいかもしれません。

■ ジョイントロックについて
<改定20120701>

JOINT挙動について(訂正・改定)
http://mikudan.blog120.fc2.com/blog-entry-318.html



■ MMM上での物理挙動の諸注意
 MMMでは物理ワールドの分解能は120fpsまで引き上げられています。その分計算が重くはなっていますが、より衝突判定などが正確になっていますので、すり抜けなどが少なくなってるはずです。
 ですが、通常の操作画面での再生では、表示FPSに左右されて計算されますので、表示FPSが落ちているとその分の計算が飛ばされます。
 正確な挙動が見たい場合は、

1:AVI出力して確認
2:物理演算焼きこみを行った後、物理演算・髪IKなどをオフにして再生チェック
3:頑張って30fps以上の表示速度になるよう、グラボやCPUなどのスペックを上げる

 のいずれかになります。
 物理演算焼きこみをする前にプロジェクトを保存しておき、何度がシード値を変えつつ挙動をチェックするという方法も取れます。
 焼きこみでのチェックは再現性100%ですし、細かい挙動のチェックなどもできるので、物理特性の数値を決めるのにも役立ちます。
 また、挙動に問題なければ、それ以降は物理演算処理が必要なくなるので、CPU負荷も軽減した状態で作業が続行できますし、多人数モデルを使用している場合はこの恩恵がかなり大きいです。
 モーションレイヤーを使って、物理挙動に手を加えて思う通りに動かす事も可能です。
 更に焼きこんだ後、高FPS設定でAVI出力を行えば、スーパースローの表現も可能です。
(MMDでは高FPSでAVI出力しても、物理挙動は60fpsが限界。120fpsで出力しても2コマづつしか動いてくれない)


以上です。
いずれ、また別な形でまとめるかもしれません…いつになるか分かりませんが。

最後となりましたが、
樋口さん、Moggさん、極北P、ででさんに感謝致します。ありがとうございます。
スポンサーサイト

PerfumeGlobal x MikuMikuMoving

Perfume Global Site
http://www.perfume-global.com/

こちらにて配布されているモーションデータと曲を使って、MikuMikuMovingの有用性を検証してみました。



動画内でほとんど説明出来てしまったので、ブログにてフォローする内容はそう多くはありません。これもゆかりさんの声のお陰ですねw
やはり文字で説明するとどうしても字数制限などもあり、また時間もかかってしまいますが、耳も併用する事で情報圧縮ができるなぁと実感しました。

とにかく、MMMはモーション自作派などには特にお勧めです。
これだけ編集機能が充実してきているので、かなり時間節約にもなります。
更に効率などを求めるとなると、今度はモデルフォーマット側の問題となってきますね。

MikuMikuMoving Ver1.0.2 リリース

MikuMikuMoving Ver1.0.2 リリースの情報です。
今回のバージョンアップはかなりお勧めです。

MikuMikuMoving Ver1.0.2
https://sites.google.com/site/moggproject/mmm


■ 物理演算機能の改良

MMDに搭載されているBullet Engine Ver2.75、それとMMMで搭載されているBullet Engine Ver2.8との挙動差などの狭間で、開発者のMoggさんもかなり悩み揺れ動いていた部分もありますが、より挙動的に正しい演算結果が得られるようになりました。
それでもなお、細かい所ではMMDの挙動と差はありますが、これはBulletの特性でしょう。
(厳密にいえば同じエンジンだろうと、開発思想にも差異がありますし)

ひとまず弄った感じでは、

 ▼ 回転・移動減衰系の数値がより明確に反映されるようになっている
 ▼ 質量(剛体)・バネ(Joint)の関係がより正しい挙動に関係しているような感じ
 ▼ 回転制限角度がより正確に反映

…という感じを受けました。

ある意味、MMDよりもより数値に対して正確っぽい動きをしてるともいえます。その分、若干動きが固めに見える所、たとえば前髪なんかはそうですけど、標準ミクVer2のデフォルトだと動きによっては張り付いた感じもしますが、可動範囲設定(角度制限)などを緩和させる事で従来通りの動きになったりもします。
数値に対してシビアになっていますが、その分、数値を少し追い込んで設定すれば、今まで以上に滑らかな動きをするはずです。

また、内部的には120fpsで計算させ、衝突判定などをより細かくする事で剛体のめり込み対策ともなっています。
(その分、処理が倍増しているので、PC環境によっては重くなっている場合もあります)

動作が重くなった対策の一つとして、モーションが確定したら物理演算の焼きこみ(ベイク)機能を使って、ボーンに反映させてしまえば、以降は物理演算を切った状態でも再生できますし、高FPSでのスーパースローモーション的な演出などにも活用できます。

キーフレームFPS設定、AVI出力設定にも少々変更があり、従来までは最高120fpsまでの設定でしたが、上限を10,000fpsまで大きく使う事ができるようになりました。
300fpsや900fpsといったハイレート出力も可能です。
(その変わり、タイムラインはやたらに長くなりますし、AVI出力ではファイルが増大します)


■ システムメモリ節約オプション 追加
MMM102_1
ファイルメニュー ⇒ システム設定 で開くダイアログ、さらに「システム」タブを選ぶとこの画面になりま。
この下の方にある「システムメモリ節約」のチェックをオンに、OKボタンで設定すればメモリが即座に節約されます。
作業途中で行う事もできますが、動作を完全に保証する訳ではないので、初期状態で行う事を推奨しているようです。
特に大きなテクスチャを使ったモデル・アクセサリなどを使用した時に効果が出るようです。


■ その他

- ポーズハンドルでCtrlを押しながらドラッグすることで細かく動くようにした
- 複数トラック使用したときに音が鳴らなくなる場合があった現象を修正
- AVI出力時に背景動画/画像のサイズが異なってしまう場合がある現象を修正
- その他細々修正

など、要望や細かい部分の修正なども含まれています。

MikuMikuMoving Ver1.0リリース

MikuMikuMoving Ver1.0
https://sites.google.com/site/moggproject/mmm


予定していた機能の実装と、ある程度の動作が固まったと判断がなされたようで、遂にMikuMikuMovingも正式版リリースとなり、Ver1.0へ昇格しました。



とはいえ、今回のバージョンアップで大幅に何かが変わったというよりは、通常のバージョンアップとそう変わりありません。
とりあえず、一つの区切りが出来たという所でしょうか。

今回のバージョンアップ内容は以下の通り。

Ver1.0
・ポーズハンドル機能を追加
・プロジェクトを読み込むと字幕がすべてゼロフレームになるバグ修正
・その他色々細々修正


また、少し前からですが、物理演算エンジンであるBulletもVer2.8(現時点で最新版)に対応しているようです。

今回のバージョンアップで、初心者の人にも使いやすい機能がひとつ増えています。
それが「ポーズハンドル機能」です。

ポーズハンドルは、腕と上半身系を専用のハンドルを操作する事で、疑似的にIK操作とおなじような感覚でポージングを作れる機能です。
BoneHandle
ハンドルの表示は、メニューからビューを選び、「ポーズハンドル表示」を選びます。クリックする度に、ハンドル表示のON/OFFが切り替わります。
BoneHandle2
また、ショートカットもあり、「X」キーが表示・非表示の切り替えとなっています。

操作は簡単で、上半身を動かしたい場合は頭の上のハンドルをドラッグ、腕の場合は左右どちらかのハンドルをドラッグすれば、対応している関連ボーンが一度に動かせます。

頭上 :上半身・上半身2(対応モデルのみ)・首・頭の各ボーン
左右腕:肩・腕・肘の各ボーン

BoneHandle3

MMM内部にて、無理のない範囲での稼働範囲を制限しているので、楽に人らしいポージングが可能になっています。
動かした分、対応しているボーンが選択されたままなので、動かした後にキーフレームを登録(キーフレーム登録ボタン または Enterキー)していけばいいわけです。

ただし、あくまでも簡易的な可動範囲設定なのと、ポージングを楽にする為だけの機能ですので、細かい角度調整などは、各ボーンをそれぞれ従来通り動かす必要があります。
ポーズハンドルで大まかなポージングをし、各ボーンで微調整、という流れです。
MMD/MMMなどで従来通りのやり方に慣れている方は、従来通りの方法のほうが早い場合もあるでしょう。
なかなか思う通りに腕のポージングが出来ない…モデル改造して腕IKの追加などの方法がまだ分からない、という人向けの機能といえます。

注意点としては腕IKとして機能している訳ではなく、あくまでもポージング作業の軽減化をする為のものですので、モーションを付けた場合は従来通りのFK(各ボーンがそれぞれ回転)する動きとなります。
またボーンハンドル自体の位置情報・回転情報などは記録されませんし、キーフレーム登録もできません。
そして、Z軸方向(体の前後など)に動かす場合は、一度視点を横からのショットにしてから操作する必要があります。

制限角度などは内部固定になっていますので、ユーザー設定はできません。あくまでもポージング簡易作業用の機能としてみたほうがいいでしょう。

最後にちょっとしたTIPSなどを。

■Windows Vista/7ユーザーは、(環境次第ではあるが)Aeroを切ると描写FPSが格段に上がる場合がある。
MMMでは描写処理の部分がWindowsの状態に左右される事が多々あります。多くのソフトが同時に起動していたり、バックグラウンドで別作業をしていると描写が遅くなります。
それらの作業を一時止めるなどしつつ、Aeroを切れば描写は早くなります。
また、リボンインターフェースの表示なども瞬時に行えるようになるので(フェード効果などが無くなる分、早くなる)のでオススメです。

■コマンドバーのカスタマイズを活用しよう
よく使うボーン編集系の機能などはコマンドバーに登録し、使いやすいように並べ変えておくといいでしょう。
そうすれば、リボンメニュー(上部メニュー)などを使う事はほとんど無くなり、より広く画面を使って作業を行う事ができます。
ショートカットを覚えるのも手ではありますが、長時間作業ともなると、右手マウスだけで操作する事も多くなるでしょうから、コマンドバーの活用はオススメです。
CommandBar1
CommandBar2

MikuMikuMoving用プラグインなど

それなりに情報収集に勤しんでいるつもりではあったものの、やはり漏れは結構あるようで…
以下に紹介するサイトさんも生放送で教えて頂きました。

Linearstar (ミーフォ茜さん)
http://star2.glasscore.net/Pages/Mmd




こちらの方に、MMMのプラグイン、それだけでなくメタセコのプラグインや関連ツールなども公開されております。

範囲指定したキーフレームにオフセットを掛けられる「ボーンシフト / ShiftBoneFramesPlugin」
ランダムに揺らし(ヴィグラー)効果を付けられる「ボーンシェイク / ShakeBoneFramesPlugin」
時間軸方向に逆転させる事ができる「ボーン逆再生 / RevertBoneFramesPlugin」
任意のモーションレイヤーなどにグルーブ的な動きを付加させる「グルーブ自動生成 / GenerateGroovePlugin」
細かい動作や数学的動作の自動作成に役立つ「スクリプトエディタ / CSharpScriptPlugin」

など、すごく便利なプラグインが勢ぞろいしています。
またツールの方では、

MMMでのモーションレイヤー情報を含むモデル自動改変とVMDモーションへの変換を行う「Mvd2Vmd」
MMMでのカメラ動作をMMD基準にする「MMMCameraModify」

などのユニークなツールもあります。
MMDとの連携を取りつついいとこ取りをしながら作業するのに便利なツールとなっているようです。

各プラグイン・ツールの紹介動画もリンクがありますので、使い方などは付属のテキストファイルや紹介動画などをご覧いただければと思います。
プロフィール

かんな

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

カレンダー
05 | 2012/06 | 07
- - - - - 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フィード