부위에서 다른 모션 관리 수행

이 페이지에서는 오른손 왼손으로 다른 모션 관리를 실현하기 위해,
LAppModel의 CubismMotionManager 보유를 늘려 LAppModel::Update에 통합하는 경우를 예로 들어,
관리나 모션 작성상의 주의점 등을 살펴봅니다.

 

 

CubismMotionManager 늘리기

모델에 관리자 추가

우선 프로그램 측의 구현을 살펴 보겠습니다.
첫 번째는 모델에 관리 클래스를 추가하는 것입니다.
샘플 LAppModel에 CubismMotionManager를 추가합니다.
생성자와 소멸자에도 생성 및 해제 처리를 추가합니다.

 

 

업데이트 처리

Update 처리에도 추가하여 재생된 모션이 파라미터에 영향을 줍니다.

LAppModel::Update 내부에 추가할 때 _model->LoadParameters();와 _model->SaveParameters(); 사이에
UpdateMotion을 설치하십시오.
또한 UpdateMotion을 여러 번 실행하면 업데이트할 파라미터가 있을 수 있습니다.
이 경우 나중에 실행되는 UpdataMotion의 내용이 우선됩니다.

 

재생 시작

그리고, StartMotion계의 멤버 함수를 복제, 개조하는 형태로
추가한 모션 관리자에서 모션 재생을 지시할 수 있습니다.

StartHandMotion 함수는 인수로 모션 관리자를 지정합니다.
덧붙여 이하의 예에서는, .motion3.json로 지정된 모션 (PreLoad 함수로 로드되는 모션)만 재생하는 구현이 되고 있습니다.

 

모션 재생은 모델에 해당 판정을 추가하여 클릭에 의해 동작하도록 합니다.

 

 

담당 파라미터의 배분

업데이트 처리에서도 나타낸 바와 같이, 재생하는 복수의 모션간에 파라미터가 중복하면, 나중에 실행된 갱신 내용이 우선되어 파라미터를 덧쓰기됩니다.
이 때문에 모션 매니저를 복수 사용할 때에는 어느 모션 매니저가 어느 부위의 움직임을 담당하는가?
나아가서는 어느 파라미터 조작을 담당할지 결정해 둘 필요가 있습니다.

 

위 동영상은 우선순위가 높은 모션 매니저(왼팔·오른팔 모션을 담당)의 재생이 종료된 직후에 우선순위가 낮은 모션 매니저(모델 전체의 아이돌 모션을 담당)에 의해 왼팔·오른팔의 파라미터가 업데이트된 사례입니다.
우선순위가 높은 모션 매니저에 의해서 업데이트되는 파라미터를, 모션 재생 종료 직후의 상태로 유지해 두고 싶은 경우에는, 바람직한 표현이라고는 할 수 없습니다.
이 현상은, 우선순위가 낮은 모션 매니저로 재생하는 모션 데이터내에 업데이트 대상으로서는 의도하지 않은 파라미터에 기준치가 설정되어 있는 경우에 나타납니다.
이 때, 모션 데이터마다 업데이트하는 파라미터를 분리해 두는 것으로, 우선 순위가 높은 모션 매니저에 의해 업데이트되는 파라미터를, 재생 종료 직후의 상태로 유지해 둘 수 있습니다.

 

파라미터마다 분리해 두는지, 덮어쓰기를 전제로 하는지,
방대한 수정을 하지 않기 위해서도 모션을 작성하기 전에 사양을 명확히 정해 두는 것이 중요합니다.

© 2010 - 2022 Live2D Inc.