Cubism MotionSync Plugin for Unity WebGL에서의 작동 정보

업데이트: 2023/11/14

Cubism MotionSync Plugin for Unity를 사용하여 WebGL용으로 개발할 경우 Unity WebGL의 오디오 기능에 제한이 있습니다.
예를 들어, Cubism MotionSync Plugin for Unity의 Microphone 샘플 장면은 Unity 표준 Microphone 클래스가 WebGL에서의 동작을 지원하지 않기 때문에 정상적인 동작을 수행할 수 없습니다.

Unity WebGL의 오디오 기능 제한에 대한 자세한 내용은 Unity 공식 문서를 참조하십시오.
WebGL의 오디오 사용(Unity 공식 매뉴얼)

WebGL에서 사용하는 경우의 샘플

Cubism MotionSync Plugin for Unity는 Unity WebGL의 오디오 기능 제한 범위 내에서 모션 싱크를 작동시키는 샘플을 제공합니다.

MotionSync For WebGL 샘플 장면

이 샘플 장면은 WebGL에서 MotionSync 샘플 장면과 동일한 조작으로 사용할 수 있습니다.
그러나 MotionSync 샘플 장면과 달리 다음 자산과 스크립트를 사용합니다.

  • CubismMotionSyncCriAudioInput 클래스를 상속하는 CubismMotionSyncCriAudioInputWebGL 클래스
  • CubismMotionSyncAudioDataList 자산
  • CubismMotionSyncAudioData 자산

CubismMotionSyncCriAudioInputWebGL

이 클래스는 CubismMotionSyncCriAudioInput 클래스를 상속한 클래스입니다. MonoBehaviour 스크립트로 사용합니다.

CubismMotionSyncCriAudioInput으로서도 취급할 수 있지만, 이하의 확장을 실시합니다.

  • CubismMotionSyncAudioDataList 자산에 대한 참조를 유지한다.
  • Unity 표준의 Awake 함수 내에서 같은 계층에 있는 AudioSource를 취득한다.
  • Unity 표준 Update 함수 내에서 현재 재생 중인 AudioClip의 명칭과 CubismMotionSyncAudioDataList 자산 내에서 참조를 가지는 CubismMotionSyncAudioData 자산이 보유한 AudioClip의 명칭이 일치하는지 확인한다.
  • 일치할 경우 현재 재생 시간을 PCM 샘플 단위로 취득하고 이전 프레임의 차분만큼 음성 데이터를 모션 싱크 처리용 버퍼에 저장한다.

CubismMotionSyncAudioDataList

이 클래스는 ScriptableObject로서 정의되어 있어 내부에서는 이하의 데이터를 보유하는 것이 가능합니다.

  • CubismMotionSyncAudioData 자산에 대한 참조 및 인스턴스 ID를 보유하는 구조체의 배열

CubismMotionSyncCriAudioInputWebGL 클래스는 이 자산을 참조하여 CubismMotionSyncAudioData 자산이 보유한 데이터에 런타임으로 액세스합니다.

CubismMotionSyncAudioData

이 클래스는 ScriptableObject로서 정의되어 있어 내부에서는 이하의 데이터를 보유하는 것이 가능합니다.

  • AudioClip에서 GetData 함수로 얻은 샘플 데이터 배열
  • AudioClip 이름

이용 방법

장면에서 사용하기 전에 미리 각 ScriptableObject를 생성해야 합니다.

CubismMotionSyncAudioData 자산과 CubismMotionSyncAudioDataList 자산의 생성은 Project 창에서 오른쪽 클릭하여 나타나는 Assets/Create 하위 메뉴에서 수행할 수 있습니다.

Create/Live2D Cubism/MotionSync/Audio Data List 메뉴에서 빈 CubismMotionSyncAudioDataList 자산을 생성할 수 있습니다.

CubismMotionSyncAudioData 자산 생성은 AudioClip을 선택한 상태에서 Assets/Create 하위 메뉴를 열어 선택할 수 있습니다.

CubismMotionSyncAudioDataList 자산의 인스펙터는 이미지와 같이 되어 있습니다.
CubismMotionSyncAudioData 자산을 「Drag & Drop」이라고 쓰여진 영역에 드래그 앤 드롭하여 등록할 수 있습니다.

등록 후에는 다음과 같은 표시가 됩니다.

필요한 자산을 생성해 설정을 끝낸 후 임의의 장면상의 오브젝트에 CubismMotionSyncCriAudioInputWebGL 클래스를 컴포넌트로서 설정합니다.
설정한 후 생성된 CubismMotionSyncAudioDataList 자산을 인스펙터에서 연결합니다.

이 CubismMotionSyncCriAudioInputWebGL 컴포넌트를, 모션 싱크를 이용하고 싶은 모델의 CubismMotionSyncCriProcessor에 인스펙터에서 연결하면 동작하게 됩니다.

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