페이드를 활성화하여 모션을 반복 재생(CubismMotionController)

[마지막 업데이트 날짜: 2020/02/07]

개요

Cubism Viewer for OW에서 모션을 루프 재생할 때, 「루프 재생시의 페이드 인」에 체크가 되어 있었을 경우, 모션이 종단으로부터 선두에 돌아올 때에 Cubism의 모션 페이드, 파라미터 페이드가 발생합니다.
참고: 모션 설정

그러나, Cubism SDK for Unity의 CubismMotionController.PlayAnimation()의 인수 isLoop 에 true를 건네주어 모션을 루프 재생하는 경우, 종단으로부터 선두에 돌아올 때에 페이드는 발생하지 않습니다.

CubismMotionController에 존재하는 모션 재생 종료시에 호출되는 콜백을 이용해, 콜백으로부터 같은 모션을 새롭게 재생시키는 것으로 페이드를 발생시켜 모션을 루프 시킬 수 있습니다.

위의 설정을 하려면, 예를 들면 다음과 같이 하십시오.

  • 모델에 CubisMotionController를 연결
  • 루프 재생 처리를 수행하는 스크립트 작성

다음은 [SDK 가져오기]를 수행한 프로젝트에 대해 수행한다고 가정합니다.

 

모델에 CubisMotionController를 연결

Scene에 배치한 Cubism의 Prefab의 루트가 되는 GameObject에 CubismMotionController를 첨부합니다.

이미 연결되어 있으면 새로 연결할 필요가 없습니다.
이때 CubismMotionController를 사용하여 모션을 재생하는 컴포넌트가 연결되어 있는 경우 다음 설정과의 간섭에 주의하십시오.

또한 CubismFadeController.CubismFadeMotion에 루프 재생할 AnimationClip의 ID가 등록된 .fadeMotionList를 설정합니다.

 

 

루프 재생 처리를 수행하는 스크립트 작성

Project 창에서 C# 스크립트를 만듭니다.

여기에서는 이름을 「CubismMotionLoopPlayer」라고 합니다.

 

작성한 스크립트를 Prefab의 CubismMotionController와 동일한 계층에 연결합니다.

 

작성한 스크립트를 텍스트 편집기에서 열고 설명 내용을 다음과 같이 다시 작성합니다.

 

Scene에서 Prefab을 선택 상태로 설정하여 Inspector 창에서 CubismMotionLoopPlayer.Animation으로 루프 재생할 AnimationClip을 설정합니다.

 

이상의 설정을 한 상태에서 씬을 재생하면 모션이 루프 재생되지만 루프시에 페이드가 발생하지 않습니다.

 

CubismMotionController는 모션 재생이 끝날 때 호출할 콜백을 등록하는 기능을 구현합니다.

 

이것을 이용해, 전술한 CubismMotionLoopPlayer를 직접 루프 재생시키지 않고, 모션 재생 종료시에 새롭게 같은 모션을 재생하도록 수정합니다.
CubismMotionController.PlayAnimation()의 isLoop에 true를 건네주고 있는 경우, CubismMotionController.AnimationEndHandler의 콜백은 불려 가지 않습니다.

 

이것으로 설정이 완료되었습니다.

이 상태에서 씬을 재생하면 모션이 페이드하면서 루프 재생됩니다.

© 2010 - 2022 Live2D Inc.