절두체 는 피라미드 같은 모양의 윗부분을 밑면에 병렬로 잘라낸 입체 형상을 가리킵니다. 이는 원근 카메라에 의해 보여지고 렌더링되는 영역의 형상입니다. 다음의 실험 예제를 통해 그 이유를 살펴보겠습니다.
빗자루 손잡이 또는 연필과 같은 곧은 막대를 들고 카메라를 향해 사진을 찍는다고 가정해 봅시다. 막대가 카메라 렌즈에 수직 방향으로 놓인 것 처럼 사진의 중앙에 놓이게 되면 막대의 끝부분만 사진에 원형으로 나타날 것이고, 다른 부분은 전부 보이지 않게 됩니다. 막대를 위 방향으로 움직이면 막대의 아랫면이 점점 보이기 시작하겠지만, 막대를 위쪽으로 비스듬히 올리면 다시 가려지게 됩니다. 그리고, 막대를 계속 위로 올리면서 각도를 같이 올리면, 동그란 끝 점은 결국 사진의 맨 위 가장자리까지 올라가게 됩니다. 이 지점에서 막대를 따라 만들어지는 선보다 월드 공간 위에 있는 모든 오브젝트는 사진에 나타나지 않게 됩니다.
막대는 자유롭게 이동할 수도 있고 상하좌우로 회전할 수도 있습니다. “가려진” 막대의 각도는 단순히 양 축에서 화면 중심과의 거리에 따라 변화합니다.
이 사고 실험을 통해 카메라 이미지에서 각 점은 실제로 월드 공간의 선에 대응되며 해당 선 위에 있는 단일 점 만을 이미지에서 볼 수 있다는 점을 알 수 있습니다. 선 포지션 뒤에 있는 모든 것은 가려집니다.
이미지의 외곽선은 이미지의 모서리에 해당하는 분기선으로 정의됩니다. 외곽선을 카메라 방향 뒤로 연장하면 한 지점에서 수렴합니다. Unity에서는 카메라의 변환 포지션에서 이렇게 수렴하며, 해당 지점을 원근 중심이라고 합니다. 원근 중심에서 화면의 상하단 중점을 각각 잇는 선을 연장하였을 때 생기는 각도를 시야 범위라고 부르며, FOV로 자주 줄여 사용합니다.
위에서 언급한 바와 같이 이미지 모서리에서 연장한 분기선 밖에 있는 것은 카메라에 보이지 않게 됩니다. 이와 더불어 렌더링 대상에는 두 개의 제약이 더 있습니다. 원거리 절단면과 근거리 절단면은 모두 카메라의 XY 평면에 평행하게 위치하고 있으며, 평면의 중심선을 따라 일정 거리만큼 떨어져 있습니다. 만일 어떤 것이 근거리 절단면보다 카메라에 근접하거나 원거리 절단면보다 카메라에 멀리 떨어져있는 경우에는 렌더링되지 않습니다.
두 클리핑 평면과 이미지 모서리에서 발산하는 선은 잘려나간 피라미드 형태를 만들어내며 이것이 바로 뷰 절두체입니다.
Objects, lights, and shadows might flicker if they’re far away. The flickering occurs because distances are too large to calculate positions precisely with floating point math. In each frame, the object, light, or shadow is at a slightly different position, so it moves in and out of the view frustum.
Minimise flickering using one of the following approaches:
Unity calculates lights and shadows with the world space position as the reference point, for example 0, 0, 0
in a 3D scene. Flickering occurs when lights and shadows are far away from the world space position. To minimise flickering, you can enable camera-relative culling, so Unity uses the camera position as the relative position for shadow calculations. See Culling settings in Graphics settings.