유니티 3D 의 카메라 설정 중에서 장면과 분리되어 존재하는 레이어를 화면에 출력하는 예
게임이나 시뮬에이션 화면에는 현재 상황을 표시하기 위해서 장면과 분리되어 화면의 일정영역에 고정적인 출력을 위한 장소가 필요하게 된다.
유니티에서는 이처럼 어떤 오브젝트가 장면(Scene)의 영역과 분리되어 카메라에 영역에 포함되도록 하기 위해서 Layer를 제공하고 있다.
즉, Layer 로 지정된 오브젝트가 카메라에 설정되면 해당 오브젝트는 장면과 함께 움직이거나 회전하는 것이 아니라 카메라와 함께 이동, 회전을 하기 때문에 항상 화면의 일정한 영역에 해당 오브젝트가 변함없이 출력된다
유니티에서는 장면과 분리된 레이어를 화면에 출력할 필요가 있을 경우에 별도의 카메라를 생성하여 레이어만 출력하도록 권장하고 있다. 즉, 장면(Scene)을 출력하는 카메라가 먼저 게임뷰에 영상을 출력하고 뒤이어 레이어를 가진 카메라가 그 위에 레이어를 출력하는 방법을 사용하라는 것이다.
1번 카메라가 장면(Scene)을 출력한다면 스카이박스와 지형, 그리고 모든 오브젝트의 영상을 게임뷰에 출력하고 2번 카메라는 레이어만을 포함하고 있다가 게임뷰에 출력하면 되므로 2번 카메라는 스카이박스와 지형 및 모든 오브젝트를 화면에 출력하지 않고 자신에게 지정된 레이어만(Depth Only) 출력하도록 설정해야 한다. 또 1번 카메라는 2번 카메라가 출력하는 레이어에 해당하는 오브젝트를 출력하지 않도록 설정(Culling Mask)해야 한다
Layer 의 필요성
유니티에서 제공하는 카메라는 개발자가 설정을 통하여 화면에서 제거될 오브젝트를 지정할 수 있게 되어 있다. 카메라 설정으로 화면에서 제거할 오브젝트를 지정하려면 해당 오브젝트는 우선 Layer 로 설정되어야 한다. 레이어로 설정된 오브젝트는 장면에 포함된 모든 카메라로부터 영상에 포함할 것인지 제거할 것인지를 설정할 수 있게 된다.
여기서는 자동차나 비행기의 계기판에서 볼 수 있는 게이지 모델을 Layer 로 설정한 다음 1번 카메라에서는 게이지 오브젝트가 영상에서 보이지 않도록 설정하고 2번 카메라에서는 게이지 오브젝트만 보이도록 설정하려고 한다.
여기서 사용되는 카메라의 속성(Inspector 뷰에서 설정)
Clear Flags : 화면에 그리지 않을 오브젝트의 위치에 무엇을 대신 채울 것인지 지정한다
Culling Mask : 카메라에 의해 그려질 레이어 오브젝트를 선택하거나 삭제한다 (체크: 그려짐, 해제:그리지 않음)
Depth : 값이 낮을수록 해당 카메라의 영상이 게임뷰에 먼저 그려지며 뒤이어 다음 카메라의 영상이 그 위에 그려지게 된다
작업 1 (카메랴 2개 생성)
카메라 2개를 생성하고 Hierarchy 뷰에서 각각 Camera1, Camera2로 이름을 변경하고 Depth 속성 값도 각각 1, 2로 지정한다
작업 2 (원하는 오브젝트를 Layer 로 설정)
게이지 모델을 임포트하고 Layer 로 설정한다.
먼저 Inspector 뷰의 상단에 있는 Layers 콤보박스를 눌러 Edit Layers... 항목을 선택하여 Layer 이름을 하나 생성하고 그 이름을 게이지 오브젝트에게 설정해준다.
Layer 이름을 하나 생성한다. Gauge 오브젝트에 지정할 것이므로 아래의 그림처럼 gauge 라는 이름을 하나 생성했다
Hierarchy 뷰에서 레이어로 지정할 오브젝트를 선택하고 Inspector 뷰의 Layer 항목에서 앞서 생성한 gauge 라는 이름을 선택한다. 이렇게 설정하면 해당 오브젝트는 이제부터 gauge 라는 레이어 오브젝트로 불려지게 된다
작업 3 (1번 카메라 설정시 게이지 레이어는 출력대상에서 제외)
1번 카메라의 설정을 통해 게이지 레이어를 출력대상에서 제외하고 그 외 모든 것들(스카이박스, 지형, 오브젝트 등)은 화면에 출력대상으로 설정한다
작업 4 (2번 카메라 설정시 게이지 레이어만 출력대상으로 지정)
2번 카메라의 설정을 통해 1번 카메라가 출력하는 모든 것들은 출력대상에서 제외하고 게이지 레이어만 출력되도록 설정한다
작업 5 (테스트, 실행 모드에서 1번 카메라를 좌우로 회전할 때 게이지가 화면상의 한지점에 고정되는지 확인)
실행모드에서 1번 카메라를 선택하고 우측으로 회전해 보면 아래 그림처럼 장면이 좌측으로 이동하는 효과가 있지만 게이지는 2번 카메라에 의해서 출력되므로 장면의 이동과는 무관하게 화면의 고정된 위치에 그대로 남아 있는 것을 확인할 수 있다.
이번에는 1번 카메라를 좌측으로 회전하여 장면이 우측으로 이동하는 효과가 발생했지만 2번 카메라에 의해서 출력되는 게이지 레이어는 그대로 화면상의 위치를 유지하고 있다.