유니티 VR 멀미 없는 시청을 위한 관람자 카메라 만들기

관람자 카메라를 만들어야 하는 이유

VR영상을 시청하곤 할 때 많은 시청자들이 멀미를 느끼게 됩니다.

 

물론, 가상현실 게임을 하고 있는 유저 또한 카메라 흔들림 문제로 인해 멀미를 느끼곤 하지만 간접적으로 영상을 시청하는 사람보다는 카메라 흔들림 문제에 대해 덜 부정적 경험을 받습니다.

 

그 이유로는

 

사용자가 VR에서 자신의 움직임과 행동을 능동적으로 제어할 때 카메라에 대한 통제력을 갖게 되므로 자신의 행동과 카메라의 움직임이 일치되어 멀미가 덜 나게 됩니다(운전하는 사람이 멀미가 덜 나는 이유). 또한, 플레이어는 가상환경 안에 존재하므로 가상환경에 더욱 집중할 수 있어서 멀미가 덜 나게 됩니다.

 

VR 관중이 직면한 문제

위 영상을 시청해보면 VR 플레이어가 어디를 볼지 어떻게 행동할지 예측할 수 없고, 그저 플레이어가 바라보는 시선으로 화면이 렌더링 되다 보니 매끄럽지 않고 멀미가 나게 됩니다!

 


해결법

그렇다면, 관중 카메라에 어떤 조치를 취할 수 있을까요?

 

플레이어의 시선을 예측하는 방법은 어려우므로 간단한 보정법에 대해 설명해보겠습니다!

 

영상을 시청해보면 보정 없는 카메라에 비해 떨림 현상이 덜 하므로 시각적으로 좀 더 편안하게 시청할 수 있게 되었습니다! 

 


코드

using UnityEngine;

public class SmoothCameraController : MonoBehaviour
{
    [Range(0, 1)] public float PositionDamping;
    [Range(0, 1)] public float RotationDamping;

    public Transform Target;
    private Vector3 velocity = Vector3.zero;

    private void Awake()
    {
        transform.position = Target.position;
        transform.rotation = Target.rotation;
    }

    void FixedUpdate()
    {
        transform.position = Vector3.SmoothDamp(transform.position, Target.position, ref velocity, PositionDamping);
        transform.rotation = Quaternion.Slerp(transform.rotation, Target.rotation, RotationDamping);
    }
}