모션 재생 시 모션 싱크 수행(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
    • 가져오기 시 모션과 음성, 모션 싱크 설정을 연결하는 에셋
  • CubismMotionSyncLinkList
    • CubismMotionSyncLinkData에 대한 참조가 있는 에셋
  • CubismMotionSyncLinkController
    • 재생된 모션에 연결된 오디오를 재생하고 모션 싱크 설정을 적용하는 컴포넌트

CubismMotionSyncLinkData 및 해당 참조가 있는 목록의 CubismMotionSyncLinkList 에셋은 모델을 가져오거나 다시 가져올 때 생성됩니다.

이번에 추가된 CubismMotionSyncLinkController 컴포넌트를 모델에 적용하고, CubismMotionController 컴포넌트를 이용하여 모션을 재생함으로써 모션 재생을 CubismMotionController.AnimationBeginHandler로 감지하고, 연결된 음성을 재생함으로써 모션 싱크를 이용할 수 있습니다.

이번에 추가된 CubismMotionSyncLinkController 컴포넌트를 모델에 적용하면 모션 재생을 CubismMotionController.AnimationBeginHandler로 감지하고, 연결된 음성을 재생하여 모션 싱크를 이용할 수 있습니다.

CubismMotionController 컴포넌트를 이용하여 모션을 재생합니다.
CubismMotionController 컴포넌트를 이용한 모션 재생에 대해서는 SDK 매뉴얼 「Motion」을 참조하십시오.

가져온 모델을 이용하는 경우

이미 설정이 완료된 모델을 Cubism 5 SDK MotionSync Plugin for Unity R1 이전을 이용한 프로젝트로 가져온 경우 Cubism 5 SDK MotionSync Plugin for Unity R2 이상으로 업데이트하고 모델을 다시 가져오면 CubismMotionSyncLinkDataCubismMotionSyncLinkList 에셋이 생성됩니다.

작동하는 장면 생성

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 키를 누르면 모션이 재생되며 오디오 재생과 모션 싱크가 수행됩니다.

이 기사가 도움이 되었나요?
아니요
이 기사에 관한 의견 및 요청사항을 보내 주시기 바랍니다.