モーション再生時にモーションシンクを行う(Unity)
最終更新: 2024年11月28日
Cubism 5 SDK MotionSync Plugin for Unity R2より、モーション再生時に.model3.json 上で紐づけられた音声と同じく紐づけられたモーションシンク設定を利用し、モーションシンクを行えるようになりました。
前提
モーション再生時にモーションシンクを適用させるには .model3.json に書き出されるモーションの情報に、音声とモーションシンク設定が適切に設定されていることが前提となります。
具体的な設定方法はEditorマニュアル「モーションの設定」をご覧ください。
仕組み
Cubism 5 SDK MotionSync Plugin for Unity R2 以降では以下を追加しました。
CubismMotionSyncLinkData- インポート時にモーションと音声、モーションシンク設定を紐づけるアセット
CubismMotionSyncLinkListCubismMotionSyncLinkDataの参照を持つアセット
CubismMotionSyncLinkController- 再生されたモーションに紐づけられた音声を再生し、モーションシンク設定を適用するコンポーネント
CubismMotionSyncLinkData とその参照を持つリストの CubismMotionSyncLinkList アセットはモデルのインポート及び再インポート時に生成されます。
今回追加された CubismMotionSyncLinkController コンポーネントをモデルに適用すると、モーションの再生を CubismMotionController.AnimationBeginHandler で検知し、紐づけられた音声を再生することでモーションシンクを利用することが出来ます。
CubismMotionController コンポーネントを利用してモーションを再生します。CubismMotionController コンポーネントでのモーション再生について、詳しくは SDKマニュアル「Motion」をご覧ください。
インポート済みのモデルを利用する場合
既に設定を終えているモデルが Cubism 5 SDK MotionSync Plugin for Unity R1 以前を利用したプロジェクトにインポート済みの場合、Cubism 5 SDK MotionSync Plugin for Unity R2 以降にアップデートし、モデルの再インポートを行うことで CubismMotionSyncLinkData と CubismMotionSyncLinkList アセットが生成されます。
動作するシーンの作成
1. Editorマニュアル「モーションの設定」で設定を終えたモデルを用意します。
2. モデルをシーンに配置し、SDKマニュアル「シーン上での利用(Unity)」の内容のうち、音声ファイルの追加以外の設定を行います。
3. モデルのルートに CubismMotionSyncLinkController コンポーネントをアタッチします。この時、自動で CubismMotionController コンポーネントもアタッチされます。
4. CubismMotionSyncLinkController コンポーネントの AudioSource に利用する AudioSource コンポーネントをリンクし、MotionSyncLinkList には利用するモデルの CubismMotionSyncLinkList アセットをリンクします。

5. 今回は下記のスクリプトを作成します
using UnityEngine;
using Live2D.Cubism.Framework.Motion;
public class MotionLinkTest : MonoBehaviour
{
private CubismMotionController _motionController;
public AnimationClip Clip;
// Start is called before the first frame update
private void Start()
{
_motionController = GetComponent<CubismMotionController>();
}
// Update is called once per frame
private void Update()
{
if (_motionController.IsPlayingAnimation())
{
return;
}
if (Input.GetKeyDown(KeyCode.F))
{
_motionController.PlayAnimation(Clip, isLoop: false);
}
}
}
6. 作成したスクリプトをモデルにアタッチして、音声とモーションシンクを紐づけ済みのモーションを Clip に設定します。

7. シーンを再生し、キーボードのFキーを押すとモーションが再生され、音声の再生とモーションシンクが行われます。