Unity

월드 공간 지점을 스크린상의 지점으로 변환 : WorldToScreenPoint

코샵 2023. 12. 8. 11:57
반응형

Unity에서 WorldToScreenPoint 메서드는 월드 공간의 지점을 스크린 공간의 지점으로 변환하는 데 사용됩니다. 

 public Vector3 WorldToScreenPoint(Vector3 position)
  • position : 월드 공간의 지점입니다.

이 메서드는 다음과 같은 스크린 공간의 지점을 반환합니다.

  • 스크린 공간의 x좌표는 worldPoint의 x좌표와 카메라의 LookAt 방향의 x좌표의 비율에 해당합니다.
  • 스크린 공간의 y좌표는 worldPoint의 y좌표와 카메라의 LookAt 방향의 y좌표의 비율에 해당합니다.

예제

다음은 WorldToScreenPoint 메서드를 사용하는 예제입니다.

// 월드 공간의 좌표 (0, 0, 1)을 스크린 공간의 지점으로 변환합니다.
Vector3 screenPoint = Camera.main.WorldToScreenPoint(new Vector3(0, 0, 1));

// 스크린 공간의 지점을 출력합니다.
Debug.Log("screenPoint: " + screenPoint);

이 코드를 실행하면 다음과 같은 출력이 나타납니다.

screenPoint: (0.500000, 0.500000, 0.000000)

 

변환 공식

WorldToScreenPoint 메서드는 다음과 같은 공식을 사용하여 스크린 공간의 지점을 계산합니다.

screenPoint.x = (worldPoint.x / worldPoint.z) * Screen.width * 0.5f + Screen.width * 0.5f;

screenPoint.y = (worldPoint.y / worldPoint.z) * Screen.height * 0.5f + Screen.height * 0.5f;

 

위 공식은 이해를 돕기 위해 WorldToScreenPoint 메서드가3D 공간의 월드 좌표를 2D 스크린 좌표로 변환하는 공식을 간략하게 나타낸 것으로, 실제로는 카메라의 위치와 방향, 그리고 카메라의 투영 영역(FOV, Aspect Ratio ) 고려하기에 복잡합니다. 

 

결론

WorldToScreenPoint 메서드는 월드 공간의 지점을 스크린 공간의 지점으로 변환하는 유용한 메서드입니다. 메서드를 사용하여 3D 게임에서 카메라를 사용하여 스크린에 객체를 표시할 있습니다.