기본적으로 뷰 절두체는 카메라의 중심선 주위에 대칭을 이루도록 배열되지만 꼭 그래야 하는 것은 아닙니다. 절두체를 "사선"으로 배열하여 한 쪽이 중심선과 이루는 각도가 반대쪽보다 작게 되도록 할 수 있습니다. 그러면 이미지 한 쪽의 원근이 더 압축된 것처럼 보여 보는 사람은 해당 가장자리에 보이는 오브젝트에 매우 가깝다는 인상을 받습니다. 사용 방법의 예로는 절두체가 아래쪽 가장자리에서 평평하게 처리된 자동차 경주 게임을 들 수 있습니다. 이 경우 보는 사람이 도로에 더 가까운 것처럼 보여 속도감이 고조됩니다.
Camera 컴포넌트에는 절두체의 경사를 설정하는 기능이 없지만, 카메라의 Physical Camera 프로퍼티를 활성화하고 렌즈 시프트를 적용하거나 카메라의 투사 매트릭스를 변경하는 스크립트를 추가하여 설정할 수 있습니다.
카메라의 Physical Camera 프로퍼티를 활성화하여 Lens Shift 옵션을 노출합니다. 이러한 프로퍼티를 사용하여 X축과 Y축을 따라 카메라의 초점의 중심을 오프셋하여 렌더링된 이미지의 왜곡을 최소화할 수 있습니다.
렌즈를 시프팅하면 시프트 방향 반대쪽의 절두체 각도가 작아집니다. 예를 들어 렌즈를 위쪽으로 시프팅하면 절두체 하단과 카메라의 중심선 사이의 각도가 작아집니다.
물리적 카메라 옵션에 대한 자세한 내용은 물리적 카메라에 관한 문서를 참조하십시오.
개별 Physical Camera 프로퍼티를 설정하는 자세한 방법은 Camera 컴포넌트 레퍼런스를 참조하십시오.
다음 스크립트는 카메라의 투사 매트릭스를 변경하여 사선 절두체를 빠르게 구현하는 방법을 나타냅니다. 게임이 Play 모드에서 실행 중인 경우에만 스크립트의 효과가 나타납니다.
using UnityEngine;
using System.Collections;
public class ExampleScript : MonoBehaviour {
void SetObliqueness(float horizObl, float vertObl) {
Matrix4x4 mat = Camera.main.projectionMatrix;
mat[0, 2] = horizObl;
mat[1, 2] = vertObl;
Camera.main.projectionMatrix = mat;
}
}
C# 스크립트 예제
function SetObliqueness(horizObl: float, vertObl: float) {
var mat: Matrix4x4 = camera.projectionMatrix;
mat[0, 2] = horizObl;
mat[1, 2] = vertObl;
camera.projectionMatrix = mat;
}
JS 스크립트 예제
다행히 프로젝션 매트릭스의 작동 원리를 몰라도 이 기능을 사용할 수 있습니다. horizObl과 vertObl 값에 따라 가로 및 세로 경사도가 설정됩니다. 값이 영(0)이면 경사가 없습니다. 값이 양수면 절두체가 오른쪽이나 위쪽으로 이동하여 왼쪽이나 아래쪽이 평평해집니다. 값이 음수면 절두체가 왼쪽 또는 아래쪽으로 이동하여 오른쪽이나 위쪽이 평평해집니다. 스크립트를 카메라에 추가하고 게임 실행 중에 씬 뷰로 게임을 전환하면 효과를 바로 확인할 수 있습니다. 카메라 절두체의 와이어프레임 묘사는 인스펙터에서 horizObl 및 vertObl의 값을 바꾸면 변합니다. 변수 하나의 값이 1 또는 –1이면 절두체의 한 쪽이 중심선을 기준으로 완전히 평평함을 나타냅니다. 범위를 벗어난 값을 사용할 수 있지만, 이렇게 해야 하는 경우는 드뭅니다.
2018–10–05 페이지 수정됨
Unity 2018.2에서 Lens Shift 옵션 추가됨