LoginSignup
2
4

More than 3 years have passed since last update.

Unity でOVRLipsync を使い作った BlendShape のアニメーションをクリップに変換する方法

Last updated at Posted at 2019-12-19

要約

UnityでOVRLipsyncを使い作ったBlendShapeのアニメーションをアニメーションクリップに変換するには、GameObjectRecorderクラスを使えばできます。
Unity - Scripting API: GameObjectRecorder

はじめに

Unityでアニメーション作ろうと思った際に、口パク面倒だなーと思っていたら、OVRLipsyncという神ツールを見つけました。ですが、ほとんどインタラクティブに使う用途ばっかりで、そのアニメーションをアセットにしたくても方法が見つからない...と、そこに現れた救世主!
Unityユーザー助け合い所
質問したらソッコーで回答をくれました。本当にありがとうございます!

方法

Unityちゃんを使います。
キャプ01.PNG

OVRLipsyncをunityに入れて音声データに合わせてBlendShapeの値が動く(口パクする)ように設定します。ここまでは他の記事を参考にしてみてください。

Unity - Scripting API: GameObjectRecorder
のページを参考にして下記のようにしたスクリプトを作ります。

using UnityEngine;
using UnityEditor.Animations;

public class RecordTransformHierarchy : MonoBehaviour {
    public AnimationClip clip;

    private GameObjectRecorder m_Recorder;

    void Start()
    {
        // Create recorder and record the script GameObject.
        m_Recorder = new GameObjectRecorder(gameObject);

        // Bind all the Transforms on the GameObject and all its children.
        m_Recorder.BindComponentsOfType<SkinnedMeshRenderer>(gameObject, false);
    }

    void LateUpdate()
    {
        if (clip == null)
            return;

        // Take a snapshot and record all the bindings values for this frame.
        m_Recorder.TakeSnapshot(Time.deltaTime);
    }

    void OnDisable()
    {
        if (clip == null)
            return;

        if (m_Recorder.isRecording)
        {
            // Save the recorded session to the clip.
            m_Recorder.SaveToClip(clip);
        }
    }
}

これをunityちゃんの表情のblendshapeがあるMTH_DEFに割り当てます。
また、空のクリップを作り、スクリプトのclipの欄に割り当てます。
キャプ02.PNG

次に、UnityちゃんにデフォルトでついているAnimator, Idle Changer, Face Updata, Auto Blinkのチェックを外してUnableにします。
キャプ05.PNG

この後、Playを押してStopすると、割り当てられたクリップにキーフレームがうたれます。この時、Pauseを押してからPlayを押して、Pauseを外して再生したほうがうまくいくと思います。下の図は失敗例。
キャプ03.PNG

しかし、アニメーションのキーフレームが打たれているところのプロパティが黄色くなって、このままでは使えません。
ので、新しいクリップを作り、手動でプロパティを追加して、先のクリップから対応するプロパティにキーフレームをコピペします。日本語の場合は、_A,_I,_U,_E,_Oのプロパティのキーフレームを移せばいいと思います。(先の画像と今回の画像で使っているアニメーションが違うのでキーフレームが対応していないです。)
キャプ04.PNG

その後、Animatorなどに今度はチェックをいれてableにして、音声と共に再生してみると口パクしているのがわかります。もし音声と口パクがずれていたら、Timelineなどを使い調節すると便利です。
キャプ06.PNG

まとめ

面倒な部分を簡略化できると思いますが、現時点で私が口パクを作る頻度が高くないので更新はしないと思います。
もし、もっといい方法を思いついた方がいたら記事作ってください。私のためにもお願いします!(めんどくさがり)

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4