【Unity】OVRLipsyncでリップシンクする方法

こんにちは。
リップシンクを試してみました。リップシンクとは、映像作品、アニメーション作品に登場する人物の口の動きとセリフを合わせることです。Python+OpenCVでしてみたかったのですが、まずはすぐに試せそうでメジャーなUnityで行いました。キズナアイというかわいいモデルでリップシンクを行います。ちなみにUnityを使うのは初めてです。

mami
Unity使いやすいですね~。勝手に重たいイメージがあって、、驚きました。(失礼)

前提

Unityを初めてインストールしていきなりキズナアイでリップシンクしたいという、めちゃくちゃ限られた人向けに記事を書きます。
本記事はこちらの記事を真似したものですが、Unity初心者には「え?どうやってしたの??」がありましたのでその辺りを細かく記事にしていきます。

3Dモデリングデータ(PMS→FBS)変換

キズナアイダウンロードページでダウンロードした3DモデリングデータはPMX形式ですので、Unityで使えるFBX形式に変換する必要があります。以下にページにしてその手順を記載しましたので実施して下さい。

【Unity】MMDモデルのPMXファイルをUnity用にFBXファイルに変換

2020.08.20

Unity+3DModel+OVRLipSync導入

ダウンロードした「OculusLipSync.unitypackage」をD&Dするとダイアログが表示されるので「Import」します。

左上の「+」を選択して「Create Empty」を選択。

GameObjectが出来上がります。

GameObjectを選択した状態で右にある「Add Compornent」で「OVR Lip sync」を加えます。

「kizunaai」を選択した状態で「Add Compornent」で「OVRLipSyncContext」、「OVRLipSyncContextMorphTarget」を加えます。

追加したコンポーネントのパラメータを変更します。「OVRLipSyncContextMorphTargetーSkinnedMeshRenderer」を「U_char_1」(頭のパーツ)にします。

次に「OVRLipSyncMorphTargetーVisemeToBlend」に次のインデックス番号を指定します。

こちらに変更

また「kizunaai」を選択した状態で「Add Compornent」で「OVRLIpSyncMicInput」を加えます。

最後にプロジェクトの中の「Assets\Oculus\LipSync\Scripts\OVRLipSyncContextMorphTarget.cs」ファイルのUpdate部分をLateUpdateに書き換えます。

/// <summary>
/// Update this instance.
/// </summary>
void LateUpdate ()
{
    if((lipsyncContext != null) && (skinnedMeshRenderer != null))
    {
        // get the current viseme frame
        OVRLipSync.Frame frame = lipsyncContext.GetCurrentPhonemeFrame();
        if (frame != null)
        {
            SetVisemeToMorphTarget(frame);

            SetLaughterToMorphTarget(frame);
        }

        // TEST visemes by capturing key inputs and sending a signal
        CheckForKeys();

        // Update smoothing value
        if (smoothAmount != lipsyncContext.Smoothing)
        {
            lipsyncContext.Smoothing = smoothAmount;
        }
    }
}

あとはMainCameraをキズナアイにぐぐーっと近づけます。

実行します。

 

完成~

音ありませんが、、一応私の声に反応してくれています。かわいいですね~。なるほど~。Vtuberさんの気持ちが少し分かった気がします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)