Raycasting

[마지막 갱신일: 2020/01/30]

개요

Raycasting은 사용자가 지정한 Cubism의 메쉬와 임의의 좌표가 교차할지 어떨지를 판정하는 기능입니다.
클릭/탭된 좌표나, 씬 중의 임의의 오브젝트와 지정된 메쉬와의 충돌 판정을 취득하는 것이 가능합니다.
Raycasting 사용 방법은 여기를 참조하십시오.

Cubism SDK for Unity의 Raycasting은 크게 두 가지 요소로 구성됩니다.

  1. 판정할 아트 메쉬 지정용의 컴퍼넌트
  2. 입력된 좌표와 지정된 아트 메쉬의 충돌 판정을 실시하는 컴퍼넌트

 

1. 판정할 아트 메쉬 지정용 컴포넌트

충돌 판정에 사용할 메쉬를 지정하려면 CubismRaycastable을 사용합니다.

CubismRaycastable은 [Prefab의 루트]/Drawables/ 아래에 배치된 GameObject에 연결하여 사용합니다.
이것이 첨부된 GameObject와 같은 ID의 아트 메쉬를 명중 판정에 사용합니다.

CubismRaycastable에는 메쉬 당 판별의 정확도를 설정하는 매개 변수가 있습니다.

CubismRaycastable.Precision에는 설정할 수 있는 값이 2개 있어 각각 아래와 같이 되어 있습니다.

  • BoundingBox

그 메쉬를 둘러싸는, 네변이 수평 또는 수직의 구형을 충돌 판정으로서 사용합니다.
메쉬의 형상에 따라서는 메쉬 밖의 좌표에서도 충돌 판정을 취합니다만, Triangles에 비해 퍼포먼스가 뛰어납니다.

  • Triangles

메쉬의 형상을 충돌 판정의 범위로서 사용합니다.
BoundingBox와 비교하면 성능이 떨어지지만 정확한 범위에서 판정을 할 수 있습니다.

 

 

2. 입력된 좌표와 지정된 아트메쉬의 충돌 판정을 하는 컴퍼넌트

실제 충돌 판정의 취득은 CubismRaycaster를 사용합니다.
CubismRaycaster를 사용할 때는 Cubism의 Prefab 루트에 연결합니다.

CubismRaycaster를 초기화할 때 Prefab에 연결된 모든 CubismRaycastable에 대한 참조를 가져옵니다.
실행중에 충돌 판정용의 메쉬를 추가/삭제했을 때에는, CubismRaycaster.Refresh()를 호출해 참조를 다시 취득합니다.

 

좌표로부터 충돌 판정을 취득하려면, CubismRaycaster.Raycast()를 이용합니다.

 

CubismRaycaster.Raycast() 는 반환값에 해충돌 판정을 취득한 메쉬의 수를 돌려줍니다.
또, 인수에 건네준 CubismRaycastHit[]형태의 인스턴스에 대해 판정을 취득한 메쉬의 정보가 설정됩니다.

CubismRaycaster.Raycast() 는, 동 좌표상에 복수의 메쉬가 겹쳐져 있었을 경우, 최대로 CubismRaycastHit[] 형의 인스턴스의 요소의 수까지 취득합니다.
요소 수 이상의 메쉬가 겹치면 넘어서는 메쉬는 결과를 얻지 못합니다.

CubismRaycastHit은 충돌 판정을 취득한 메쉬의 정보를 가지는 구조체입니다.

  • Drawable

충돌 판정을 취득한 아트 메쉬의 참조입니다.

  • Distance

지정한 좌표로부터의 거리입니다.
CubismRaycaster.Raycast() 의 인수에 건네준 origin 또는 ray.origin 와 Drawable 의 Transform.position 의 직선 거리입니다.

  • LocalPosition

충돌 판정을 취득한 아트 메쉬의 로컬 좌표입니다.

  • WorldPosition

충돌 판정을 취득한 아트 메쉬의 월드 좌표입니다.

© 2010 - 2022 Live2D Inc.