VroidのvrmデータをpmxにしてMMDで動かすまでにぶち当たった問題点とその解決法

こんにちは、妖怪モチ乞食もといすずのと申します。

突然で恐縮ですが、つい先日やっとVroidのモデル(vrm形式モデル)をMMDで正常に動作させることに成功いたしまして…

 

 

こちらですね(是非見てください)(ダイマ)

 

そこでこのモデルの制作に関してなのですが、正直に申し上げて、数多の先人さまのお助けツールを使用したにもかかわらず、今までモデリングの勉強を一切してこなかった私にはかなりの苦行でございまして!!!いろいろ調べながら手探りで進めなければならなったんですけれども、そもそも知識がないから明らかな不具合を見つけても「どうすれば直るのか」より前の「何が悪いのか」からもうわからず、それぞれの問題に対する解決法ひとつを見つけるためだけにかなりの時間が溶けてしまいました。

 

そしてこれから同じ方法で自分のキャラクターをMMDで踊らせよう!という方に、二の舞を演じてほしくはないわけです。

 

そういうわけで、ここに覚え書きのような形で、私が当たった問題とその解決法や参考にしたコンテンツについて書き残していきたいと思います。

誰かに教わったわけではなくあくまで私が自分で調べて編み出した我流の解決法ですので、これが最善というわけではない点、「私の作ったモデル」を基準とした解決法な点、箇条書き形式で書いてゆきますので作業順序もあまり整ってはいない点などご了承いただける方は、是非参考にしていただければと思います。

 

問題点は小見出しとして、そして解決法や注意点は小見出しの記事内に太字で書いていきますので、余計な説明はいらんから解決法だけ教えろ!という方は太字だけ読んでいただければと思います。

 

 

 

 

①pmxに変換する前に!vrmモデルを作るときの注意

 

・貫通に気をつける

 Vroidのモデル動作確認にはダンスで行うような激しい動作だったりがあまりないです。いざMMDで動かそう!となると思わぬ部分が貫通しますので、貫通には極力気を遣わなければなりません。

 私が主に苦戦したのは、「地肌が髪を貫通する」、「上半身(主に肩付近)の肌が服を貫通する」あたりです。

そして解決法は、「貫通する部分の肌のテクスチャを透明にする」です。

こちらはVroidさん公式のヘルプの方で解決法が説明されていますので、こちらをご参照ください。

vroid.pixiv.help

地肌が髪を貫通する件についても、こちらの応用で解決できます。私の場合は地肌を透過するといろいろ不都合があるかもしれないと考え、地肌テクスチャを可能な限り髪と同じ色にするという方法で解決いたしましたが、その他髪の厚さや物理演算の衝突半径の加減の調節で解決することも可能かと思います。

 

ちなみにですが、「テクスチャを透過する」「透けてもわかりにくい色にする」という手法であれば、Vroidでのモデル編集でなくても、pmxに変換してからも行うことはできます。ただし私的にはVroidでモデリングする段階で解決してあった方が楽だなと思いましたので、この段階に入れさせていただきました。

 

②pmx形式に変換したあとの問題点(pmxエディタで直せること)

※前提

 今回私がvrmモデルをpmxモデルに変換するに当たって、大前提として↓の動画の方法・ツールを使用する、という点を頭に入れておいてほしいと思います。

 

www.nicovideo.jp

 

私がこれから書き連ねる問題点の数々は、↑の動画の手順を踏んだ上でさらに起こった問題ということになります。

また、私は準標準ボーンを使用したモーションも使いたくてすべての準標準ボーンを入れましたので、ボーン関係の問題や解決法は「すべての準標準ボーンが入っている/入れたいモデル」向けです。ご了承くださいませ。

 

(1)髪テクスチャがおかしい

 pmxエディタの上にある[Fx]というボタンを押すとMMDで使用する際の見え方にかなり近い形でモデルを見ることができるのですが、髪の色やテクスチャがおかしくなっていると思います。

f:id:SUZNOS:20200212183626p:plain

琴子さんのきれいなピンク髪がこんなことに…。

こちらは、髪テクスチャを正しいものに変えることで解決できます。 

このテクスチャが入っているtexというフォルダに別の正しいテクスチャも同梱されていると思いますので、そちらに差し替えましょう。

f:id:SUZNOS:20200212184135p:plain

赤矢印の水色の□を押すと現在反映されているテクスチャが表示されますので、それを ファイル→テクスチャ読み込み→反映したいテクスチャを選択→変更 で変更するとvrm時のきれいな色に戻ってくれます。正しいテクスチャが同梱されていない場合はご自身で作り直す必要があります。

 

また、正しいテクスチャを読み込んでも微妙に欲しい色と違うな、となる場合もあります。細かい色修正に関してはこちらの方がより詳しく解説してくださっていますので、こちらを参考にしてください。

aideq.goat.me

 

(2)スフィアの不在

 スフィアとは、髪のテクスチャとは別に、光源を認識して動いてくれる光沢のことです。言葉で説明しようとすると少し難しいのですが、いわゆる天使のツヤリング?的なものです。なくても良いなら修正しなくてもかまいませんので、必要な方のみお読みください。

スフィアのテクスチャ編集は、(1)で編集した髪テクスチャの真下にあります。初期状態ではこんな感じの真っ黒なものになっているかと思います。

f:id:SUZNOS:20200212185444p:plain

こちらを差し替えます。ただし髪テクスチャのように「正しいものが同じテクスチャフォルダに同梱されている」というわけではないので、自分で作るかお借りするかになります。

私はこちらのものをお借りしました

seiga.nicovideo.jp

こちらを保存しtexフォルダに格納したら、髪テクスチャの時と同じ手順で差し替えます。

f:id:SUZNOS:20200212185937p:plain

画像だとわかりにくいですが、ひとつ前の画像と比べると見る角度を動かすとそれに応じて位置を変える天使の輪ができているのが確認できると思います。

私が使用させていただいたものの他にもたくさんスフィアマップ用の素材を配布してくださっている方がいますので、お好みで変更しましょう(使いたいものがなければ自分で作るという手もあります)。

 

また、髪関係についてはもう一点「MMEを適用したとき金属のような反射のしかたになってしまう」という問題も起こったのですが、そちらは後述の問題を解決すると副次的に解決されましたのでいったん置いておきます。

 

(3)腰キャンセルボーンの不在

 ※ここから先のボーンや頂点、モーフ関連の問題は私もわかりやすいように説明する努力はいたしますが、「正しいお手本」をpmxエディタ2窓で横に置き、比べながら進めた方がわかりやすい点も多くございます。可能であればお好きな配布モデルをDLし、お手本としてお手元に置くことを推奨いたします。

私は

こちらのモデルを参考にさせていただきました。

seiga.nicovideo.jp

かわいい~~~!!!

こちらのミクさんは各IK・腰・腰キャンセル・足D・足先EXなど今回問題となるボーンをすべて含んでいますので参考にしやすいです。

準標準ボーンを搭載していればどのモデルでも構わないので、気が滅入る作業の中見てて癒やされるような推しモデルを探されるとよいと思いますが、どのモデルを参考にしたら良いのかわからない、準標準ボーンを搭載しているかどうかの確認がだるいという方はこちらを参考にするのもよいかと思います。

 

本題に戻ります。

 

腰ボーンについてですが、前述した動画内のツールの中に「準標準ボーン追加プラグイン」があります。しかしこちらのプラグイン、腰ボーンは入れてくれますが腰キャンセルボーンは入れてくれません。詳しい仕組みはわからないのですが、腰ボーンが入っていても腰キャンセルがないと腰ボーンは正常に動作しませんので、腰キャンセルも入れる必要があります。しかしド素人の私には、まさか自分でボーンを挿入するという技術力があるはずもなく…。

 

散々解決法を探し回った結果、こちらのツールを発見いたしました。

 

nossori.booth.pm

 

ありがてぇ・・・。

 

こちらのプラグインを使用して腰キャンセルを入れていきます。

pmxエディタのプラグインの使い方については前提動画の手順を踏んだ方ならすでにわかっていると思いますが、わからない方はググってください(すみません、その方が早いので)。

ここで注意してほしいのが、このプラグインは腰キャンセルの追加と同時にボーン整理やモーフの整理、その他の準標準ボーンも追加する機能も備えているという点です。

しかし先ほどの準標準ボーン追加プラグインで腰キャンセル以外はすでに追加されており、腰キャンセル以外を入れると各準標準ボーンが2つずつできてしまい不具合の原因になってしまいます。

また、モーフ等の整理もしてくれるのですが、私はモーフにも不具合が多く出ていることもありモーフ関係はすべて手作業で修正しましたので(後述)、モーフ関連の編集にもこのプラグインは使用しません。

その他よくわからないところはできるだけ使用しないようにして、あくまで腰キャンセルだけを目的とするとこうなります

f:id:SUZNOS:20200212194346p:plain

腰以外すべてオフ。 

これで腰キャンセルのみが追加されるはずです。

方式に関してはよくわからないので私はとりあえずウェイト変更式にしておきました

 

それと(2)で言及した「MME適用時髪テクスチャが金属のような反射になってしまう」という件ですが、恐らくこちらのプラグインの左下「テクスチャを最適化」で解決したものと思われます。

なぜ「思われます」などというはっきりしない物言いをしているかといいますと、作業当時はとにかく腰ボーンのことしか考えておらず髪の反射について一旦横に置いといていたので、この項目にチェックを入れたのかどうか覚えていないのです・・・(ごめんなさい)。ただこの作業をした直後からMMEを適用した際の髪の反射が自然に戻ったので、このプラグインが何らかの改善をしてくれたことは間違いないです。

 

2/28追記

最近モデル修正の機会があったためついでに色々検証した結果、テクスチャの金属のような反射のプラグイン未使用での直し方を発見しましたので書いておきます。

 

不具合の原因は、エフェクトフォルダの設定ミスだったようです。

こんな感じでなおせます。

f:id:SUZNOS:20200228184111p:plain

「表示」タブ→エフェクト設定

f:id:SUZNOS:20200228183951p:plain

未修正の場合は具体的なファイルが指定されているみたいですが、こちらを「デフォルトエフェクト」に変更します。

f:id:SUZNOS:20200228184312p:plain

これでOKです。

 

(4)脚関係ボーンの親子関係・変形階層がおかしい

ボーン関係の修正はここらへんでクライマックスを迎えます。(3)までの手順で様々な準標準ボーンを追加したと思いますが、このままではうまく踊れないです。なぜなら、親子関係や変形階層が正常ではない部分がまだ残っているため。

そちらを修正していきます。

言葉だけで説明すると、

・足IK親が変形階層αの場合、足IK(IK先)、つま先IK(IK先)を変形階層α+1に

・右足D、左足Dの親ボーンをそれぞれ腰キャンセル右、腰キャンセル左に

・各DボーンとEXボーンの変形階層を1に

 する必要があります。

一部をお見せするとこんな感じです。

f:id:SUZNOS:20200212205419p:plain

足IK親が0なので、

f:id:SUZNOS:20200212205442p:plain

足IKを1に

足Dの方も、

f:id:SUZNOS:20200212205904p:plain

親ボーンを腰キャンセルに、ついでに変形階層も1に

こんな感じにします。

ぶっちゃけ言うと、このあたりは前述で出したミクさんのものをそのまんま真似ただけなので細かいことはわからないです。足IK親の変形階層が1でIKを2にした場合どうなるのか、とかはわからないので、私のように何もわからない方は大人しく0と1を信じましょう。きっとできるはず。

そしてこの変形階層や親ボーンいじったりするのはネットで情報を拾うよりも、お手本を横に置いて丸まんまマネさせていただいた方が安心且つ楽ちんです。ボーンの表記順が違ったりするといちいちスキャニングするのがだるくなってしまいますが、参考モデルと同じ順番なら親子関係的にも問題ないはずなので、煩わしいようなら同じ順番に並べ替えてしまいましょう。

 

このあたりでボーンの修正は一通り終了です。これ以外に不具合がある場合は申し訳ないですが私の守備範囲外になってしまいますのでググってみてください。

 

(5)つま先ウェイトたちの所属先がおかしい

ここからウェイトの問題になります。

といっても私が不具合を起こしていたのはつま先だけでしたので、その直し方をご紹介します。

ウェイトとはなんぞや~?という方のために先っちょだけご説明させていただきますと、ウェイトとは「肉(もしくは皮)」です。

先ほどまでボーンの修正のお話をさせていただいていたと思いますが、あちらは名前どおり「骨」です。そして「ウェイト」は肉。MMDでは、「この部分のウェイト(肉)はこのボーン(骨)にひっついて動きますよ~」という設定をすることで、初めてモデルのガワがボーンとともに動くようになります。わたしがわかるのはここらへんまでなので、もっと詳しく知りたい方はググってください。

 

本題に戻ります。

 

まず、つま先ウェイト未修正の状態の琴子さんにモーションデータを読み込ませたものを見ていただきたいと思います。

f:id:SUZNOS:20200212211906p:plain

どこ行くねーーーーん

つま先がびよーんしてしまっています…。

このモーションが特に顕著なので使わせていただきましたが、他のモーションだとつま先ウェイトの所属がおかしいことはわかりにくい場合もあります(しかしやはり「わかりにくい」だけで正しいものと正しくないものを見比べると違うのがわかるので、おサボりはできるだけしない方がよいかと思います)。

 

そして私はずっとこれを足関連ボーンの親子関係か変形階層の不具合だと思って解決法を調べていたのですが、そしたらたまたまこんなツイートを発見いたしまして

 

 

こちらの一連のツイートにぶら下がっている会話、スクロールしてみるとこんな画像が発見されます

 

 

これわたしの琴子さんの状態に似てる!!!!!

引っ張られている部分は違えど解決法は一緒の予感!!!

と、前置きが長くなってしまいましたがつまりこれは何が問題かといいますと、琴子さんのつま先のお肉や皮が、足先のボーンではなく間違ったボーンに引っ付くように設定されてしまっていたんですね。

そしてグレイさん曰く、「足~足首までのボーンはウェイトを持たず、D系と足先EXが足のウェイトを持っている状態が正しい」とのこと。

 

…なるほど………(わからない)

 

まぁとりあえず、今の琴子さんがどうなっているのか見てみましょう。

※ウェイトがどこに所属しているかを見るには、知識0の場合また少しpmxエディタのお勉強が必要です。 詳しく知りたい方はこちらを参考にしてください

 

modelsakusei.jugem.jp

 

琴子さんの右足先EXの状態です。ウェイトをどこが持っているかの見分け方ですが、下画像の「押す」と矢印で示されているとことを押し、pmx編集ウィンドウで任意のボーンを選択するとそのボーンが持っているウェイトのみが赤くなるようになっていますので、そこからわかります。

f:id:SUZNOS:20200212215120p:plain

つま先はだいたい黒い

そしてミクさんの右足先EXのウェイト事情

f:id:SUZNOS:20200212220022p:plain

赤い!!!

このミクさんが「つま先のウェイトはすべてD系やEXが持っているのが正しい」の正しい状態です。

では琴子さんの黒いままの右つま先のウェイトはどこが持っているのか。

探し当てたものがこちらです

f:id:SUZNOS:20200212220417p:plain

 

右つま先ボーンが持っていました。

「ボーンが骨でウェイトが肉なら、つま先のウェイトをつま先ボーンが持っているのは間違いじゃないんじゃないの?」って感じですが、現に琴子さんのつま先は伸びてしまっていますし、グレイさんも「足先EXが持つのが正しい」とおっしゃっていますので、素直にその通りにしてみます。

ツイートの流れの中でグレイさんも紹介してくださっていますが、こちらのプラグインにお世話になります

 

bowlroll.net

 

こちらにはたくさんのプラグインが入っていますが、使用するのは「選択した頂点のウェイトボーンを置き換える(ChangeSelectedVertexWeight.dll)」のみです。

こちらを使用して、まず琴子さんの右つま先のウェイトがすべて含まれるようにざっくり選択

f:id:SUZNOS:20200212221457p:plain

選択されたウェイトはオレンジ色になります。右つま先以外も選択されてしまっていますが、右つま先がすべて入っていれば他が入っていても問題ないので、広めに選んじゃってください

そしてプラグインを起動、右つま先のウェイトを右足先EXに移すよう入力します。

f:id:SUZNOS:20200212221816p:plain

完了です。

この状態で、もう一度琴子さんの右足先EXの状態を見てみましょう。

f:id:SUZNOS:20200212221940p:plain

赤くなってる!!!

 

ミクさんの右足先EXと同じ状態にできました!

 このまま左つま先のウェイトにも同じ処置を施します

そして処置が終わったあとに最初と同じモーションを読み込んだものがこちらです。

f:id:SUZNOS:20200212223214p:plain

おめでとうございます!!!

つま先が伸びなくなりましたね!ヤッターーー!!!

 

では次にいきましょう。

 

 

(6)表情モーフがおかしい

モーフ修正の説明前にお詫びなのですが、表情モーフ修正前の古いモデルデータが残っておらず、うちの子たちがどのような不具合を起こしていたのかお見せしながらご説明することができません、申し訳ありません…。

 

表情モーフは主に口パクさせたり曲に合わせて笑わせたり悲しい顔をさせたりするのに使うのですが、口パク表情はいらない、体さえ動けばいいよ!という方は(7)スケール調整まで飛ばしていただいて大丈夫です。

 

表情モーフにどのような不具合が出るかはVroidでモデリングするときにどんな感じでモデリングしたか(口の大きさ、眉の位置、目のたれ具合など)にも依存するので一概に不具合が出ますとは言い切れないのですが、恐らくvrmをpmxに変換したモデル共通で出る不具合は「喜怒哀楽モーフの存在」と「表情モーフ名の不一致」です。

 

MMDの基本モーフの特徴として、パーツが2つ以上動くモーフは基本には存在しません(そもモデル固有の特別モーフとして存在することはありますが、配布モーションに使われる汎用的なモーフではなかなかありません)。しかしvrmを変換したモデルには喜怒哀楽のモーフが用意されており、こちらは眉・目・口すべてが同時に動くモーフになっています。

こちらのモーフの存在自体が不具合というわけではないのですが、MMDではまず使用しませんので、喜怒哀楽モーフは削除してしまいましょう

 

また、MMDのモーフの基本は「アイウエオの口(リップモーションの時に使います)」と、その他「にこり」や「困る」、「怒り」、「口角上げ/下げ」などがありますが、このモーフは基本的に名前がモデル間で統一されています。どういうことかというと、例えばMMDの表情モーションを読み込んでも、「怒り」のモーフに割り当てられている動きがモーションを適用されるモデルにおいて「おこ」「angly」などという名前に設定されていると動いてくれません。

vrmからpmxに変換した場合、アイウエオはそのまま存在しますがその他のモーフ名が英語だったり意味のわからないものになってしまっているので、そのリネーム作業が必要です。

こちらの作業は(3)でご紹介した のっそり猫さまの最適化プラグインでも行ってくれるようですが、私のモデルだとなぜかうまく作動しなかったので、手作業で行いました。

 

単純作業でしたのであまり詳しくは説明しませんが、リネームの作業内容はミクさん(お手本)のモーフをTransformView(PmxView表示のタブを開くと一番下に存在します)で確認しつつ、自分のモデルのモーフも片っ端から確認してゆき、同じ感情・動きに該当するなと思ったモーフをミクさんのモーフと同じものにリネーム・表示パネルも同じにします。表示パネルは、初期状態だとすべてのモーフが「その他」に配置されていると思いますので、目が動くなら目、口が動くなら口など適所に振り分けてあげます。

f:id:SUZNOS:20200212232840p:plain

 

リネーム自体は単純な作業ですので、そう苦労せずに終わると思います。

モーフ修正の本番はここからです。

 

 もしかするとリネーム作業中におかしいと思った方もいるかもしれませんが、正常な形に変形しないモーフがいくつか存在することがあります

データがなくお見せすることはできないのですが、うちの子たちはウ、エ、オが特におかしく、ウで口をしぼめすぎていたり、エがほぼイと同じ形になっていたりしました。また、どちらの子にもみられましたが、特にVroidでモデリングする際口を小さめに設定したひめくん(金髪ポニーテールの方)の方がより酷かったです。

そちらを修正していきます。

 

Pmxエディタを用いたモーフの編集方法については、こちらの方々を参考にさせていただきました。

www.youtube.com

こちらは基本的な操作のしかた

ameblo.jp

こちらでは、より「表情修正」にフォーカスして説明してくださっています。

 

作業方法自体は上記ふたつを見ていただければわかると思いますが、私の場合、モデルの頂点が左右対称に設置されていないらしく、鏡面にして作業量を半分にする便利機能が使えないなどいくつか制約がございましたので、皆様もお気をつけください。手作業でやると若干左右非対称になってしまうかもしれませんが、ぱっと見て気にならない範囲であれば問題ないです。

また、ただでさえ作業量が多いので、上記のブログの方がやっているように近い形をコピーしてそこから動かすことをオススメします。

さらに私は頂点の編集があまり上手ではないっぽく口周りのテクスチャが歪んでシワシワになってしまったりもしたので、支障が無い程度にお口周りのテクスチャもペイントソフトで編集したりしました。

こだわり方とモーフの崩れ具合の兼ね合い次第ではvrmから変換したデータの修正の中で最も根気のいる作業かもしれませんが、これが終わればほぼ完成のようなものです。がんばってください。

 

(7)スケール調整

 

vrmとpmxでは、当たり前ですが形式が異なります。よって、vrmから変換して無修正のモデルを配布モデルの隣に並べると、同程度の身長が想定されたモデル同士でも大きさが全然違うことがあります。

またまた登場しますがのっそり猫さまのプラグインでも、設定画面の左側下から2番目に「サイズをMMD基準に調整(×0.89)」というオプションがあります。キャラクターの身長設定がざっくりとしている方は、こちらを使用していただいても大丈夫です。

 

ですが私の創作キャラクターには164cm、158cmなどそれぞれという具体的な数値が設定されているので、あわよくばこれと同じ数値にしたい…。

 

のっそり猫さまのプラグインを使用してもある程度設定に近づけることは可能なのですが、Vroidでのモデリングが元々数値入力ではなくパラメータで身長を設定しているため、具体的に何cmであるかがわかりませんので、それを×0.89しても自分が想定している数値と全く同じ数値になるとは限りません、というかよっぽどの奇跡が起きない限り同じ数値にはなりません。

 

そこで登場するのがこちらのプラグインです。

seiga.nicovideo.jp

que5656さまの「身長158cm」です。

完全に余談ですが、初音ミクの身長が158cmなのでそちらから名付けられたのでしょうか、粋なネーミングです

こちらを使用すると、まず今現在の身長を計測してくれます。

こちらも身長修正前のデータがないため文章のみでお伝えしますが、琴子さんの無修正時の身長は(小数点以下は覚えていませんが)「212cm」でした。でかすぎる

これだと×0.89しても188.68cmになってしまい琴子さん本来の身長164cmには遠すぎるので、やはり身長はこちらのプラグインを使って個別に調節した方がよいでしょう。

 

調整のしかたは至って簡単です。適用時に今現在の身長が計測されて表記されている部分を、したい身長の数値に書き換えて、変更を押すだけ。

f:id:SUZNOS:20200213000102p:plain

靴や髪の厚さも考慮してくれますので、適宜調節してください。

さすがにピッタリにはなりませんが、これで163.9817cmとかなり近い数値にリサイズすることができました。

 

とはいえ、うちの子を踊らせる場合、ほとんどが自作モデル同士を並べて踊らせるでしょうし、他の配布モデルと一緒に並べることはないかもしれません。現にこのプラグインを使用しておらず、一般的なモデルより少し小さめ/大きめな配布モデルもよく存在します。

こちらの作業をした方が「標準化」され扱いやすくなるのは事実ですが、必須級の作業ではありませんのでご留意ください。

 

 

 

こちらのスケール調整をもちまして、私が施したモデル修正はすべて網羅いたしました。お疲れ様でした。

 

おわりに

いかがでしたでしょうか。ダラダラと1万字近く書いてしまいましたが…。

1万字なんて書いたのは初めてなので、お見苦しい部分もたくさんあったと思います。ここまで読んでくださった方、ありがとうございます。

できるだけモデル制作に取りかかる前の本当に知識0の自分に教えるようおなつもりで書いてみたので、「MMDモデリングについて勉強したい人」というよりは「とにかくモデルを完成させたい人」向けの文になってしまいましたが、少しでも私と同じように正体不明の不具合に頭を悩ませている方々の手助けになればいいなと思います。

また、技術的な話は私よりもMMDにもっと詳しい方に助けを求めたり本を買ったりした方が効率的かとは思いますが、何か困ったこと・このブログを読んでわからなかったことなどがあれば、お気軽に私(https://twitter.com/SUZNOS)までご連絡ください。解決はできないかもですが一緒に悩むくらいはできるかと思います。

 

それではみなさん良きオタクライフを。