카메라에서 주어진 거리에 있는 프러스텀(Frustum)의 크기

카메라에서 일정 거리에 있는 뷰 프러스텀(view frustum)의 한 단면은 가시적인 영역을 프레임화 하는 월드 공간에서 사각형으로 정의됩니다. 이는 종종 주어진 거리에서 이 사각형의 크기를 계산하거나, 주어진 크기에서 이 사각형이 위치하는 곳까지의 거리를 계산하는 데 유용합니다. 예를 들어, 만일 움직이는 카메라가 한 오브젝트(플레이와 같은)을 완전히 시야 내에 보존해야 할 필요가 있는 경우, 그 오브젝트의 일부가 잘릴 수 있으므로 너무 가까이 접근하지 말아야 합니다.

주어진 거리에서 프러스텀의 높이(양 월드 단위 모두)는 다음 공식으로 구할 수 있습니다:-

var frustumHeight = 2.0 * distance * Mathf.Tan(camera.fieldOfView * 0.5 * Mathf.Deg2Rad);

…그리고 주어진 특정 프러스텀의 높이에 필요한 거리를 계산하려면, 이 과정을 뒤집으면 됩니다:-

var distance = frustumHeight * 0.5 / Mathf.Tan(camera.fieldOfView * 0.5 * Mathf.Deg2Rad);

높이와 거리를 알고 있다면 FOV 각도 역시 계산 할 수 있습니다:-

var camera.fieldOfView = 2 * Mathf.Atan(frustumHeight * 0.5 / distance) * Mathf.Rad2Deg;

이 계산 각각은 프러스텀의 높이와 관련이 있지만 이는 넓이(혹은 반대로)로도 쉽게 구할 수 있습니다:-

var frustumWidth = frustumHeight * camera.aspect;
var frustumHeight = frustumWidth / camera.aspect;

역링크