유니티 OVRManager을 이용한 HMD Condition Tracking #HMDManager

VR게임을 만들 때 Player가 HMD을 착용했는지 착용해제 했는지 상황 트래킹이 필요한 경우가 있습니다.

 

HMD Condition을 트래킹 하려면 OVRManager을 활용하면 됩니다.


OVRManager 구조

4가지의 Action이 존재한다.


HMDManager

public class HMDManager : MonoBehaviour
    {
        public static HMDManager Instance { get; private set; }

        public bool IsHMDConnected { get; private set; }
        public bool IsHMDMounted { get; private set; }

        private void Awake() 
        {
            if (Instance == null)
            {
                Instance = this;
                DontDestroyOnLoad(gameObject);
            }
            else 
            {
                Destroy(gameObject);
            }
        }

        private void Start()
        {
            IsHMDConnected = OVRManager.isHmdPresent;
            OVRManager.HMDMounted += HandleHMDMounted;
            OVRManager.HMDUnmounted += HandleHMDUnmounted;
            OVRManager.HMDLost += HandleHMDLost;
            OVRManager.HMDAcquired += HandleHMDAcquired;
        }

        private void HandleHMDMounted()
        {
            IsHMDMounted = true;
            DebugUtils.LogColor("HMD Mounted", Color.green);
        }

        private void HandleHMDUnmounted()
        {
            IsHMDMounted = false;
            DebugUtils.LogColor("HMD Unmounted", Color.blue);
        }

        private void HandleHMDLost()
        {
            IsHMDConnected = false;
            DebugUtils.LogColor("HMD Lost", Color.red);
        }

        private void HandleHMDAcquired()
        {
            IsHMDConnected = true;
            DebugUtils.LogColor("HMD Acquired", Color.yellow);
        }

        private void OnDestroy()
        {
            OVRManager.HMDMounted -= HandleHMDMounted;
            OVRManager.HMDUnmounted -= HandleHMDUnmounted;
            OVRManager.HMDLost -= HandleHMDLost;
            OVRManager.HMDAcquired -= HandleHMDAcquired;
        }
    }

DebugUtils의 경우

2023.07.27 - [Unity/Study] - 유니티 Debug.Log 유틸리티

 

유니티 Debug.Log 유틸리티

Debug.Log 유틸리티 만든 이유 팀 프로젝트를 하다 보면 팀원의 Debug.Log가 많아서 내가 작성한 Log를 찾기 힘든 경우가 종종 발생합니다. 그런 경우 주로, Log에 색을 입히든가 bold 체를 만들어 Text를

wlsdn629.tistory.com

링크를 참고하시면 됩니다.

 

HMDManager을 이용해서 원하는 기능 구현하시면 됩니다.


HMDManager을 이용한 HMD 트래킹 결과

HMDManager을 통해 HMD Condition을 트래킹 해본 결과,

유저가 HMD을 착용하고 게임을 시작하면 HMD Acquired Log을 출력됩니다.

그 후 유저가 HMD을 착용 및 해제할 땐 HMD Mounted / HMD Unmounted가 Log가 출력된 것을 볼 수 있습니다.

마지막으로 게임 종료시 HMD Lost Log가 출력됩니다.