Unity 카메라 뷰 절두체 이해하기
이 문서에서는 Unity의 카메라에서 나오는 절두체의 크기와 거리 계산 방법을 설명합니다. 카메라 사용 시 절두체의 이해는 매우 중요하며, 여러 상황에서 활용할 수 있습니다.
1. 절두체란?
절두체는 카메라가 보는 시야를 정의합니다. 이는 특정 거리에서 카메라가 볼 수 있는 공간을 사각형으로 표현한 것입니다. 이 사각형의 크기를 알면 카메라와 물체 간의 거리를 조정하여 특정 물체를 화면에 온전히 담을 수 있습니다.
2. 절두체의 높이 계산
일정 거리에서 절두체의 높이를 구하는 공식은 다음과 같습니다.
var frustumHeight = 2.0f * distance * Mathf.Tan(camera.fieldOfView * 0.5f * Mathf.Deg2Rad);
이 공식은 플레이어 혹은 특정 오브젝트와의 거리와 카메라의 시야각(FOV)을 사용하여 계산됩니다.
3. 거리 계산
특정 절두체 높이에 대해 거리를 계산하려면 다음 공식을 사용할 수 있습니다.
var distance = frustumHeight * 0.5f / Mathf.Tan(camera.fieldOfView * 0.5f * Mathf.Deg2Rad);
이 공식을 통해 카메라가 특정 높이의 절두체를 안정적으로 유지하기 위해 필요한 거리를 알 수 있습니다.
4. FOV 각도 계산
거리에 따른 FOV 각도를 계산하는 공식은 다음과 같습니다.
var cameraFieldOfView = 2.0f * Mathf.Atan(frustumHeight * 0.5f / distance) * Mathf.Rad2Deg;
이 계산을 통해 원하는 절두체의 높이를 기준으로 카메라의 시야각을 조정할 수 있습니다.
5. 절두체의 너비
절두체의 너비를 계산하는 방법은 다음과 같습니다.
var frustumWidth = frustumHeight * camera.aspect;
var frustumHeight = frustumWidth / camera.aspect;
이러한 계산을 통해 적절한 비율로 카메라의 뷰를 설정할 수 있습니다.
6. 활용 예제
예제 1: 플레이어를 중심에 유지하기
움직이는 카메라가 플레이어를 항상 화면 중앙에 담는 방식:
void Update() {
float distance = 5.0f; // 플레이어와의 거리
float frustumHeight = 2.0f * distance * Mathf.Tan(Camera.main.fieldOfView * 0.5f * Mathf.Deg2Rad);
Vector3 cameraPosition = new Vector3(player.position.x, player.position.y + frustumHeight / 2, player.position.z - distance);
Camera.main.transform.position = cameraPosition;
}
예제 2: 절두체 크기에 따른 UI 조정
절두체 높이에 따라 UI 요소의 크기를 조정할 때:
void AdjustUI() {
float frustumHeight = 2.0f * 5.0f * Mathf.Tan(Camera.main.fieldOfView * 0.5f * Mathf.Deg2Rad);
uiElement.sizeDelta = new Vector2(uiElement.sizeDelta.x, frustumHeight);
}
결론
Unity의 카메라 뷰 절두체를 이해하고 활용함으로써 다양한 상황에서 효과적인 카메라 설정 및 UI 조정이 가능합니다. 이 문서에서 제공된 공식과 예제들은 실제 유니티 프로젝트에서 유용하게 사용할 수 있습니다.