포즈에 대해

[마지막 갱신일: 2019/01/18]

 

 

 

포즈 기능이란?

포즈란 복수의 동종 파츠 중, 단일 파츠만을 모션에 근거해 전환을 페이드 표시하는 기능입니다.
복수의 동종 파츠란 오른손 A와 오른손 B 등 동시에 표시되면 표시적으로 모순을 일으키는 것을 말합니다.

모션 내의 파츠 불투명도의 조작을 최종적으로 파츠에 적용하는 처리 부분이기도 합니다.

이 페이지에 대한 이해를 위해 「모델 정보」의 「CubismModel 클래스에서 모델에 존재하지 않는 파라미터 ID 사용」을 미리 읽는 것이 좋습니다.

 

모션에서 파츠 불투명도 조작 흐름

모션 재생에서 파츠 불투명도 조작

파츠 불투명도의 일관성을 유지하기 위해 Original WorkFlow의 Framework에서의 모션 재생 단체에서는 직접 파츠 불투명도에 대해서 조작을 실시하지 않습니다.

모션 재생 파츠의 불투명도 조작은 대신 파츠와 동일한 ID 파라미터에 대한 덮어쓰기로 대체됩니다.
이 때 모델에 존재하지 않는 파라미터 ID는 가상 파라미터로서 값의 유지만 행해집니다.
모션 전환에 수반하는 페이드 처리 등은 행해지지 않고, 단지 덧쓰기만이 행해집니다.

OW SDK에서 모션에 파츠 불투명도 조작을 보간하는 방법은 단계가 적용된다고 가정합니다.

 

 

포즈 적용

모델 업데이트 프로세스의 마지막 단계에서 Pose 기능을 적용하여,
pose3.json에 설명 된 정보를 기반으로 그룹별로 표시되는 부분,
가상 파라미터의 값을 참조해 결정해 갑니다.

Pose를 모델에 적용하는 API는 다음과 같습니다.

 

파츠 조작 곡선은 단계를 권장하지만 선형 등을 선택하면,
0.001보다 커지면 표시 상태로 인식합니다.

표시 파츠를 결정할 때 조작 전의 파츠 불투명도에서 차분 시간과의 비례 계산으로 새로운 불투명도가 선형 보간으로 결정됩니다.

 

표시 파츠과 그 새로운 불투명도가 결정된 후, 그룹 전체에 대해 불투명도의 덧쓰기 처리가 실행됩니다.
숨겨진 파츠의 새로운 불투명도는 표시하는 파츠의 불투명도와의 관계로 배경이 비치지 않는 레벨에서 불투명도를 저하시켜 갑니다.

 

 

Pose 데이터 구조

Pose가 취급하는 정보는 파라미터, 파츠 정보에의 액세스를 고속으로 하기 위해,
파츠 ID로 액세스했을 때의 파라미터, 파츠의 인덱스를 PartData 구조체로 굳혀 보유합니다.

또 연동하는 데이터는 Link로서 PartData의 자식 요소로서 보유합니다.

 

CubismPose는 그룹 정보를 1차원 PartData 배열과 각 그룹의 개수 정보 배열로 표현합니다.

 

1차원 배열의 PartData는 각 그룹의 개수 정보를 기초로 배열상의 선두 위치와 요소수를 DoFade에 건네주는 것으로 그룹으로서 처리가 됩니다.

 

 

Parent ID로 불투명도 연동

Pose 적용 처리의 마지막에 불리는 이하의 함수에 의해, Link에 지정한 파츠에 값을 전파합니다.

 

이 Link는 OWViewer에서 Parent ID를 표기한 PartID가 CubismIdHundle의 배열로 저장됩니다.
아래 그림에서 PartManteL001의 Link에는 PartArmLB001과 PartArmLC001의 CubismIdHundle이 저장됩니다.

 

Link라고 표기되고 있습니다만 부모-자식 관계이며,
부모 파츠에 불투명도 조작이 없으면 연동이 되지 않는 것에 주의해 주세요.
Link에 표기된 자식끼리의 연동은 되지 않습니다.

 

 

인스턴스 생성(.pose3.json 파일 로드)

포즈는 .pose3.json 파일에 저장되며 CubismPose 클래스를 사용합니다.
생성에는 다음 함수를 사용합니다.

구현 예

 

 

포즈 적용

포즈를 적용하려면 다음 함수를 사용합니다.

사전에 모션의 적용 등 가상적인 파라미터의 계산을 마쳐 둘 필요가 있습니다.

 

 

 

폐기

모델이 해제될 때 CubismPose 인스턴스도 폐기해야 합니다.

© 2010 - 2022 Live2D Inc.