☆超初心者向け フリーウェアのみを使用したステレオVR-MMD動画の作り方

確実なモーション修正

記事作成日 2018/12/17

※注意

各ソフトウェアは、解説に使用されているものと完全に同一のバージョンをダウンロードして使用してください。少しでもバージョンが違うと、相性問題が発生することが多いためです。

予備知識1:用語説明

解説の前に、用語の意味を説明しておきます。

フレーム
動画を1秒間ごとの30枚の画像の連なりと見た場合に、何枚目の画像に該当するかを示す数値。一般に言う「○フレーム目」と同じ意味。

ボーン
腕のボーン、頭のボーン、足のボーンなど、各パーツに設定された「骨」のようなもの。髪や袖等では、根本から先まで、多数のボーンが連なっているのが普通。(多数のボーンの継ぎ目=関節があるので、複雑な動きが可能となる)

キーフレーム
ある時点のボーンの位置+角度。一連の動きの起点と終点で、関連して動くボーン全てのキーフレームを打つ(登録する)必要がある。アニメで言う原画に相当する(アニメで言う動画、すなわち、キーフレームの間のボーンの位置+角度は、プログラムが補間曲線に応じて自動生成する)。MMDやMMMの画面左側のパネルで◇型の点が表示された位置が、キーフレームが打たれた所になる。ボーンによって1つのモーションファイルに登録された合計キーフレーム数はバラバラ(動きが激しいほど多くなる)。全打ちなら1秒間30個のキーフレームが登録される。「キー」と略されることもある。

予備知識2:モーションファイルの分割と結合

MMD(MikuMikuDance)では、キーフレームを60万個までしか扱えません。(32ビット版MMD等は30万個まで)
よって、例えば、400ボーンのモデルで、7200フレーム(4分間)の長さのモーションを使用するとき、物理焼き込み等で全ボーンでキーフレームを全打ちした場合、400×7200で288万キーフレームとなり、5分割しなければMMDでは読み込めません。

一方、MMM(MikuMikuMoving)には読み込むキーフレームの数に制限はありません。また、さくさくMMM、MMDMotionFilter_MMM_plugin等は、処理可能なキーフレーム数が30万以下となりますが、指定するボーンを少数ごとに区切るだけでよく、面倒なファイル分割は必要ありません。

しかし、MMMは、読み込んだキーフレームの数が一定数を超えた場合、一応、動作はしますが、プラグインによる処理が非常に重くなります。(処理完了まで本来の数十倍の時間がかかります)
例えば、400ボーンのモデルで、7200フレーム(4分間)の長さのモーションを使用するとき、全ボーンが全打ちだとキーフレーム数が288万になりますが、これをMMMに読み込んで、41個以下のボーンの0フレーム目~7200フレーム目に打たれたキーフレーム(約29万個以下)だけを選択し、MMDMotionFilter_MMM_pluginを使用した場合、MMDMotionFilter_MMM_pluginは、一応、動作はしますが、処理完了まで1ボーン当り20~40分(全400ボーンだと130~260時間)の時間がかかります。
一方、上の例でモーションファイルを41個以下のボーンごとに分割してからMMMに読み込んだ場合は、1ボーン当り1~2分(全400ボーンだと6~13時間)で処理が終わります。
よって、MMM用プラグインを用いる場合も、事実上、モーションファイルの分割と結合がほぼ必須になります。
※実際は、物理演算が適用されないボーンは全打ちされないので、上記の数分の一の時間で全ボーンの処理が完了します。

下記の解消法D~Eでも、MMDやMMM用プラグインを利用するため、途中でモーションファイルの分割と結合を行います。

1.MMDのインストール

あらかじめ、MMD(MikuMikuDance)をインストールしておきます。

Vocaloid Promotion Video Project1.4 MikuMikuDance(64bitOS Ver)からMikuMikuDance(x64 Ver) をダウンロードしてください。
なお、本解説ではMikuMikuDance_v931x64バージョンを使用しています。

次に、ダウンロードしたzipファイルを解凍する前に、Windows標準エクスプローラでzipファイルのプロパティを開き、一番下にあるブロックの解除をクリックします。
これを行わなければ、起動時にエラーが出てMMDを起動できませんので、注意してください。

ブロックを解除したらzipファイルを解凍して、適当な場所にコピーしておきます。
次に、インストールしたMikuMikuDance.exeを起動してください。(通常はランタイムは自動的にインストールされますが、もしエラーが出て起動しない場合は、MMD同梱のreadme.txtを読んでランタイムをインストールしてください)

エラー表示なしで起動することが確認できたら、いったんMMDを終了させておいてください。

2.VMDファイルエディタのインストール

次に、キーフレーム数制限なしでモーションファイル(vmdファイル)の速度変更やモーションファイルに含まれるキーフレーム数の表示等を行う機能を持つ、VMDファイルエディタ v1.3.0をインストールしておきます。

VMDファイルエディタ v1.3.0 - BowlRoll からVmdEditor130.zipをダウンロードしてください。

次に、ダウンロードしたzipファイルを解凍する前に、Windows標準エクスプローラでzipファイルのプロパティを開き、一番下にあるブロックの解除をクリックします。
これを行わなければ、起動時にエラーが出てVMDファイルエディタを起動できませんので、注意してください。

ブロックを解除したらzipファイルを解凍して、適当な場所にコピーしておきます。
次に、インストールしたVmdEditor.exeを起動してください。(通常はランタイムは自動的にインストールされますが、もしエラーが出て起動しない場合は、VMDファイルエディタ同梱のreadme.txtを読んでランタイムをインストールしてください)

エラー表示なしで起動することが確認できたら、いったんVMDファイルエディタを終了させておいてください。

3.MMDMotionFilter_MMM_pluginのインストール

元はKinectを使用してモーションキャプチャしたデータの乱れを自動的に補正するツールで、その手打ちモーション用の別バージョンを、さらにMMM(MikuMikuMoving)用プラグインとして移植した、MMDMotionFilter_MMM_pluginをインストールしておきます。

MMDMotionFilter_MMM_plugin - BowlRoll からMMDMotionFilter_MMM_plugin.zipをダウンロードしてください。

次に、ダウンロードしたzipファイルを解凍する前に、Windows標準エクスプローラでzipファイルのプロパティを開き、一番下にあるブロックの解除をクリックします。
これを行わなければ、起動時にエラーが出てMMDMotionFilter_MMM_pluginを起動できませんので、注意してください。

ブロックを解除したらzipファイルを解凍して、05_01_MMDMotionFilter.dllを、MMMをインストールしたフォルダの下にあるPluginsフォルダにコピーしておきます。(例:MikuMikuMoving64_v1292\Plugins\05_01_MMDMotionFilter.dllとなるようにコピー)
次に、MMMを起動してください。

エラー表示なしで起動することが確認できたら、いったんMMMを終了させておいてください。

4.確実なモーション修正の概要

モーションの破綻の修正の続きです。
モーションの破綻の修正では使用する物理演算エンジンのバージョンを変えただけで破綻が直りましたが、たいていはそれでは直りません。
本項では、モーションの破綻を、ツールや手作業で確実に直していきます。

モーションファイルは、多くの場合、特定のキャラクターモデル用に作られています。それ以外のキャラクターモデルで使用すると、腕や足が服に埋まる等の破綻が頻繁に生じます。
物理演算をオンにすると、この破綻が軽減されることがありますが、今度は、物理演算に係る破綻が新たに発生します。(これを、俗に「荒ぶり」と呼びます)
物理の荒ぶりは、パーツが押し合い続けること、関節部のパーツが角度制限で押し返され続けること等により発生します。
モーションの破綻は、主にこの2種類となります。

よく目に付く破綻の症状は、以下の3つです。
破綻α.ダンス開始前、ダンス終了後に、服の袖や髪がプルプル動く
破綻β.ダンス途中に、服の袖や髪がプルプル動く
破綻γ.腕や足が服に埋まる

5.破綻αのみの場合

ダンス開始前、ダンス終了後に服の袖や髪がプルプル動くだけで、ダンス途中では何ら問題が無いケースです。

これは、解消が比較的容易です。(以下の方法で確実に直ります)
他の方法でも直る可能性がありますが、却って遠回りになる可能性が高いので、最初から以下の方法を取った方がベターです。
解消法A
ダンス開始前やダンス終了後の関連ボーン(服の袖や髪等のボーン)の位置や角度を同一化する方法。
1.MMMを使用して、関連ボーンのみに物理焼き込み。
2.MMMで、ダンス開始前とダンス終了後に該当するフレーム全てにおいて、関連ボーンのキーフレームを同一化する(関連ボーンだけ全く動かない状態にする)。
例えば、開始前と終了後のそれぞれ8秒間に、静止するはずの服の袖がプルプルする場合、服の袖関連ボーンを全て選択してから、1フレーム目~238フレーム目を選択して、赤く反転したキーフレームを一括削除(0フレーム目と239フレーム目は残すことに注意)。終了後の8秒間も同様。
3.MMD4Mecanim内蔵Bulletをオン+Freeze Rigid Body Listに関連ボーンを指定して、Unity+MMD4Mecanimに読み込む。
解消法Aの詳細な解説はこちら

6.破綻βのみの場合

ダンス途中のモーションに問題が発生しているケースです。

この場合、まず以下の解消法Bを試します。
解消法B
モーションファイルを修正するのではなくMMDモデルを改造する方法で、ツールを使用するため比較的簡単であり、また、処理もすぐに終わることが特長。
服の袖や髪等を、緩く(あさっての位置を中心として)横ジョイントで繋ぐことにより、元のモーションを壊さずに動きを穏やかにできる。
1.PmxEditorで対象モデルを開き、関連剛体(服の袖や髪等の剛体)にあさってジョイントpluginを使用して、別名保存。
2.モーションファイルと共に、Unity+MMD4Mecanimに読み込む。
解消法Bの詳細な解説はこちら



解消法Bで直らなければ、次に以下の解消法Cを試します。
なお、解消法C~Eでも、キャラクターのpmxファイルは、まず、解消法Bを適用したものを使用してください。(解消法C~Eとも併用可能です)
上手く直らない場合は、元の(解消法B適用前の)キャラクターのpmxファイルを使用してもう一度試してみてください。
解消法C
キャラクターをゆっくり動かせば、各部の慣性運動等も穏やかになることを利用した方法。
1.MMDを使用してモーションの速度を1/2倍にする。(スローモーション化)
2.MMMを使用して、関連ボーン(服の袖や髪等のボーン)のみに物理焼き込み。
3.VMDファイルエディタを使用してモーションの速度を2倍にする。(再び元の速度に戻す)
4.MMD4Mecanim内蔵Bulletをオン+Freeze Rigid Body Listに関連ボーンを指定して、Unity+MMD4Mecanimに読み込む。
解消法Cの詳細な解説はこちら



解消法Cで直らなければ、次に以下の解消法Dを試します。
なお、解消法Dでも、モーションファイルは、まず、解消法Cを適用したものを使用してください。(解消法Dとも併用可能です)
上手く直らない場合は、元の(解消法C適用前の)モーションファイルを使用してもう一度試してみてください。
解消法D
MMDMotionFilter_MMM_pluginを使用して、モーションを穏やかにする方法。
1.モーションファイルを分割。
2.それぞれの分割ファイルについて、MMMを使用して、関連ボーン(服の袖や髪等のボーン)のみにMMDMotionFilter_MMM_pluginを実行。
3.MMMを使用して、分割ファイルを1つのモーションファイルに統合。
4.MMD4Mecanim内蔵Bulletをオン+Freeze Rigid Body Listに関連ボーンを指定して、Unity+MMD4Mecanimに読み込む。
解消法Dの詳細な解説はこちら



解消法Dで直らなければ、最後に、以下の解消法Eを実行してください。
なお、解消法Eでも、モーションファイルは、まず、解消法Dを適用したものを使用してください。(解消法Eとも併用可能です)
上手く直らない場合は、元の(解消法D適用前の)モーションファイルを使用してもう一度試してみてください。
解消法E
MMDやMMMを使用して、該当フレーム区間(破綻が発生するフレーム区間)の全フレームの、関連ボーン(服の袖や髪等のボーン)の全てのキーフレームを、1つずつ手で修正する方法。
※解消法Eでは、事前に必ず関連ボーンのキーフレームを全打ちしておく必要があります。これは、キーフレーム全打ちではない状態でボーンの位置や向きを手で修正すると、補正曲線が狂ってしまうためです。また、「物理演算が適用されないボーン(MMMの物理焼き込みが無効となるボーン)」を含むボーンのモーションを修正する場合、単にMMMで物理焼き込みを行うだけではダメで、下記のように、物理焼き込み済みモーションファイルに対してMMMのレイヤ統合保存機能(強制全打ち化)を使用する必要があります。
1.モーションファイルを分割。
2.それぞれの分割ファイルをMMMで開き、モーション保存ダイアログを開いてVMDファイルとレイヤ統合にチェックを入れ、保存ダイアログ下側のボーン一覧のうち関連ボーンのみにチェックを入れて別名保存。(これで、関連ボーンのみの全打ちモーションファイルができます)
3.MMMを再起動してから、それぞれの分割ファイルについて、元のファイル(1で作成したファイル)を開き直し、画面左上側のフレームの欄に0を入力してから、「関連ボーンのみの全打ちモーションファイル(2で作成したファイル)」を読み込んで別名保存。(これで、関連ボーンのみ全打ちされた全身のモーションファイルができます)
4.MMDで3で作成したファイルを開き、関連ボーンのみを選択+該当フレーム区間を選択。
5.メインメニューの編集>ボーンフレーム位置角度補正をクリック。
6.角度のXYZそれぞれの*欄(動きを大きくしたいときや小さくしたいとき等)と+欄(撫で肩、いかり肩の調整等)に、適当な値を入力。
7.概ね6で補正できたら、別名保存して、MMMで開き直す。
8.多段ボーンを追加し、該当フレーム区間の全フレームを最初から順に選択して、多段ボーンや元からあるボーンを動かして手修正。
9.他の分割ファイルについても、4~8を繰り返す。
10.それぞれの分割ファイルについて、さくさくMMMを使用して、「キーフレームが全打ちされたボーン」のキーフレームを間引く。
11.MMMを使用して、分割ファイルを1つのモーションファイルに統合。
12.MMD4Mecanim内蔵Bulletをオン+Freeze Rigid Body Listに関連ボーンを指定して、Unity+MMD4Mecanimに読み込む。

解消法Eは、確実かつ正確に思い通りのモーションに修正できますが、キーフレームの手作業による修正(キャラクターのポーズの修正)を、30フレーム×秒数だけ繰り返さなければいけないので、途方もない手間がかかります。
よって、まず他の方法での解決を模索し、無理だった場合のみに最後の手段としてピンポイントで(特定フレーム区間のみで)使います。



また、破綻βに加えて、さらに破綻αが生じる場合は、上記の解消法Aを併せて実行すればOKです。(Unity+MMD4Mecanimに読み込む直前に、解消法Aの2を実行など)

7.破綻γのみの場合

本来は腕や足が少々服に埋まる場合でも、物理演算をオンにすれば、押し合いによって自然に変形し、埋まりが解消することがありますが、元の埋まりが大きいと、変形の限界を超えてしまい、そのまま埋まってしまいます。
以下は、そのケースです。

この場合、まず上記の解消法Dを試し、直らなければ上記解消法Eを実行してください。
※解消法Dを適用するキャラクターのpmxファイルは、元のpmxファイルでOKです。(解消法Bを実行する必要はありません)
※解消法Dを適用するモーションファイルは、元のモーションファイルの関連ボーンに物理焼き込みしたものを使用してください。(解消法Cの全てを実行する必要はありません)

また、破綻γに加えて、さらに破綻αが生じる場合は、上記の解消法Aを併せて実行すればOKです。(Unity+MMD4Mecanimに読み込む直前に、解消法Aの2を実行など)

また、破綻γに加えて、さらに破綻βが生じる場合は、まず破綻βに上記の解消法B及びCを試し、ダメなら破綻γと一緒に上記の解消法D及びEを実行してください。

8.Unity+MMD4Mecanimのメリット

ちなみに、MMDやMMMを使用して動画を出力する場合は、「動画出力時に全ボーンの物理演算をオンにする」か「動画出力時に全ボーンの物理演算をオフにする」しか選べません。このため、解消法A~Eを適用するとき、常に全ボーンの物理焼き込みが必要となり、分割ファイル数が多くなったり、処理に多くの時間がかかったりします。
一方、Unity+MMD4Mecanimを使用して動画を出力する場合は、Freeze Rigid Body Listで指定したボーンだけ出力時に物理演算をオフにすることが可能なので、一部のボーンのみに物理焼き込みを行えば良く、本家であるMMDやMMMに比べれば、比較的楽にモーション破綻の修正が可能です。

参考:

MMD/MMMの物理プルプルとの戦いの歴史:簡易にMMDドラマを製作する方法の研究 - ブロマガ
MMD動画の演算と和睦する~モーション拡大編~:BlacKのブロマガ - ブロマガ
モーション修正-01 とりあえずサックリ修正の仕方~位置角度補正ver~:破綻をどうにか撲滅し隊 - ブロマガ