모델 충돌 판정

[마지막 갱신일: 2019/11/07]

 

모델 자체에는 충돌 판정을 실시하는 기능은 없습니다만,

아트 메쉬의 정점 정보를 취득할 수 있는 것을 이용해 충돌 판정 처리를 실장할 수가 있습니다.

여기서 말하는 "충돌 판정"이란,

화면상의 지정의 포인트에 대상의 메쉬가 있을지 어떨지를 테스트를 가리킵니다.

 

 

충돌 판정 준비

충돌 판정에는 아트 메쉬를 이용합니다.
Editor상에서의 충돌 판정용 아트 메쉬의 준비는 「Editor상에서의 충돌 판정 설정」을 확인해 주십시오.
충돌 판정을 준비한 후, Cubism Viewer (for OW)의 기능으로 충돌 판정을 설정해 .model3.json 파일에 짜넣을 필요가 있습니다.

Cubism Viewer (for OW)상에서 충돌 판정을 설정해 출력하면, .model3.json 파일에는 이하와 같이 기술됩니다.

 

 

Cubism Viewer (for OW)에서는 HitArea~와 ID가 설정된 아트 메쉬만 등록 할 수 있지만,
.model3.json 파일을 텍스트 에디터로 직접 가공하면 HitArea~ 이외의 아트 메쉬에서도 충돌 판정으로 설정할 수 있습니다.

충돌 판정을 실시한다

충돌 판정에는 Native(C++)의 CubismUserModel::IsHit 함수, 또는 Web(TypeScript)의 CubismUserModel.isHit 함수를 이용할 수 있습니다.
제1인수로 대상의 drawable의 ID, 제2, 제3인수로 검사하는 묘화상의 X, Y 의 값을 지정합니다.

 

 

충돌 판정의 내용과 주의점

충돌 판정은 아트 메쉬의 정점을 모두 주사해, 정점의 XY 좌표의 최대, 최소치로부터 구형의 범위를 만들어,
검사 대상의 화면 좌표를 모델의 변환 행렬로부터 역변환해, 구형에 들어가 있는지 확인하는 구조입니다.
이 함수를 사용하는 경우 다음 사항에 유의해야 합니다.

・모델의 변환 좌표에 회전이 들어가면 올바르게 변환되지 않는다.

・사각형에 가까운 아트 메쉬가 회전 디포머 등으로 회전하면 크게 사이즈가 바뀐다.

© 2010 - 2022 Live2D Inc.