주로

[유니티 기초] 카메라 컴포넌트(Camera Component, Built-in Render Pipeline) 본문

프로그래밍/유니티(C#)

[유니티 기초] 카메라 컴포넌트(Camera Component, Built-in Render Pipeline)

_주로 2022. 5. 3. 18:10
반응형

Unity Camera Object Inspector Window

 유니티에서 프로젝트를 생성하거나 직접 카메라를 생성하면 기본적으로 3개의 컴포넌트를 가진다.

 그중, Transform 컴포넌트는 오브젝트의 위치, 크기, 방향 조정을 하고, Audio Listener는 오디오를 플레이어에게 전달하는 역할을 한다. Camera Object는 Hierarachy 윈도우에서 우클릭 생성할 수 있지만, Create Empty를 통해 오브젝트를 생성 후 Camera Object 컴포넌트를 추가하는 것으로 카메라를 생성할 수 있다.

 

Empty Object, Camera Component

카메라 컴포넌트에는 여러 속성이 표시되는데 어떤 Render Pipeline(RP)을 사용하는지에 따라 다른 속성을 표시한다. 특별한 RP를 사용하지 않는다면 Built-in RP를 사용하게 된다. Built-in RP를 기준으로 Camera Component Properties를 살펴보면 다음과 같다.

 

Camera Component

다음은 각 속성에 따른 설명이다.

 

  • Clear Flags
    • Clrat Flags의 Listbox를 펼쳐보면 "Skybox", "Solid box", "Depth only", "Don't clear"가 있다.
      Clear Flags 속성은 카메라 영역의 빈 부분(배경)을 어떻게 처리할지 정한다.
    • Sky Box : 스카이박스로 빈 부분을 채워 넣는다.(적용 안됨)
    • Solid Box : 단색의 배경으로 빈 부분을 채워 넣는다.
    • Depth Only : Culling Mask 속성에서 지정된 Layer를 채워 넣고 이외의 영역을 투명(transparent)으로 처리한다.
    • Don't Clear : 그래픽을 이전 프레임에 그려진 걸 지우지 않고 위에 덧그린다.
  • Backgound
    • 카메라 영역의 빈 부분에 채워질 색을 선정한다. (Sky Box는 사용할 수 없다.)
  • Culling Mask
    • 지정된 "Layer"만 그린다.
  • Projection
    • Perspective : 원근법을 사용하여 화면을 그린다. (멀리 있는 오브젝트는 작아짐)
    • Orthographic : 원근법을 사용하지 않고 그린다.(멀리 있어도 크기가 변하지 않는다.)
  • FOV Axis
    • 지정된 축을 기준으로 시야각을 지정한다.
    • Projection 속성이 "Perspective"로 지정되어야 사용할 수 있다.
    • "horizontal"을 지정하면 수평 기준으로 시야각이 조정된다.(Field of View 속성에서 조절 가능)
    • "Vertical"을 지정하면 수직 기준으로 시야각이 조정된다.(Field of View 속성에서 조절 가능)
    • "Horizontal"이든 "Vertical"이든 종횡비가 일정하게 고정된 채로 시야각이 조정된다
  • Field of View
    • FOV Axis에서 지정한 기준으로 시야각의 수치를 조절한다.

 

  • Physical Camera
    • Physical Camera 체크 박스가 Enable 상태일 때 속성 Field가 표시된다.(아래의 그림 참고)
    • 실제 카메라 렌즈와 센서를 모방하며 Field of View를 계산한다. (아래의 그림 참고)

Physical Camera Tick Enable
카메라 속 렌즈와 센서의 단순화

  • Clipping Planes
    • 카메라 오브젝트로부터 Near 이상 Far 이하의 Unit거리 안에 있는 것들만 랜더링 한다.
  • Viewpoint Rect
    • (카메라 영역이 아닌 유저에게 보이는) 화면에서 표시될 영역
    • 'X', 'Y'는 화면 영역의 좌측 상단의 지점, 'W'는 가로폭, 'H'는 세로 폭을 의미한다.
      아래의 이미지와 같이 카메라 영역의 가운데 Square 오브젝트가 있지만 Game 윈도우에서는 좌측에 반만 사용되고 있다

VIewpoint Rect 사용 예시

  • Depth
    • 랜더링 우선순위이다. 숫자가 낮을수록 우선순위가 높다.
    • 우선순위가 낮을수록 먼저 랜더링 된 화면 위에 덧대서 랜더링 한다.
  • Rendering Path 
    • 카메라에 사용될 렌더링 방식을 지정한다.
    • User Graphics Settings : "Edit" > "Project Settings" > "Graphics 카테고리"를 따라가면 설정을 확인할 수 있다. User Graphics Settings는 따로 설정을 하지 않았다면 해당 설정은 "Built-in RP"에 해당할 것이다.
    • "Forward", "Deffered", "Lagacy Vertex Lit", "Lagacy Deffered(light prepass)", 이들은 랜더링 방식인데 별도의 문서에서 더 자세하게 다루겠다.

  • Target Texture
    • 텍스쳐를 Camera가 비추고 있는 영역으로 만들 수 있다.
    • 거울을 표현할 때, 사용된다. 아래의 링크 이미지를 통해 사이트를 방문하면 렌즈의 예시를 볼 수 있다.
    • Meterial의 Shader를 Unit/Texture로 지정하고 Render Texture를 새로 만들어 Meterial에 맵핑한 뒤, 카메라의 Target Textrue로 Render Textrue를 지정하면 Camera가 렌더링 할 영역이 텍스쳐가 되고 그 Render Texture를 텍스쳐로 가진 Meterial을 Object에 지정하면 Object는 Camera가 비추는 영역을 Textrue로 입혀지게 된다.
      (과정이 꾀 복잡하지만 한 번만 따라 하고 이해하면 금방 이해된다.)
 

유니티 Render Texture를 사용하여 Scope 만들기

FPS 게임을 하다보면 Scope를 사용하는 경우가 있다. 기본적인 망원경 효과를 만들려면 Render Texture를 사용해야 한다.  실린더 3개를 활용하여 몸체와 렌즈를 만들어주었다. 몸체는 크게 중요한 것

seongju0007.tistory.com

  • Occlusion Culling
    • 기존에 가장 멀리(뒤에) 있는 오브젝트를 먼저 렌더 하고 앞에 있는 오브젝트를 렌더 하는데, 앞에 있는 오브젝트에 의해 뒤에 있는 오브젝트가 가져질 때, 렌더 하지 않음.
  • HDR
    • 일종의 픽셀 정보 처리 방법이다.
  • MSAA
    • Anti-aliasing, 안티 얼라이어싱을 위한 여러 기법 중 하나이다. 본 컴포넌트에서는 안티-얼라이어싱으로 MSAA를 기본 제공한다.
  • Allow Dynamic Resolution
    • 아래의 이미지 링크를 통해 자세한 정보 확인.
    • 일종의 하드웨어가 과부하 상태일 때, 해상도를 낮춰 프레임을 향상시키는 기능을 한다.
 

다이내믹 해상도 - Unity 매뉴얼

다이내믹 해상도는 개별 렌더 타겟을 동적으로 스케일링하여 GPU의 부하를 줄여주는 카메라 설정입니다. 애플리케이션의 프레임 속도가 감소하는 경우에는 일관된 프레임 속도를 유지하기 위해

docs.unity3d.com

  • Target Display
    • 다중 모니터를 사용할 경우 표시될 모니터를 지정한다.

 

아래의 이미지링크를 클릭하여 카메라 컴포넌트에 관한 "유니티 Documentation" 공식 문서를 확인할 수 있다.

 

Unity - Manual: Camera

Camera Switch to Scripting CamerasA component which creates an image of a particular viewpoint in your scene. The output is either drawn to the screen or captured as a texture. More infoSee in Glossary are the devices that capture and display the world to

docs.unity3d.com

반응형
Comments