Version: 2018.1
카메라에서 나오는 레이
크거나 작은 느낌의 인상 만들기

사선 절두체(Oblique Frustum) 사용

기본적으로 뷰 절두체는 카메라의 중심선 주위에 대칭을 이루도록 배열되지만 꼭 그래야 하는 것은 아닙니다. 절두체를 “사선”으로 배열하여 한 쪽이 중심선과 이루는 각도가 반대 쪽보다 작게 할 수 있습니다. 이렇게 하면 인쇄된 사진의 한 쪽을 잘라내는 듯한 효과가 나타납니다. 그러면 이미지 한 쪽의 원근이 더 압축된 것처럼 보여 보는 사람은 해당 가장자리에 보이는 오브젝트에 매우 가깝다는 인상을 받습니다. 사용 방법의 예로는 절두체가 아래쪽 가장자리에서 평평한 자동차 경주 게임을 들 수 있습니다. 이 경우 보는 사람이 도로에 더 가까운 것처럼 보여 속도감이 고조됩니다.

Camera 클래스에는 절두체의 경사를 설정하는 기능이 없지만, 프로젝션 매트릭스를 변경하여 매우 쉽게 설정할 수 있습니다.

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이면 절두체의 한 쪽이 중심선을 기준으로 완전히 평평함을 나타냅니다. 범위를 벗어난 값을 사용할 수 있지만, 이렇게 해야 하는 경우는 드뭅니다.

카메라에서 나오는 레이
크거나 작은 느낌의 인상 만들기