본문 바로가기
개발/Unity

유니티 시네머신 - 가상 카메라 전환 설정 비교하기 (Compare Virtual Camera Settings about Blend Hint of Transitions)

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

Unity 전체 링크

 

카메라를 전환 설정 중 Transitions는 카메라 사이를 이동을 제어한다.

여기서 Blend Hint 네 개의 옵션을 제공한다.

 

Blend Hint는 Look At에 대상이 지정될 때 효과가 발생한다.

None 직선을 따라 블렌딩
Spherical Position 원을 따라서 블렌딩
Cylindrical Postion 원기둥을 따라서 블렌딩
Screen Space Aim When Target Differ 다른 카메라의 Look At 사이의 각도에 맞춰서 블렌딩

설명으로는 감이 오지 않기 때문에 직접 설정을 하면서 비교하는 것이 좋다.

 

참고 : Inherit Position을 체크하는 경우는 이동 대상 카메라의 좌표로 카메라가 실제로 이동하게 된다.

 

설정에 대한 조합 4 x 4 = 16가지를 직접 비교해보자.

카메라를 동시에 실행하는 방법은 두 대 이상의 카메라로 화면 비교하기를 참고하자.

 

아래와 같이 Map View에서 Player View로 카메라가 전환되는 경우를 확인해보자.


None → N으로 표기

Spherical Position → S로 표기

Cylindrical Postion → C로 표기

Screen Space Aim When Target Differ → A로 표기

 

먼저 vCam1, 2를 각각 NN / NS / NC / NA로 설정한 씬을 만든 후 Open Scene Additive로 씬을 합친다.

 

각각의 카메라에서 Viewport Rect를 다음과 같이 설정한다.

 

그리고 Layer를 16개 추가한다.

 

각각의 카메라는 해당 Layer만 보도록 Culling Mask 설정을 변경한다.

MainCamera NN은 16개의 Layer 중 Layer NN만 본다.

 

그리고 해당 씬의 가상 카메라의 Layer도 알맞게 수정한다.

 

마지막으로 경고 로그가 나오지 않도록 Audio Listener를 모두 disable 처리한다.

 

UI_EventSystem은 각 씬의 1개만 남겨두도록 한다. (모두 꺼도 된다.)

 

설정이 종료되었다. 

이제 블렌드 힌트를 비교해보자.


NN / NS

NC / NA

 

Slow Ver


SN / SS

SC / SA

 

Slow Ver


CN / CS

CC / CA

 

Slow Ver


AN / AS

AC / AA

 

Slow Ver


이제 Blend Hint의 순서를 바꿔서 비교해보자.

카메라의 Viewport Rect는 아래와 같이 설정하였다.

 

NS vs SN

 

NC vs CN

 

 

 

NA vs AN

 

 

SC vs CS

 

SA vs AS

 

CA vs AC

 

▶ 순서를 바꿔도 동일한 결과를 가진다.

 

직접 실행해보고 싶으면 GitHub 링크를 참고하자.

Assets > Blend Hint Test에 비교했던 씬과 설정이 저장되어 있다.


참고 : 화면 전환은 아래와 같이 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

반응형

댓글