東屋書店

一つのブログは一冊の本である

広告

VRchatにMMDモデルを持ち込みLip Syncとゆれ物を適用するマニュアル

どうもふしめろです。

この記事ではMMDモデルをVRchat上で使う際にLip Syncさせて目をぱちぱちさせて髪の毛スカートゆーらゆらーさせるためのマニュアルです。

なお、MMDモデルに限らずVRchat上で自分以外の人が創ったモデルを利用する際は下記のガイドラインに沿うことを推奨いたします。

vrchatjp.playing.wiki

持ち物

Unity 5.6.3p1

unity3d.com

最も基本的なソフト

VRchat SDK

https://d8zlo8exwu24u.cloudfront.net/sdk/VRCSDK-2017.08.29.13.08-Unity563p1.unitypackage

VRchatへアバターを上げるときに必須

PMXエディタ

kkhk22.seesaa.net

最強に可愛いMMDモデル

3d.nicovideo.jp

今回はお宮さんが作成されたMMDモデルの掲載許可が出ましたので彼女にお付き合いしてもらいます。

 

また、このネオンちゃんモデルはVRゲームであるAirtoneのメインキャラクターが大本であります。

airtone-vr.com

音ゲー苦手な僕でも普通にS評価とか出せる上に奥がめっちゃ深いので、VR機器を購入したらまず買うべきゲームの一つです。

絶対買いましょう!

 

Mantis LOD フリー版

Mesh Online - Polygon Reduction Tool for Unity

リンク先最下部の Online Edition v4.0リンクよりZIPをダウンロード

解凍した物をunityのassetにファイルごと入れておく

 

dynamicbone

unityのアセットストアで20ドルで売ってるので買う

注意

この記事では正確<わかりやすさを目指しているので各種用語はめちゃくちゃです。わかりにくかったらごめんなさい。

UnityとVRchatSDKをインストールする

まあ特に説明は必要ないはずです。

VRchatSDKの導入方法はUnity左上メニューのAssets>Import Package>Custom PackageでダウンロードしたVRchatSDKを選択した後Import押すだけです。

PMXエディタでモーフを編集してLipSyncの準備をする

目、口、表情モーフの複製

さて、あなたの用意した可愛いMMDモデルをPMXエディタで読み込みましょう。

gyazo.com

こんな感じになるので、左の画面よりモーフタブを選択しモーフ画面を開きます。

モーフとは簡単に言うとモデルの一部を値に応じて変形させて表情を作ったりする奴です。たとえば笑顔モーフに値を入れると目が∩∩こうなって口が∪こんな感じになります。

 

LipSyncは音声に応じて各種モーフを連続的に変化させていくことで実現しているようなので、ここから目、口、場合によっては表情に関係するモーフを選び、それ以外の不要なモーフは申し訳ないですが後の作業性を考えて今回は削除します。

なお、どのモーフが何に対応するかとかはモデルによって千差万別なので状況に応じて臨機応変に対応してください。

gyazo.com

今回の場合はこのようなモーフが登録されていました。この中からリップシンクに必要ななモーフを探していくことになります。

モーフの動作確認

どのモーフがどんな物かわからない場合は、モデルが出ている画面の編集>モーフ編集でウィンドウを開き、既存モーフボタンを押して編集開始ボタンを押し、動作確認欄のスライダーか0/1を押して変化を確認してください。

https://gyazo.com/7f1cd6970395e228c235990c87ff5d28

 

これはこの次の操作で重要になってきます。

モーフ名のリネーム

次に複製し残したモーフの名前をLipSync用の名前に変えていきます。

この操作は飛ばしても問題ないですが、後の操作が簡単になるのでやることを推奨します。

さて、LipSyncをするためには各「音」の口の動きをアバターに登録してやる必要があります。音のモーフは15あり、別に4つの目のモーフがあります

Name the 19 shapes exactly as follows:
(in the same order)


vrc.blink_left
vrc.blink_right
vrc.lowerlid_left
vrc.lowerlid_right
vrc.v_aa
vrc.v_ch
vrc.v_dd
vrc.v_e
vrc.v_ff
vrc.v_ih
vrc.v_kk
vrc.v_nn
vrc.v_oh
vrc.v_ou
vrc.v_pp
vrc.v_rr
vrc.v_sil
vrc.v_ss
vrc.v_th

Blender To Unity Vrchat Avatar Creation

この引用のv_**となっている物が音のモーフで、それ以外の上4つが目のモーフです。

そして、各音のモーフはどういった物が望ましいか? と言うのが上記の引用リンクの下の方にあり、サンプルで青い人の顔がずらっと並んでいます。これらが各音のモーフです。

gyazo.com

 

これは「vrc.v_aa」の口の形ですね。こういう形の口が15個乗っているのでそれらを比較する必要があるのですが、正直めんどくさいでしょうから、ある程度の指針を下に乗せておきます。

これの通りやってもらっても大丈夫ですし、やらなくても良いです。

ただ、一つだけ言えるのはアニメでキャラがしゃべっているときに口の形をことさら気にして見ている人はほとんどいないということです。これはVRchatでも同じできっちりやらなくても普通にしゃべっているように見えます。

 

なのでここはさくっと終わらせておきましょう。結構似た口の形が多いので適宜モーフの複製を行ってください。

 

また、モーフの動きを確認しながら名前を変更したり削除するときは、モーフ編集ウィンドウの編集中ボタンをオフにしないとおかしなことになるのでやめた方が良いです。

MMDモーフ対応表(提案)

vrc.blink_left :左ウインク
vrc.blink_right :右ウインク
vrc.lowerlid_left :左下まぶた*1
vrc.lowerlid_right :右下まぶた*2
vrc.v_aa :「あ」
vrc.v_ch :「ss」よりも口をすぼめた「い」
vrc.v_dd :控えめな「え」
vrc.v_e :「え」
vrc.v_ff :英語的なふの発音「□」が近い
vrc.v_ih :「あ2」ないし「あ3」それらがない場合「あ」か「□」のモーフを複製し適用
vrc.v_kk :「ih」と同じで口元が気持ち上がる感じ「ワ」も範囲に入る
vrc.v_nn :「ん」ないし「ih」か「dd」のモーフを複製
vrc.v_oh :「お」か「う」下記より口を広げている方
vrc.v_ou :「お」か「う」上記より口をすぼめている方
vrc.v_pp :Mをネイティブっぽく発音したエンムのム「にやり」か「ω」が近い
vrc.v_rr :「□」が近いので「ff」を複製
vrc.v_sil :標準のモーフを設定する要は真顔
vrc.v_ss :「ch」よりも口を広げた「い」「ch」を複製しても良いかも
vrc.v_th :「ih」に近いので複製

モーフの順番を守る

gyazo.com

リネームを19個分済ませて、余分なモーフを全部消したらこうなります。

口周りのモーフはどんな順番でも問題ないですが、必ず目関連のモーフは上の方にこの順番でおいてください。

これで保存しますが、一応別名で保存した方が良いでしょう。

注意

ただ、この設定だけでは目の瞬きは実装されません。目の瞬きを実装するにはボーンなどの設定が必要なので非常に大変です。 今回は準備ということで目のモーフを設定していることを覚えておいてください。

Pmx2Fbx WebでPMXをFBXに変換する

上記の内容で保存した編集済みPMXをローデン氏が作成したPMX→FBXファイル変換サイトを使用します。

ローデンの独り言 ver 6.1

gyazo.com

使い方についてはリンク先に書かれているので詳しくはそちらを見るといいでしょう。Unityへのもって行き方もここに書いてあります。

 

unityで各種編集

さて、ここまででUnity上にモデルが出現していると思います。

gyazo.com

ここからさらに手を加えていきますね。

FBXファイルのRigをHumanoidに変更する

gyazo.com

ちょっと見えにくいですが、Unity上でFBXファイルを選択するとinspectorタブにいろいろ出てきますが、その中のRigをクリックしてAnimation Typeを確認します。

普通はGenericになっていますが、これはダメなので選択してHumanoidに変更します。

gyazo.com

こうなるのでApplyを選択してconfigureを選択します。

そうするとセーブするか聞かれるのでセーブして、FBXのボーン設定に入ります。

gyazo.com

ここでボーンがきちんと所定の位置に入っているかどうかを確認します。

たまにスカートのボーンが足のボーンとして設定されていることがあったりするので要注意です。

直す場合はボーンをマッピングへドラッグ・アンド・ドロップすることで設定できます

ApplyとDoneを忘れずに押して戻りましょう。

shaderを変更する

さて、上記のネオンちゃんを見てもらえば解るとおり、全体的にマットで本来の美しさがありません。なのでシェーダーを変えて美しさを取り戻します。

上記の画像からMaterialフォルダがあることが解りますのでそこに移動します。

gyazo.com

このように各種テクスチャがMaterial化されているのでこれらすべてを選択し、inspectorタブからshaderを変更します。基本的にはUnlitの中から選ぶと本来の美しさを引き出すことが出来ます。

gyazo.com

ただ、欠点として周りの光源の影響を受けなくなるのでワールドによっては浮きます。まあ美しければ問題ないですね。

Dynamicboneで髪を揺らす

髪を揺らす場合は揺らす元の階層にDynamicboneを入れます。

Dynamicboneはまあまあ良い感じにいろんな物を超簡単に揺らしてくれます。入れ方はVRC_AvatarDescriptorと一緒です。

使い方はこちらのブログさんへ

dvorak.hatenablog.com

もうちょい詳しい使い方

qiita.com

gyazo.com

今回入れるばしょはこの辺ですね。なぜここかというと、完全に根元から入れると髪の動きがかなりおかしいことになります。ベストな位置を見つけるまで少し時間がかかりますが、ここはこだわりましょう。

 

揺れ先の元を指定してあげる必要がありますが、髪の毛の場合は基本は一つ上かHeadを指定しましょう。

 

https://gyazo.com/8ac5755052b36877c72b8253ce250f4d

基本的にはDumping Distribのグラフを変更してやるだけでOKです。

余りにも揺れすぎだったら一つ下のElasticityを変更しましょう。

上手くいけばこんな感じになります。少しオーバーな動きですがこのくらいがちょうど良いです。

https://i.gyazo.com/2aa6d12848e9e9fac35d36bed2fd7c46.gif

Mantis LODを使い全体のポリゴンを20000以下にする

 さて、様々な設定が終わったらVRchatへavatarを送信するのですが、このときにAvatarのポリゴン数は20,000以下でないといけません。

そうしたときにオススメなのがこのMantis LODです。これはポリゴン数を簡単3ステップでうまいこと削減してくれます。

これは記事冒頭の通りunity-assetに入れてあるとして話を進めます。

使い方はこの動画を見ればわかります。

www.youtube.com

 

もう少し詳しく説明すると、ローデン氏のサイトでファイル変換しインポートするとFBXファイル内にはいくつかの白メッシュが生成されます。

gyazo.com

その白メッシュに対してMantis LODを適用し、動画のように使用します。

 

 

ただ、ここで注意が二つあります。生成したデータを動画内ではメッシュレンダーに入れ込んでいますが、今回の場合はSkinned MeshRendererのmeshと書かれているところに入れ込みます。

gyazo.com

そしてもう一つは絶対に顔付近のmeshにはMantis LOD をかけてはいけないことです。なぜならこれをやると上記で設定したモーフが破損するからです。

それ以外のmeshにはどんどんかけていきましょう。

 

 

まとめると

  1. 適用したい白meshをHierarchyタブから選択し、Mantis LODをAdd Component
  2. meshUploadをクリック
  3. 一番下のQualityスライダーで割合を変更
  4. ポリゴン数と実際の見た目を確認
  5. 良い感じであればsave current meshでmeshを保存する
  6. 保存したmeshを該当白meshのSkinnd mesh Rendererのmeshにドラックアンドドロップ

こうなります

 

clothを使ってスカートをひらひらさせる

やり方はこちらを参照した方が圧倒的に分かりやすいのでこちらへどうぞ。

 

blogs.unity3d.com

ただ、clothを入れるのはスカートに値する白meshです。

また、sphereやcapsuleのコライダーを使った物理判定を入れる場合は、それらのメッシュレンダーを削除しないとコライダー自体が他人に見えてしまうので死ぬほど恥ずかしい思いをするので注意しましょう。

 

LipSyncの設定

これで最後の設定をします。

LipSyncの設定です。まずはVRCAvatarDescriptorをモデル本体に入れ込みましょう。

これはAddComponentから、Script>VRCSDK2に入っています。

gyazo.com

次に目線の高さを指定します。

gyazo.com

このような灰色のボールがVRchat上での目線の高さとなります。

このボールはView Positionという数値で変更できるので、目と目の間に半分埋め込ませる形で設置しましょう。

gyazo.com

次にDefault Animation Setでこのモデルは男か女かを設定しておきます。

gyazo.com

最後にLipSyncを上記の画像のように選択し、顔のmeshを指定します。そうするとPMDエディタで設定したモーフを設定するメニューが現れるのでそれらを合わせていきます。

 

https://i.gyazo.com/f4c6dcb3a4586109587b348a65f4fac1.gif

アップロードして終わり

これでアップロードすればLipSyncが出来ているはずです。

出来ていたらヒャッホーと盛り上がればOK!!!!

 

Eye Trackingその他については後日書きますね!

 

*1:下を向いたときに発動するモーフなので、能動的に何かを表現したいモーフに利用するといいでしょう。ただ、予期しない動きになることもあるのでない方が良いかもしれません

*2:同上