본문 바로가기
개발/Unity

유니티 시네머신 - 두 대 이상의 카메라로 화면 비교하기 (How To Compare Scene using Two Camera with Cinemachine Brain)

by 피로물든딸기 2022. 9. 24.
반응형

Unity 전체 링크

 

Cinemachine Camera가 다른 카메라로 바뀔 때, TransitionsBlend Hint에 따라 어떻게 전환되는지 정해진다.

 

Map View에서 Player View로 전환하는 경우를 확인한다.

 

아래는 vCam1, 2가 모두 None인 경우다.

 

이 경우는 vCam1, 2가 모두 Screen Space Aim When Targets Differ인 경우다.

 

분명 차이가 있음에도 불구하고 정확히 비교하기가 힘들다.

또한 게임을 녹화한 후, 영상을 동시에 플레이하는 것도 매우 번거롭다.

 

따라서 Open Scene Additive에서 두 대의 브레인 시네머신 카메라동시에 촬영을 해서 설정을 비교해보자.


하나의 씬에 들어온 후 Open Scene Additive로 다른 씬을 추가한다.

(None으로 설정한 씬 : NN, Aim으로 설정한 씬 : AA로 표기)

 

Lighting이 겹쳐지기 때문에 씬 하나의 Lighting은 삭제하거나 disabled 처리한다.

 

그러면 아래와 같이 원래의 씬과 동일한 씬이 보이게 된다. (물론 오브젝트는 각각 두 개씩 존재한다.)

 

이제 각각의 카메라 설정에서 Viewport Rect를 아래와 같이 설정해서 씬을 두 개로 나눈다.

 

왼쪽이 NN, 오른쪽이 AA가 된다.

 

불필요한 로그가 나오는 것을 방지하기 위해 Audio Listner를 해제한다.

 

그리고 UI_EventSystem도 하나만 남겨둔다.

 

이제 게임을 실행해보자.

 

왼쪽, 오른쪽 카메라가 모두 동일한 화면을 촬영하고 있다.

실제로 브레인 카메라의 Show Debug Text를 확인해보면 NNAA 모두 AA의 가상 카메라를 보고 있다.


위 문제를 해결하기 위해서는 카메라가 봐야하는 레이어를 나눠야 한다.

LayerNNLayerAA를 나눠서 가상카메라 AA NN을 제외하고, 가상카메라 NNAA를 제외한다.

 

각 카메라의 Culling Mask에서 불필요한 Layer를 제외하면 된다.

 

그리고 각 씬의 Virtual Camera 1, 2 모두 Layer를 각각 할당한다.

 

이제 다시 게임을 실행해보자.

NN보다 AA로 설정할 때, 조금 더 빨리 전환되면서 Target(Player)에 초점이 맞춰지는 것을 알 수 있다.

 

실제로 Debug Text에도 각각의 브레인이 자신의 씬에 있는 가상 카메라를 할당하게 되었다.

 

NoneScreen Space Aim When Targets Differ 외 모든 설정에 대한 비교는 링크를 참고하자.


참고 : 화면 전환은 아래와 같이 2.5초마다 MoveToTopOfPrioritySubqueue()를 호출하였다.

MoveToTopOfPrioritySubqueue는 같은 우선순위에 있는 가상 카메라의 우선순위를 높인다.

(위의 경우 모든 카메라의 Priority는 10이다.)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cinemachine;

public class TestPrioritySetting : MonoBehaviour
{
    public CinemachineVirtualCamera vCam1, vCam2;

    bool toggle;
    float timer;

    void Update()
    {
        timer += Time.deltaTime;
        if(timer > 2.5f)
        {
            timer = 0.0f;
            toggle = !toggle;

            if (toggle) vCam2.MoveToTopOfPrioritySubqueue();
            else vCam1.MoveToTopOfPrioritySubqueue();
        }
    }
}

 

Unity Plus:

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

Unity Pro:

 

Unity Pro

The complete solutions for professionals to create and operate.

unity.com

 

Unity 프리미엄 학습:

 

Unity Learn

Advance your Unity skills with live sessions and over 750 hours of on-demand learning content designed for creators at every skill level.

unity.com

반응형

댓글