2015년 2월 26일 목요일

유니티 - 카메라 컴포넌트 설명

목차


Clear Flags

화면의 어디를 클리어 시킬 것인지를 정한다
라고 유니티 공식에 설명되어 있는데
이름도 거지같고 설명도 거지같아서 정확히 뭘 하는지 이해하는 거 자체가 거지같다
클리어가 Skybox이면 Skybox를 클리어한다? 실상 나타나는건 그 반대로 Skybox만 남긴다
반면 Depth Only의 경우는 진짜로 그 Depth만 남긴다.. 이러니 개판이지..
그러니 그냥저냥 알고 넘기자

Skybox

스카이 박스라 불리는 배경전용 셰이더로 빈공간을 채운다

Solid Color

빈공간을 단색으로 칠한다

Depth Only

빈공간을 투명처리한다.
카메라 두 대 이상을 한 화면에 합성할때 주로 사용한다.
아래 설명해놨지만 카메라의 Viewport를 수정하지 않는 이상 카메라를
10대를 놔도 한화면에 각 카메라의 영상을 가져와서 depth 순서대로 차곡차곡 쌓는다
당연히 화면에 투명한 부분이 없으면 뒤의 화면은 암것도 안보이게 되므로
이러한 처리가 반드시 필요하다
이는 또한 밑에서 설명할 Culling Mask와 같이 사용하는 것이 일반적이다
사용예를 하나 들어보자
적외선모드를 키면 벽넘어의 인물을 보이게 할려고 한다.
이때 벽을 랜더링 속성을 꺼버린다거나 하는 수가 있지만 일일이 벽들을 찾아서
그런 짓을 하기가 번거롭기도 하고 성능상으로도 문제가 될 수 있다
이것을 카메라 두 대로 처리하면 매우 간단히 처리가 된다
메인 카메라와 서브카메라를 두고 서브는
모든 사물의 모습을 끄고 단지 인물만 보이도록 해놓는다
그런 후 서브카메라를 Depth Only 설정으로 두고 켜버리면 벽안에 있든 말든
장소든 상관없이 화면 젤 위에 다 노출되게된다. 그런 점을 이용해서
일단 서브카메라를 꺼놓다가 적외선 모드 이런 것을 쓸때만 딱 키면
depth only
위에서처럼 벽넘어의 모습을 탐색하는 것 같은 효과를 줄 수 있는 것이다

Don’t Clear

이건 화면을 새로 갱신하지 않고 이전의 화면 위에다가 다시 그린다
덕분에 오브젝트가 움직이면 잔상이 화면에 잔뜩 남게 된다
일반적으로 게임에 사용하진 않지만 셰이더를 따로 만들어서 스파의 초필살기의
잔상처럼 쓸 순 있는 것 같기도한데.. 해보니까 2D 쪽은 뭔가 잘 안된다. 걍 패스

Background

위의 Clear flags에서 solid Color를 적용할때 나오는 색

Culling Mask

보여질 레이어들. 디폴트는 모든 레이어가 체크되어 있는데 체크를 끄면
해당 레이어의 물체들은 카메라 화면에서 안보이게된다. (모습만.. 그외는 그대로다)

Projection

원근과 직교 투사방식
원근은 가까운 건 크게, 멀리있는 것은 작게 보이는 방식이고
직교는 그딴거 없다.
화면상에 뭔가 보이는 방식은 카메라의 시야각안에서 평면으로 싹뚝짤라서 나오는 방식이다
Perspective
Perspective
A부분을 싹뚝 잘라서 가져오면 가까울수록 빨간 시야각이 좁으므로
화면이 작아서 상대적으로 물체가 차지하는 비중이 크다
B부분은 화면이 커져서 상대적으로 물체가 차지하는 비중이 작다

Orthographic
Orthographic
처음부터 시야각엄청 넓으면서 동일한 Orthographic 방식은 거리가 멀어도 항상
동일한 물체 크기를 가지게된다

Orthographic

Clipping Planes

위에서 싹뚝 자르는 것은 전지역에 걸쳐서 촘촘히 이뤄지는데
무한정 그러다간 컴터 터질 것이고 시작 평면과 끝 평면을 정해놓고 그 안의 것만
랜더링한다. 이 사이에 안들어가면 화면상에 보이지 않게된다

Viewport Rect

위의 perspective 화면을 보면
Perspective
사실은 이래야 정상이다. 화면 크기 자체가 달라지는 것이다
하지만 그렇게하면 화면상에 표현하는데 온갖 에로사항이 꽃피게 되고..
의도에도 맞지 않는다
그래서 뷰포트(Viewport )라는 모두에게 적용되는 가상의 화면이 필요하게 되었다
뷰포트는 모두가 같은 화면에서 단지 오브젝트의 비중으로 화면을 정하며
비중은 백분율.. 즉 0부터 1까지만 허용한다

  • X : 가로 원점
  • Y : 세로 원점
  • W (Width) : 가로 넓이
  • H (Height) : 세로 높이

이렇게 되어 있는데 하나의 카메라는 하나의 뷰포트만을 가지며
기본값은 항상 현재 화면의 전체크기이다.
그래서 기본값으로는 카메라가 10대라도 다 겹치게 되는 것이다
하지만 값을 변경하여 카메라 각각의 화면을 보이게 할 수 있다
viewport
xy를 0.7정도로 wh를 0.2 정도로한 미니맵용 카메라

Depth

오브젝트들이 순서가 있듯이 카메라의 보여지는 순서

Rendering Path

랜더링 패스를 지정한다.

Target Texture (Unity Pro only)

카메라 화면을 게임상 오브젝트의 텍스쳐에다가 붙여 넣을 수 있다
야구장에서 중계스크린이 붙어 있는 것 같은 효과

HDR

HDR 랜더링을 한다.

Written with StackEdit.

댓글 2개 :

  1. 우와 카메라 컴포넌트 이해안되는거 몇가지 있던게 싹 이해가되네요..!! 좋은 글 감사합니다 링크 블로그에 저장해서 두고두고 참고할게요 감사합니다!

    답글삭제
  2. 설명 너무 잘하신듯 합니다. 첫문단 공감하네요. ㅋㅋㅋ

    답글삭제