UnityのリップシンクはプラグインOculus Lipsync Unityで口の形のスキンメッシュを発音ごとに選択すればいいって本当?
リップシンクが上手くいかない時はマイクの設定や再接続が有効って本当?
こんな疑問に答えます。
僕はVRoidで漫画が作れるiPhoneアプリComicamを開発して公開中です。
そんな僕が解説していきます。
作業環境
Unity 2018.2.10f1
HTC Vive
Unityのリップシンクを解説【口の形のスキンメッシュを発音ごとに選択します】
VRChat向けにリップシンクを設定していく作業についてはこちらで解説しています。
» VRChatのリップシンクを解説【ボタン押すだけで簡単に動かせます】
無料のOculus Lipsync Unityプラグインを使って設定していきます。
Oculus Lipsync Unityを導入する
規約に同意してダウンロードします。
解凍してOculusLipSync.unitypackageをUnityのAssetフォルダにドラッグしてインストールします。
Oculus Lipsync UnityをVRM用に設定をする
左サイドバー(ヒエラルキ)で3D人物モデルを選択します。
- OVR Lip Sync Context Morph Target (Script)
- OVR Lip Sync Mic Input (Script)
- OVR Lip Sync Contex (Script)
これら3つのコンポーネントを右サイドバー(インスペクタ)に追加します。
いつも通りAdd Componentを押して検索して追加です。
OVR Lip Sync Context Morph Targetで各発音記号に該当するSkin Mesh Rendererを指定する
まず一番上の部分でモデルのSkinned Mesh Rendererが入っているフォルダを指定します。
VRMモデルの場合はFaceフォルダです。
発音記号 (グローバル基準) |
Unityちゃんの Skin Mesh Renderer |
VRM (VRoidのオリジナルの Skin Mesh Renderer) |
FBX (Cats Blender Pluginで FBXに変換したVRoidの Skin Mesh Renderer) |
PP | vrc.v-pp | ||
FF | vrc.v-ff | ||
TH | vrc.v-th | ||
DD | vrc.v-dd | ||
KK | vrc.v-kk | ||
CH | vrc.v-ch | ||
SS | vrc.v-ss | ||
nn | vrc.v-nn | ||
RR | vrc.v-rr | ||
aa | MTH_A | vrc.v-aa | |
E | MTH_E | vrc.v-e | |
ih | MTH_I | vrc.v-ih | |
oh | MTH_U | vrc.v-oh | |
ou | MTH_O | vrc.v-ou | |
Laughter | MTH_JOY | MTH_JOY | |
Laughter Threshold | 0.5 | ||
Laughter Multiplier | 1.5 | ||
Smooth Amount | 70 |
アイウエオの5音を埋めればとりあえずはOKです。
というかVRoidにはデフォルトではアイウエオしか用意されていないですね。
Laughterは笑い声に反応して口の形を作ってくれる機能です。
このようにプルダウンでスキンメッシュを選んでいけばOKです。
OVR Lip Sync Contex (Script)もそのままでOKです
Contexはリップシンクを適用したいモデルにはマストで入れる必要があります。
特に設定変更する箇所はありません。
OVR Lip Sync Mic Input (Script)はそのままでOKです
MIc Inputは接続されているマイクからの信号をオーディオソースに繋げるスクリプトです。
特に設定変更する箇所はありません。
再生起動するとSelected DeviceのところにHTC Viveマイクとか表示されます。
ここまでの設定でUnityちゃんモデルではリップシンクが成功します。
Oculus Lipsync Unityの設定をVRoidに合わせる
Oculus Lipsync UnityをVRM形式のモデルにも適用させるにはスクリプトの工夫が必要です。
VRMLipSyncContextMorphTargetを使わせていただきました。
» 参考:VRMLipSyncContextMorphTarget(GIthub)
MITライセンスです。
VRMLipSyncContextMorphTargetを右サイドバーに追加してモデルを指定
Lipsync Contextの部分でVRoidモデルを指定しましょう。
Oculus Lipsync Unityの方は全ていじらずにそのままでOKです。
Cats Blender PluginでFBX形式に変換したVRoidを使う場合はこのスクリプトは不要です。
VRゴーグルを付けて歌ってみるとリアルタイムでリップシンクしてくれます
これで再生起動してマイクから歌えば唇が動いてくれます。
もちろん喋りでも動きます。
Unityのリップシンクで知っておきたいこと【上手くいかない時+次にやること】
リップシンクが上手くいかない時
VRゴーグルのマイクが接続されているか確認する
ここの部分に想定通りのマイク表示が出ているか確認しましょう。
WindowsでHTC Vive以外のマイクを検知している場合もあります。
何回かVRゴーグルを再起動するのもおすすめです。
Windowsの音声設定ウィンドウを確認する
マイク表示が出ているのにダメな時は、Windowsの音声設定ウィンドウを開きましょう。
そこのマイクの入力パラメーターを見てからUnityに戻るとなぜかリップシンクが再開されました…(謎仕様)
原因究明中です。
リップシンクは重い時もあるので何度か再チャレンジする
リップシンクを入れた途端に急に重くなります。
リップシンクのチェックボタンをオンオフして実行してみると違いがわかると思います。
処理が追いついていない可能性もあるのでUnityの再生実行・一時停止を何回か押して再チャレンジすると動くこともあります。
それでもVRoid自体が全く動かない時はIKの設定がおかしい可能性があります。
無音状態時の時に表情が怒りの表情になっていまう
マイクからの音が無音の時にVRMだと怒りの表情、FBXだと左目のウィンク状態になってしまいます。
原因究明中です。
Oculus Lipsync Unityの利用規約はフリーです
You are Free to:
Use, modify, and distribute the Oculus Audio SDK in source and binary form with your applications/software.
Licenses & Agreements - Oculus Audio Software Development Kit License Agreement (Audio SDK (3.3))(EULA)
https://developer.oculus.com/licenses/audio-3.3/
Oculus Lipsync UnityのEULAはOculus Audio SDKを参照とあり、その中にあなたのアプリの中での使用はフリーですと書かれています。
これ以降に特殊状況での条件なども書いてあるので確認推奨です。
OVRLipSyncContextCannedでオーディオファイルから読み取りも可能です
オーディオファイルから事前に計算することでモバイルなどでの処理速度向上などができるという機能があるようです。
» 参考:Precompute Visemes to Save CPU Processing in Unity
PPやFFなどの子音も登録するにはスキンメッシュの作成が必要です
PP・FFなど英語・中国語などで使う子音も登録するには新しくスキンメッシュの作成が必要です。
Cats Blender Pluginで簡単に1ボタンで作れます。
» VRChatのリップシンクを解説【ボタン押すだけで簡単に動かせます】
リップシンクを極めるならVRM形式のままよりCatsでFBX変換した方がいいかも、ただ変換時のミスに注意
VRMをCats Blender PluginでFBX形式に変換してしまった方が軽いしリップシンクの設定も簡単です。
モデルの見た目の違いも感じません。
ただ上手く変換できないこともたまにありますし、僕の場合はなぜか片目が閉じてしまう現象が発生しています。
あとFBX形式だとマイク認識が止まることも多いです。
その辺の面倒さを考えると、まず最初はVRMでサクッと試してみるのがいいと思います。
子音も登録した方が口の動きが自然になる
日本語を喋るとしても子音を登録した方が口が細かく動く気がします。
Unity上でリップシンクのスキンメッシュを作るのは難しいようです、ブレンドシィプとは違います
コメント | |
スキンメッシュ | スキンメッシュがあればUnityでキーフレームを打ちアニメーションを作れる |
ブレンドシェイプ | ブレンドシェイプからUnityでアニメーションを作ることはできない |
VRMのスキンメッシュは僕が1日調べた限りではUnity上では簡単には作れないようです。
Blend shapeの方は簡単に作れますがそれをスキンメッシュに変換するのは難しい気がしてます。
なのでやはりBlenderのCats Blender Pluginでスキンメッシュを作ってしまうのが便利です。
Unityでリップシンクするその他のアセットと比較してもOVRがベストでした
名称 | コメント |
Oculus Lipsync Unity | ・無料 ・口の形のスキンメッシュを自分で作る必要がある |
LipSync Pro - ROGO DIGITAL |
・有料 ・かつて無料版もあったが今は存在しない ・他キャラでも転用可能なアニメーションの作成 ・口以外の顔全体のアニメもカバー ・オーディオから音素を自動検出 |
SALSA LipSync | ・有料 ・DAZ Studioの3Dモデルに1クリックセットアップが可能 |
リップシンクを設定できるUnityのアセットも少し調べてみました。
Oculus Lipsync Unityで無料で成功したので今のところ必要性は薄いかなと感じます。
わかりやすい作品例も見当たりませんでした。
MMDモデルをUnityでリップシンクさせる
MMD4MecanimnでFBX変換したMMDモデルならば、UnityちゃんやFBX変換したVRoidと同様に理論上は動くと思います。
まだ試してないのでわかったら追記したいと思います。
リップシンクに成功したら動画を撮影しよう
リップシンクに成功したら歌ったり喋ったりしながら動画を撮影しましょう。
モーションには口の動きも記録されているので後でじっくり編集することが可能です。
動画の撮影の仕方はこちらの記事で解説しています。
» Unityでモーションキャプチャする方法【1ボタンで記録+編集可能】
細かい表情やリップシンクを後からじっくり編集する方法はこちらで解説しています。
» UnityのTimelineを解説【キャラの表情や動きを5秒で編集可能です】
というわけで今回は以上です。
口が動くと一気に人間感が増しますね。