どうもふしめろです。
この記事ではMMDモデルをVRchat上で使う際にLip Syncさせて目をぱちぱちさせて髪の毛スカートゆーらゆらーさせるためのマニュアルです。
必ず利用規約に目を通しましょう!
MMDモデルに限らずVRchat上で自分以外の人が創ったモデルを利用する際は
モデルの利用規約にしっかりと目を通しましょう。
モデルの規約を守らない場合モデル作者さんに多大なるご迷惑がかかります!
上級者の方はこちらもどうぞ
また、自作アバターを作ってみたい!!!
という方はこちらの記事が非常に有意義かつおすすめです。
VRChatで自作アバターを作りたい人向けの記事
— ふしめろ@バーチャルYouTuber (@hushinomiya) 2018年1月7日
3Dモデルなんて作れないいい!!!
って人は是非こちらを参考にして自作モデルを作ってみてください。
オリジナルアバターを簡単に作りたい人向けチュートリアル モデリング編 https://t.co/4w7iGDSgo6 pic.twitter.com/V22gSqdp9V
- 必ず利用規約に目を通しましょう!
- また、自作アバターを作ってみたい!!!という方はこちらの記事が非常に有意義かつおすすめです。
- 持ち物
- UnityとVRchatSDKをインストールする
- PMXエディタでモーフを編集してLipSyncの準備をする
- モーフの順番を守る
- Pmx2Fbx WebでPMXをFBXに変換する
- unityで各種編集
- LipSyncの設定
- アップロードして終わり
持ち物
Unity 5.6.3p1
最も基本的なソフト
VRchat SDK
VRchatへアバターを上げるときに必須
公式サイトをスクロールしていくとSDKと出てくるのでそれをクリックしていく
PMXエディタ
最強に可愛いMMDモデル
今回はお宮さんが作成されたMMDモデルの掲載許可が出ましたので彼女にお付き合いしてもらいます。
また、このネオンちゃんモデルはVRゲームであるAirtoneのメインキャラクターが大本であります。
音ゲー苦手な僕でも普通に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エディタで読み込みましょう。
こんな感じになるので、左の画面よりモーフタブを選択しモーフ画面を開きます。
モーフとは簡単に言うとモデルの一部を値に応じて変形させて表情を作ったりする奴です。たとえば笑顔モーフに値を入れると目が∩∩こうなって口が∪こんな感じになります。
LipSyncは音声に応じて各種モーフを連続的に変化させていくことで実現しているようなので、ここから目、口、場合によっては表情に関係するモーフを選び、それ以外の不要なモーフは申し訳ないですが後の作業性を考えて今回は削除します。
なお、どのモーフが何に対応するかとかはモデルによって千差万別なので状況に応じて臨機応変に対応してください。
今回の場合はこのようなモーフが登録されていました。この中からリップシンクに必要ななモーフを探していくことになります。
モーフの動作確認
どのモーフがどんな物かわからない場合は、モデルが出ている画面の編集>モーフ編集でウィンドウを開き、既存モーフボタンを押して編集開始ボタンを押し、動作確認欄のスライダーか0/1を押して変化を確認してください。
これはこの次の操作で重要になってきます。
モーフ名のリネーム
次に複製し残したモーフの名前を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
この引用のv_**となっている物が音のモーフで、それ以外の上4つが目のモーフです。
そして、各音のモーフはどういった物が望ましいか? と言うのが上記の引用リンクの下の方にあり、サンプルで青い人の顔がずらっと並んでいます。これらが各音のモーフです。
これは「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」に近いので複製
モーフの順番を守る
リネームを19個分済ませて、余分なモーフを全部消したらこうなります。
口周りのモーフはどんな順番でも問題ないですが、必ず目関連のモーフは上の方にこの順番でおいてください。
なぜなら、上から4番目までのモーフは瞬きと下を向いたときの動作として勝手に割り当てされて自動的に動くからです。
下手すると口のモーフと相まってアへ顔になるのでマジで気をつけましょう。
下まぶたは下を向いたときと走ったときに動作します(走るモーションが下を向くため)
— ふしめろ (@hushinomiya) 2017年12月2日
なので、そうした動作に耐えるモーフか、無表情モーフを複製して2つおいておくのがベストですね
これで保存しますが、一応別名で保存した方が良いでしょう。
注意
ただ、この設定だけでは目の瞬きは実装されません。目の瞬きを実装するにはボーンなどの設定が必要なので非常に大変です。 今回は準備ということで目のモーフを設定していることを覚えておいてください。
Pmx2Fbx WebでPMXをFBXに変換する
上記の内容で保存した編集済みPMXをローデン氏が作成したPMX→FBXファイル変換サイトを使用します。
使い方についてはリンク先に書かれているので詳しくはそちらを見るといいでしょう。
ここからUnityに持って行くには下記のようにします。
- ダウンロードした物をpmxファイルが入っていたフォルダにつっこむ
- 突っ込んだファイルごとUnityのassetに放り込む
unityで各種編集
さて、ここまででUnity上にモデルが出現していると思います。
ここからさらに手を加えていきますね。
FBXファイルのRigをHumanoidに変更する
ちょっと見えにくいですが、Unity上でFBXファイルを選択するとinspectorタブにいろいろ出てきますが、その中のRigをクリックしてAnimation Typeを確認します。
普通はGenericになっていますが、これはダメなので選択してHumanoidに変更します。
こうなるのでApplyを選択してconfigureを選択します。
そうするとセーブするか聞かれるのでセーブして、FBXのボーン設定に入ります。
ここでボーンがきちんと所定の位置に入っているかどうかを確認します。
たまにスカートのボーンが足のボーンとして設定されていることがあったりするので要注意です。
直す場合はボーンをマッピングへドラッグ・アンド・ドロップすることで設定できます。
また、最近のアップデートでUpperChestにボーンを設定したらアバターをアップロードできないので、UpperChestにボーンを割り当てずに、ショルダーとネックの親のボーンをチェストに割り当てなければ行けません。
よく解らないと思いますので下の画像通りにしてみてください。
この青く光っているボーンがネックとショルダーの親のボーンです。似たような場所に似たような骨があるはずなので、探して設定してみましょう。
また、アップロード後に口が半開きになる問題が発生した場合は、headからjawボーンをNone、つまり設定を外せば直ることが多いです。
ApplyとDoneを忘れずに押して戻りましょう。
shaderを変更する
さて、上記のネオンちゃんを見てもらえば解るとおり、全体的にマットで本来の美しさがありません。なのでシェーダーを変えて美しさを取り戻します。
上記の画像からMaterialフォルダがあることが解りますのでそこに移動します。
このように各種テクスチャがMaterial化されているのでこれらすべてを選択し、inspectorタブからshaderを変更します。基本的にはUnlitの中から選ぶと本来の美しさを引き出すことが出来ます。
ただ、欠点として周りの光源の影響を受けなくなるのでワールドによっては輝いたりして浮きます。まあ美しければ問題ないですね。
また、このシェーダーを使うと光源の影響を考慮した描画がされるので浮きにくくなります。
Dynamicboneで髪を揺らす
髪を揺らす場合は揺らす元の階層にDynamicboneを入れます。
Dynamicboneはまあまあ良い感じにいろんな物を超簡単に揺らしてくれます。入れ方はVRC_AvatarDescriptorと一緒です。
使い方はこちらのブログさんへ
もうちょい詳しい使い方
今回入れるばしょはこの辺ですね。なぜここかというと、完全に根元から入れると髪の動きがかなりおかしいことになります。ベストな位置を見つけるまで少し時間がかかりますが、ここはこだわりましょう。
揺れ先の元を指定してあげる必要がありますが、髪の毛の場合は基本は一つ上かHeadを指定しましょう。
基本的にはDumping Distribのグラフを変更してやるだけでOKです。
余りにも揺れすぎだったら一つ下のElasticityを変更しましょう。
上手くいけばこんな感じになります。少しオーバーな動きですがこのくらいがちょうど良いです。
Mantis LODを使い全体のポリゴンを20000以下にする
さて、様々な設定が終わったらVRchatへavatarを送信するのですが、このときにAvatarのポリゴン数は20,000以下でないといけません。
そうしたときにオススメなのがこのMantis LODです。これはポリゴン数を簡単3ステップでうまいこと削減してくれます。
これは記事冒頭の通りunity-assetに入れてあるとして話を進めます。
使い方はこの動画を見ればわかります。
もう少し詳しく説明すると、ローデン氏のサイトでファイル変換しインポートするとFBXファイル内にはいくつかの白メッシュが生成されます。
その白メッシュに対してMantis LODを適用し、動画のように使用します。
ただ、ここで注意が二つあります。生成したデータを動画内ではメッシュレンダーに入れ込んでいますが、今回の場合はSkinned MeshRendererのmeshと書かれているところに入れ込みます。
そしてもう一つは絶対に顔付近のmeshにはMantis LOD をかけてはいけないことです。なぜならこれをやると上記で設定したモーフが破損するからです。
それ以外のmeshにはどんどんかけていきましょう。
まとめると
- 適用したい白meshをHierarchyタブから選択し、Mantis LODをAdd Component
- meshUploadをクリック
- 一番下のQualityスライダーで割合を変更
- ポリゴン数と実際の見た目を確認
- 良い感じであればsave current meshでmeshを保存する
- 保存したmeshを該当白meshのSkinnd mesh Rendererのmeshにドラックアンドドロップ
こうなります
clothを使ってスカートをひらひらさせる
やり方はこちらを参照した方が圧倒的に分かりやすいのでこちらへどうぞ。
ただ、clothを入れるのはスカートに値する白meshです。
また、sphereやcapsuleのコライダーを使った物理判定を入れる場合は、それらのメッシュレンダーを削除しないとコライダー自体が他人に見えてしまうので死ぬほど恥ずかしい思いをするので注意しましょう。
LipSyncの設定
これで最後の設定をします。
LipSyncの設定です。まずはVRCAvatarDescriptorをモデル本体に入れ込みましょう。
これはAddComponentから、Script>VRCSDK2に入っています。
次に目線の高さを指定します。
このような灰色のボールがVRchat上での目線の高さとなります。
このボールはView Positionという数値で変更できるので、目と目の間に半分埋め込ませる形で設置しましょう。
次にDefault Animation Setでこのモデルは男か女かを設定しておきます。
最後にLipSyncを上記の画像のように選択し、顔のmeshを指定します。そうするとPMDエディタで設定したモーフを設定するメニューが現れるのでそれらを合わせていきます。
アップロードして終わり
これでアップロードすればLipSyncが出来ているはずです。
出来ていたらヒャッホーと盛り上がればOK!!!!
Eye Trackingその他については後日書きますね!