ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Unity - Main Camera - Inspector
    개발상식

    안녕하세요.

     

     

    이 카테고리에서는 개발 상식에 대해 제가 기억하고

     

    또한, 학습하기 위한 글들을 올릴 예정입니다.

     

    Unity 프로젝트를 처음 생성하면

    HierarchyMain CameraDirectional Light가 생성 됩니다.

     

    처음 생성할 때 기본적으로 필요한 것을 생성해 주는 것으로

     

    Main CameraGame View의 모습을 보여 주며

     

    Directional Light는 조명을 담당한다고 간략하게 알고 작업을 해왔습니다.

     

    하지만, Main CameraInspector 상의 옵션들의  명칭만 듣고

     

    무엇을 사용하는 기능인가?라는 질문을 들었을 시

    정말로 머리가 새하얘 졌습니다.


    오늘은 

     

    Main CameraDirectional Light 중 

     

    Main CameraInspector 창의 옵션들을 학습하고 자

     

    글을 쓰게 되었습니다.


    Main Camera Inspector

    - Clear Flags -

    Clear Flags는 배경을 채우는 방식을 결정하는 옵션입니다.

     

    Unity 2019.4.34 f1 버전 기준으로

     

    옵션은 4가지가 존재합니다.

     

    Camera Clear Flags

    1) Skybox

     

    여백을 지정한 Skybox로 처리하겠다는 말입니다.

     

    게임에서 하늘을 표현하는 대표적인 방식으로는

     

    SkyboxSkyDome이 있습니다.

     

    Skybox는 카메라가 볼 수 있는 하늘의 여섯 방면 (left, front, right, back, top, bottom)의 이미지를

     

    Cube 형태로 배치에 표현하며

     

    SkyDome은 돔(dome) 형태의 메시에 하늘의 이미지 텍스처를 입혀 구현합니다.

     

    2) Solid color

     

    여백을 하나의 색으로 처리하겠다는 뜻입니다.

     

    직접 색을 지정해 줄 수 있으며

    Background RGBA를 (1, 0, 0, 0)으로 지정해 주면

    Game View의 배경이 지정해 준 RGBA (1, 0, 0, 0) 으로 바뀌게 됩니다.

     

    3) Depth only

     

    여백을 투명처리하는 것입니다.

     

    빈 공간을 투명처리하며 카메라 2대 이상 한 화면에 합성할 때 주로 사용(with Culling Mask) 한다고 합니다.

     

    4) Don't Clear

     

    여백을 투명처리하는데, 이전에 있던 frame을 지우지 않겠다는 것 (잔상이 남게 됨)이라고 합니다.

     

    자원이 절약되고 최적화가 더 잘된다고 하며 

     

    이전의 화면 위에다 그린다고 생각하시면 됩니다.

     

    SkyboxSolid Color는 프로젝트 작업을 하면서 사용을 해봤지만

     

    Depth OnlyDon't Clear 같은 경우에는 사용을 해본 적이 없습니다.

     

    확 와닿진 않지만, 전 최적화 작업을 능숙하게 다룰 줄 아는 개발자가 꿈이니 꼭 써보도록 하겠습니다.


    - Culling Mask -

     

    카메라가 어떤 레이어를 렌더링 해야 하는지 설정하는 것입니다.

     

    현재는 새로 만든 프로젝트의 초기 화면이라 Layer가 따로 설정되어 있는 것이 없지만

     

    레이어 마스크 (Layer Mask)는 특정한 레이어(Layer)로 지정한 오브젝트만 카메라에 노출을 시킨다든지

     

    혹은 특정한 레이어(Layer)만 노출에서 제외되도록 컬링 마스크(Culling Mask)를 

     

    설정할 때 주로 사용된다고 합니다.

     

    각 오브젝트마다 Layer를 변경, 설정할 수 있으며, Layer를 추가 생성할 수도 있습니다.

     

    즉, 카메라의 보이는 오브젝트들을 선택적으로 보이기 위한 옵션입니다.

     

    지난 C.C.I 프로젝트에서 미니맵을 구현할 때 Culling Mask를 사용했었습니다.


    - Projection -

     

    Perspective

     

    원근감이 있으며 (3차원 공간에서 보통 사용)

     

    Orthographic

     

    원근감이 사라지며 (2차원 공간에서 보통 사용)

     

    합니다.

     

    2D 프로젝트를 진행 시 Orthographic을 사용하고

     

    3D 프로젝트를 진행 시 Perspective를 사용합니다.

     

    2D, 3D 프로젝트를 진행하면서 신경 쓰지 못했던 부분입니다.

    단순히 UI 작업을 할 때나 2D프로젝트를 작업할 시

     

    Scene View 부분의 2D를 눌러 작업을 했었는데...

     

    이렇게 지식 +1을 얻어 성장해 가고 있습니다 후후..

    추가적으로 Orthographic에서

     

    그림 픽셀 크기와 화면 픽셀을 1:1로 하려면 목표 화면 해상도 높이의 반값으로 설정해야 하며

     

    카메라 Orthographic Size

    -pixels per unit 이 100 -> 1/200

    -pixels per unit 이 10 -> 1/20    

    -pixels per unit 이 1 -> 1/2        

    -세로 사이즈 / (유닛당 픽셀 * 2) 

     

    라고 합니다. (메모)


    - Field of View -

     

    카메라의 시야 각으로 Unity 카메라가 캡처할 Frustum의 절 두체 각도를 의미한다고 합니다.

     

    1
    2

    이렇게 Field of View

     

    쉽게 말해 시야 범위가 조절이 가능하며

     

    FOV Axis 에는 HorizontalVertical이 존재합니다.

     

    Horizontal

     

    카메라 수평 시야각 (FOV) 축을 사용합니다.

     

    Vertical

     

    카메라 수평 시야각 (FOV) 축을 사용합니다.

     

    (Unity 매뉴얼)

     

    ...

     

    쉽게 말해 Field Of View 적용을 위한 축으로

     

    Horizontal(가로) / Vertical(세로) 두 가지가 존재한다고 합니다.

     

     

    Field Of View의 값을 조절해가며 계속 FOV Axis 값을 Horizontal <─> Vertical을 바꿔가며 

     

    Scene ViewGame View를 확인했지만 차이점을 찾지 못했습니다...

     

    제 눈이 최면에 걸린듯한..

     

    (명확하게 차이점을 찾으면 수정 및 추가하겠습니다.)


    - Clipping Planes -

     

    카메라가 오브젝트를 투영할 수 있는 거리입니다.

     

    쉽게 설명하기 위해 캡처 사진을 찍었습니다.

     

    Near 값을 높이게 되면 카메라가 렌더링 할 수 있는 최소 거리를 조절할 수 있습니다.

     

    반대로 Far은 최대 거리입니다.

     

    Near 값 앞에 있는 물체들은 렌더링 되지 않으며

     

    Near의 값은 Far보다 클 수 없으며 반대로 Far 값은 Near의 값보다 작을 수 없습니다.

     

     

    렌더링 파이프라인의 Clipping 단계에서 3D 렌더링 파이프 라인 중 레스터화 단계에서 이루어지는 작업으로,

     

    카메라가 렌더링 하는 화면 중 절두체 밖으로 나간 부분을 지우는 작업이라고 합니다.

     

    완전히 화면 밖으로 나간 도형만 지우는 것이 아니라 부분이 나간 오브젝트를 절단하여 다른 도형으로 변환합니다.

     

     

    즉, 카메라의 Near 거리와 Far의 거리를 조절할 수 있으며

     

    Near PlaneFar Plane 사이의 오브젝트만 렌더링 합니다.


    - Viewport Rect -

     

    화면에 표시되는 영역입니다.

     

    카메라가 화면에 그려질 위치를 나타내는 옵션으로

     

    x 수평 위치 조절

    y 수직 위치 조절

    w 폭 조절 옵션    

    h 넓이 조절 옵션

     

    Viewport의 좌 포계는 사람 중심의 좌표계가 아니라 디바이스 기준의 좌표계이므로

     

    화면의 정 중앙이 (0, 0)이며 

    (0, 1)

     

    (-1, 0)       (0, 0)        (1, 0)

     

    (1, 0)

     

    와 같은 형태가 됩니다.

    직접 경험하며 해야 익힐 수 있을 것 같은데..

     

    연습으로 Viewport Rect

    X 0.5  /  Y 0.5

    W 1    /   H 1  

    로 설정을 하여 Game View에서 바라본 모습입니다.


    - Depth -

     

    카메라가 렌더링 하는 순서를 정하기 위한 Z 버퍼의 깊이입니다.

     

    카메라의 우선순위이며 Depth의 값이 같은 경우 Hierarchy 밑으로 갈수록 우선순위가 높아진다고 합니다.

     

    (값이 높을수록 더 위에 그려집니다.)


    - Occlusion Culling -

     

    카메라에 비치지 않게 되어 버린 오브젝트의 렌더링을 무효화하는 기능입니다.

    Game View의 'Cube'가 사라지는 게 보이나요?

     

    불필요한 요소를 제거함으로써 CPUGPU 시간을 모두 절약할 수 있으며

     

    오 클루 전 컬링은 CPU에서 런타임 계산을 수행하므로 절약되는 CPU 시간을 오프셋 할 수 있다고 합니다.


    - Target Display -

     

    카메라가 지정된 디스플레이로 렌더링 되도록 하며 최대 수는 8입니다.

     

    Camera를 두대 설치하여 하나는 Display1 / 다른 하나는 Display2로 설정해 보았습니다.

     

    카메라의 Display를 지정하고 스크립트를 통해 수정이 가능하며 최대 수는 8입니다.

     

    주의사항은 Androidios 플랫폼에는 영향을 주지 않는다는 것입니다.

     

    또한

    카메라를 생성하게 되면 Audio Listener 컴포넌트가 자동으로 추가됩니다.

     

    Console창에 알람이 떠서 모두 아시겠지만 

     

    씬 상 Audio Listner는 한 개만 존재해야 합니다.

     


    옵션들을 살펴 보면서 사용한 옵션들 보다 안써본 옵션이 더 많았습니다.

     

    어찌보면 떼어 놓을래야 떼어 놓을수 없는 친숙한 Camera가...

     

    Game View를 항상 보여 주며 테스트 하던 Camera가 살짝 어색해 보였습니다.

     

    많은것을 경험하고 학습하며 제 역량을 넓혀가야 겠습니다.

     

    역시 Unity.. 쉽지 않아 재밌습니다.


    이 외에도 Rndering Path(카메라가 사용하는 렌더링 방법을 정의하는 옵션)

     

    이나 Allow Dyamic Resolution (동적인 해상도, GPU부담을 줄여준다. 성능에 따라 해상도가 줄어든다.)

     

    등 글을 보고 설명은 할 순 있지만

     

    제가 아직 이해를 명확하게 하지 못해서

     

    글에 추가를 안 한 옵션들이 있습니다.

     

     

    직접 사용을 해 보고 원인과 이유를 찾게 되면 하나씩 추가하겠습니다.

     

    감사합니다.

     

    (해야 할 것들)

    HDR : 조명효과

    MSAA : anti aliasing 기법, 계단 현상을 제거

    Allow Dyamic Resolution : 동적인 해상도, GPU 부담을 줄여준다. 성능에 따라 해상도가 줄어든다.

    Target Texture : 카메라를 텍스처로 렌더링 하는 옵션.

    Rendering Path : 카메라가 사용하는 렌더링 방법을 정의하는 옵션.

     

     

     

     

    '개발상식' 카테고리의 다른 글

    디자인 패턴 - 옵저버 패턴  (0) 2023.03.09
    CPI - Cost Per Install  (0) 2022.07.13

    댓글

김효겸 / Tel. 010-7735-0580 / E-mail. dollzzang2@hanmail.net