카메라 는 월드를 캡처하여 플레이어에게 보여주는 장치입니다. 카메라를 커스터마이즈 및 조정하여 게임의 프레젠테이션을 독창적으로 만들 수 있습니다. 하나의 씬에 카메라를 원하는 만큼 추가할 수 있습니다. 카메라가 렌더링하는 순서와 화면의 위치를 설정할 수 있고, 화면의 일부만을 렌더링하도록 설정할 수 있습니다.
Unity는 프로젝트가 사용하는 렌더 파이프라인에 따라 카메라 인스펙터에 다양한 프로퍼티를 표시합니다.
프로퍼티: | 기능: |
---|---|
Clear Flags | 화면의 어떤 부분을 클리어할지 여부를 결정합니다. 여러 개의 카메라를 사용하여 서로 다른 게임 요소를 드로우 할때 유용합니다. |
Background | 뷰의 모든 요소가 그려지고 스카이박스가 없을 경우 여백 화면에 적용될 색상입니다. |
Culling Mask | 카메라가 렌더링할 오브젝트의 레이어를 포함하거나 제외합니다. 오브젝트의 레이어를 인스펙터에 할당해야 합니다. |
Projection | 카메라의 원근 시뮬레이션 성능을 토글합니다. |
Perspective | 카메라가 원근감을 그대로 적용하여 오브젝트를 렌더링합니다. |
Orthographic | 카메라가 원근감 없이 오브젝트를 균일하게 렌더링합니다. NOTE: 디퍼드 렌더링은 직교 모드에서 지원되지 않습니다. 포워드 렌더링은 항상 사용됩니다. |
Size (when Orthographic is selected) | 직교를 선택했을 때의 카메라의 뷰포트 크기입니다. |
FOV Axis(Perspective를 선택한 경우) | 시야각(FOV) 축입니다. |
Horizontal | 카메라가 수평 시야각(FOV) 축을 사용합니다. |
Vertical | 카메라가 수직 시야각(FOV) 축을 사용합니다. |
Field of view (when Perspective is selected) | FOV Axis 드롭다운에 지정된 축을 따라 측정된 카메라의 시야각입니다. |
Physical Camera | 이 박스를 선택하면 이 카메라에 대한 Physical Camera 프로퍼티가 활성화됩니다. Physical Camera 프로퍼티가 활성화되면 Unity가 Focal Length, Sensor Size, Lens Shift와 같은 실제 카메라 속성을 시뮬레이션하는 프로퍼티를 사용하여 Field of View를 계산합니다. 이 박스를 선택하지 않으면 Physical Camera 프로퍼티가 인스펙터에 표시되지 않습니다. |
Focal Length | 카메라 센서와 카메라 렌즈 간의 거리(단위: mm)를 설정합니다. 값이 낮을수록 Field of View가 넓어지고 값이 높아지면 그 반대입니다. 이 값을 변경하면 Unity가 Field of View 프로퍼티를 그에 따라 자동으로 업데이트합니다. |
Sensor Type | 카메라가 시뮬레이션할 실제 카메라 포맷을 지정합니다. 목록에서 원하는 포맷을 선택하십시오. 카메라 포맷을 선택하면 Unity가 Sensor Size > X 및 Y 프로퍼티를 정확한 값으로 자동 설정합니다. Sensor Size 값을 수동으로 변경하면 Unity가 이 프로퍼티를 Custom으로 자동 설정합니다. |
Sensor Size | 카메라 센서의 크기(단위: mm)를 설정합니다. Sensor Type을 선택하면 Unity가 X 및 Y 값을 자동으로 설정합니다. 필요한 경우 커스텀 값을 입력할 수도 있습니다. |
X | 센서의 너비입니다. |
Y | 센서의 높이입니다. |
Lens Shift | 렌즈를 중앙에서 수평 또는 수직으로 이동시킵니다. 값은 센서 크기의 배수입니다. 예를 들어 X축을 따라 0.5만큼 이동하면 수평 크기의 반만큼 센서를 오프셋합니다. 렌즈 이동을 사용하여 카메라가 피사체에 비스듬할 때(예: 수렴하는 평행선) 발생하는 왜곡을 보정할 수 있습니다. 렌즈를 한쪽 축을 따라 이동시키면 카메라 절두체가 사선으로 변합니다. |
X | 수평 센서 오프셋입니다. |
Y | 수직 센서 오프셋입니다. |
Gate Fit |
필름 게이트(물리적 카메라 센서의 크기/종횡비)를 기준으로 해상도 게이트(게임(Game) 뷰의 크기/종횡비) 크기를 변경하기 위한 옵션입니다. 해상도 게이트와 필름 게이트에 관한 자세한 내용은 물리적 카메라 문서를 참조하십시오. |
Vertical | 해상도 게이트를 필름 게이트의 높이에 맞춥니다. 센서의 종횡비가 게임 뷰의 종횡비보다 큰 경우 Unity는 렌더링된 이미지의 양쪽을 자릅니다. 센서의 종횡비가 게임 뷰의 종횡비보다 작은 경우 Unity는 렌더링된 이미지의 양쪽을 오버스캔합니다. 이 설정을 선택하면 센서 너비(Sensor Size > X property)를 변경해도 렌더링된 이미지에 영향을 주지 않습니다. |
Horizontal | 해상도 게이트를 필름 게이트의 너비에 맞춥니다. 센서의 종횡비가 게임 뷰의 종횡비보다 큰 경우 Unity는 렌더링된 이미지의 상단과 하단을 오버스캔합니다. 센서의 종횡비가 게임 뷰의 종횡비보다 작은 경우, Unity는 렌더링된 이미지의 상단과 하단을 자릅니다. 이 설정을 선택하면 센서 높이(Sensor Size > Y property)를 변경해도 렌더링된 이미지에 영향을 주지 않습니다. |
Fill | 해상도 게이트를 필름 게이트의 너비나 높이 중에서 더 작은 쪽으로 맞춥니다. 이 경우 렌더링된 이미지가 잘립니다. |
Overscan | 해상도 게이트를 필름 게이트의 너비나 높이 중에서 더 큰 쪽으로 맞춥니다. 이 경우 렌더링된 이미지가 오버스캔됩니다. |
None | 해상도 게이트를 무시하고 필름 게이트만 사용합니다. 이 경우 렌더링된 이미지가 게임 뷰 종횡비에 맞게 늘어납니다. |
Clipping Planes | 렌더링을 시작 및 중지하기 위한 카메라부터의 거리입니다. |
Near | 드로잉이 수행될 카메라에 상대적으로 가장 가까운 포인트를 나타냅니다. |
Far | 드로잉이 수행될 카메라에 상대적으로 가장 먼 포인트를 나타냅니다. |
Viewport Rect | 카메라 뷰가 드로우될 화면의 위치를 나타내는 네 개의 값을 의미합니다. 뷰포트 좌표로 측정됩니다(0–1 사이의 값). |
X | 카메라 뷰가 드로우 될 수평 포지션 시작점입니다. |
Y | 카메라 뷰가 드로우 될 수직 포지션 시작점입니다. |
W (Width) | 화면상 카메라의 출력 너비 |
H (Height) | 화면상 카메라의 출력 높이 |
Depth | 드로우 순서의 카메라 포지션을 의미합니다. 값이 큰 카메라는 값이 작은 카메라 위에 드로우 됩니다. |
Rendering Path | 카메라가 사용할 렌더링 메서드를 정의하는 옵션입니다. |
Use Player Settings | 카메라는 플레이어 설정에서 설정한 렌더링 경로를 사용합니다. |
Vertex Lit | 카메라가 렌더링한 모든 오브젝트는 버텍스-릿 오브젝트로 렌더링됩니다. |
Forward | 모든 오브젝트가 머티리얼당 하나의 패스를 통해 렌더링됩니다. |
Deferred Lighting | 모든 오브젝트는 우선 조명 없이 드로우 되며, 그 후 모든 오브젝트의 조명이 렌더 대기열 끝에서 함께 렌더링됩니다. 참고: 카메라의 투사 모드가 직교로 설정된 경우, 이 값은 오버라이드 되며 카메라는 항상 포워드 렌더링을 사용합니다. |
Target Texture | 카메라 뷰의 출력을 담을 Render Texture에 대한 레퍼런스입니다. 이 레퍼런스를 설정하면 카메라의 화면 렌더링 성능이 비활성화됩니다. |
Occlusion Culling | 이 카메라에 대해 오클루전 컬링을 활성화합니다. 오클루전 컬링을 사용하면 다른 오브젝트(예: 벽)에 의해 가려진 오브젝트가 렌더링되지 않습니다. 자세한 내용은 오클루전 컬링을 참조하십시오. |
Allow HDR | 이 카메라에 대해 HDR 렌더링을 활성화합니다. 자세한 내용은 HDR 렌더링을 참조하십시오. |
Allow MSAA | 이 카메라에 대해 MSAA(multi-sample anti-aliasing)를 활성화합니다. |
Allow Dynamic Resolution | 이 카메라에 대해 다이내믹 해상도 렌더링을 활성화합니다. 자세한 내용은 다이내믹 해상도를 참조하십시오. |
Target Display | 어떤 외부 장치를 렌더할 것인지 정의합니다. 값은 1–8 사이입니다. |
카메라는 사용자의 게임을 플레이어에게 보여주는 데 있어 필수적입니다. 상상가능한 모든 종류의 효과를 얻기 위해 카메라는 커스터마이즈 하거나 스크립팅할 수 있으며 계층 관계를 만들 수도 있습니다. 퍼즐 게임의 경우 퍼즐 전체 뷰에 카메라를 정적으로 설정할 수 있습니다. FPS 슈팅 게임의 경우 플레이어 캐릭터에 대해 카메라를 부모로 설정하여 캐릭터에 눈높이에 배치하면 됩니다. 레이싱 게임의 경우, 카메라가 플레이어 자동차의 뒤를 따라오도록 할 수도 있습니다.
여러 개의 카메라를 생성하여 각각의 카메라에 서로 다른 Depth 를 할당할 수 있습니다. 카메라는 낮은 Depth 에서 깊은 Depth 순으로 드로우 됩니다. 즉, Depth 가 2인 카메라는 뎁스가 1인 카메라의 위에 드로우 됩니다. Normalized View Port Rectangle 프로퍼티의 값을 조정하여 화면의 카메라 뷰의 크기를 조절하거나 위치를 이동할 수 있습니다. 이를 통해 미사일 캠, 맵 뷰, 백미러 등 여러 개의 미니 뷰를 생성할 수 있습니다.
Unity는 여러 가지 렌더링 경로를 지원합니다. 게임 콘텐츠와 타겟 플랫폼/하드웨어에 따라 사용할 경로를 선택해야 합니다. 렌더링 경로마다 주로 광원과 그림자에 영향을 미치는 기능과 성능이 다릅니다. 프로젝트에서 사용하는 렌더링 경로는 Player 설정에서 선택됩니다. 또한 각 카메라에 대해 오버라이드할 수도 있습니다.
렌더링 경로에 대한 자세한 내용은 렌더링 패스 페이지를 참조하십시오.
각 카메라는 뷰를 렌더링할 때 색상과 뎁스 정보를 저장합니다. 드로우 되지 않은 화면 공간은 공백이 되며, 스카이박스를 디폴트로 보여줍니다. 여러 개의 카메라를 사용하는 경우, 각 카메라는 색상과 뎁스 정보를 버퍼에 저장하며, 각각의 카메라가 렌더링할 때마다 더 많은 데이터를 축적합니다. 사용자의 씬에 있는 특정 카메라가 뷰를 렌더링할 경우 Clear Flags 를 설정하여 버퍼 정보의 다른 컬렉션을 지울 수 있습니다. 그 방법으로는 다음과 같은 네 가지 옵션이 있습니다.
이것은 기본 설정입니다. 해당 스크린의 빈 공간에는 현재 카메라의 스카이박스가 나타납니다. 현재 카메라에 스카이박스가 설정되어 있지 않을 경우 라이팅 창(메뉴: Window > Rendering > Lighting)에서 선택한 스카이박스로 기본 설정됩니다. 그 후에는 Background Color 로 돌아갑니다. 또는 Skybox 컴포넌트를 해당 카메라에 추가할 수 있습니다. 새로운 스카이박스를 생성하고 싶을 경우 이 가이드를 참조하십시오.
스크린의 빈 공간은 현재 카메라의 Background Color 로 채워집니다.
환경 안에서 플레이어의 총이 잘리지 않게 드로우하려면, 환경을 드로우할 때 카메라 하나의 Depth 를 0으로 설정하고, 총만 드로우할 때는 다른 카메라의 Depth 를 1로 설정해야 합니다. 총을 그릴 카메라의 Clear Flags 를 depth only 으로 설정해야 합니다. 이 경우 해당 화면 환경의 그래픽 디스플레이가 유지되며 각 오브젝트의 3D 공백상 위치에 관한 모든 정보는 버려집니다. 총이 드로우되면, 총과 벽의 거리와는 관계 없이 모든 불투명한 부분을 완전히 덮게 됩니다.
이 모드로 설정하면 컬러 및 뎁스 버퍼가 지워지지 않습니다. 따라서 각 프레임이 다음 프레임 위에 드로우되어 얼룩진 듯한 효과를 얻을 수 있습니다. 이 모두는 게임에서는 보통 사용되지 않고, 사용자 셰이더와 함께 사용되는 경우가 많습니다.
일부 GPU(대부분 모바일 GPUs)의 경우 화면을 지우지 않으면 화면의 콘텐츠가 다음 프레임에서 정의되지 않을 수 있다는 점을 유의하십시오. 일부 시스템에서는 스크린에 이전 프레임 이미지나 솔리드 블랙 화면, 임의로 설정된 색상 픽셀이 포함될 수 있습니다.
Near 프로퍼티와 Far Clip Plane 프로퍼티는 Camera 뷰의 시작점과 끝나는 지점을 결정합니다. 평면은 카메라의 방향과 수직으로 놓이고 카메라의 포지션으로부터 측정됩니다. Near plane 은 렌더링 되는 가장 가까운 지점이고, Far plane 은 가장 멀리 있는 지점입니다.
클리핑 평면은 또한 뎁스 버퍼 정밀도가 씬 전체에 어떻게 분포되는 지 결정합니다. 일반적으로 더 높은 정밀도를 얻기 위해서는 Near plane 을 최대한 멀리 이동해야 합니다.
근접 및 원거리 클립 평면과 카메라의 FOV에 의해 정의된 평면을 합치면 일반적으로 카메라의 절두체 라 불리는 형태를 이룹니다. Unity에서 오브젝트를 렌더링할 때 절두체에서 완전히 벗어나 있는 오브젝트는 표시되지 않습니다. 이를 절두체 컬링이라고 합니다. 절두체 컬링은 게임에서 오클루전 컬링을 사용하는지 여부와 관계없이 발생합니다.
성능 향상을 위해 작은 오브젝트를 미리 컬링하고 싶을 수 있습니다. 예를 들어 작은 바위나 파편은 큰 건물에 비해 가까운 거리에서도 안 보이도록 처리할 수 있습니다. 작은 오브젝트를 별도의 레이어에 두고 Camera.layerCullDistances 스크립트 함수를 사용하여 레이어당 컬링 거리를 설정할 수 있습니다.
Culling Mask 는 레이어를 사용하여 오브젝트 그룹을 선택적으로 렌더링하는 데 사용됩니다. 레이어 사용법에 대한 자세한 내용은 여기를 참조하십시오.
Normalized Viewport Rectangle 는 특히 화면의 특정 부분을 정의하여 현재 카메라 뷰가 드로우되도록 합니다. 화면의 오른쪽 하단에 맵 뷰를, 왼쪽 상단에는 미사일 팁 뷰를 배치할 수 있습니다. 디자인 작업을 하여 Viewport Rectangle 로 일부 유니크한 동작을 만들어낼 수 있습니다.
Normalized Viewport Rectangle 를 이용하여 2인 플레이어용 화면 분할 효과를 쉽게 만들 수 있습니다. 두 개의 카메라를 생성한 후, 두 카메라의 H값을 0.5로 설정한 후 플레이어1의 Y값을 0.5로, 플레이어2의 Y값을 0으로 설정합니다. 이렇게 하면 플레이어1의 카메라가 화면의 상단에 나타나고, 플레이어2의 카메라의 남은 절반 부분인 하단에 나타납니다.
카메라를 Orthographic 로 설정하면 카메라 뷰의 모든 원근감이 제거됩니다. 등거리 게임이나 2D 게임을 만드는 데 특히 유용한 기능입니다.
안개는 직교 카메라 모드에서는 균일하게 렌더링되기 때문에 생각했던 것과 다를 수 있다는 점을 유의해야 합니다. 그 이유는 포스트 원근감이 있는 공백의 Z 좌표가 안개 “뎁스”에 사용되기 때문입니다. 이 기능은 직교 카메라에서는 정확도가 떨어지지만 렌더링 시에는 성능 개선을 위해 사용됩니다.
이 기능은 다른 오브젝트에 적용 가능한 Texture에 카메라 뷰를 배치합니다. 이를 통해 스포츠 경기장의 비디오 모니터, 감시 카메라, 반사 등을 만드는 것이 용이해집니다.
카메라에는 최대 8개의 타겟 디스플레이 설정이 있습니다. 1개에서 최대 8개의 모니터를 렌더링에 사용할 수 있습니다. 이 기능은 PC, Mac, Linux에서만 지원됩니다. 게임 뷰의 경우 카메라 인스펙터에서 선택된 디스플레이가 보여집니다.