Action disabled: source

비스듬한 프러스텀(Oblique Frustum)의 사용

기본적으로 뷰 프러스텀(view frustum)은 카메라의 중신 선 주위에 대칭으로 배열되어 있으나 반드시 그러할 필요가 있는 것은 아닙니다. 프러스텀은 사선으로 "비스듬하게" 만들 수 있으며, 이는 한 쪽이 반대쪽보다 중앙 라인에 대해 더 작은 각도를 가진다는 것을 의미합니다. 이 효과는 프린트 된 사진을 들어 한쪽 가장자리를 잘라내는 것과 같습니다. 이렇게 하면 이미지의 한쪽 면에 대한 관점을 더 좁게 만들어 관찰자가 가장자리에서 볼 수 있은 오브젝트와 매우 가까운 것 같은 인상을 줍니다. 이것이 어떻게 사용될 수 있는 지의 예제는 프러스텀이 하단 가장자리에 평평하게 자리할 수 있는 자동차 레이싱 게임입니다. 이는 관람자가 도로과 더 가깝게 보이게 하여 속도감을 더해 줍니다.

카메라에는 프러스텀의 사각을 설정하는 기능이 없지만, 투사 메트릭스(projection matrix)을 변경하여 쉽게 작업할 수 있습니다:-

function SetObliqueness(horizObl: float, vertObl: float;) {
	var mat: Matrix4x4 = camera.projectionMatrix;
	mat[0, 2] = horizObl;
	mat[1, 2] = vertObl;
	camera.projectionMatrix = mat;
}

고맙게도, 투사 메트릭스(projection matrix)가 이것을 활용하기 위해 어떻게 작동하는 지는 이해할 필요가 없습니다. horizObl 와 vertObl 값은 각각 수평과 수직의 비스듬함 를 설정합니다. 0 값은 비스듬함이 없는 상태를 말합니다. 양수 값은 프러스텀을 오른쪽과 윗쪽으로 이동시키고, 결과적으로 왼쪽과 아래 면을 평평하게 합니다. 음수 값은 왼쪽과 아래쪽으로 이동하고 결과적으로 프러스텀의 오른쪽과 위쪽을 평평하게 합니다. 이 효과는 카메라에 스크립트가 추가되면 확인할 수 있는데, 게임이 실행 중에 게임을 씬 뷰(scene view)로 스위치 합니다; 사용자가 인스펙터(inspector)에서 horizObl 와 vertObl 값을 변경함에 따라 카메라 프로스텀의 실선 프레임 그림(wireframe depiction)도 변할 것 입니다.

역링크